UNPKG

datapilot-cli

Version:

Enterprise-grade streaming multi-format data analysis with comprehensive statistical insights and intelligent relationship detection - supports CSV, JSON, Excel, TSV, Parquet - memory-efficient, cross-platform

182 lines 6.81 kB
/** * Statistical-Driven Chart Selection Engine * * Advanced engine that analyzes statistical properties of data to make * intelligent chart recommendations based on: * - Distribution characteristics (normality, skewness, kurtosis) * - Statistical significance of relationships * - Data quality metrics and outlier patterns * - Correlation structures and effect sizes * - Variance explained and dimensionality */ import type { ColumnAnalysis } from '../../eda/types'; export interface StatisticalChartRecommendation { chartType: string; confidence: number; statisticalJustification: string; dataCharacteristics: string[]; visualEncodingStrategy: VisualEncodingStrategy; interactionRecommendations: InteractionRecommendation[]; alternativeOptions: AlternativeChartOption[]; performanceConsiderations: PerformanceGuidance; } export interface VisualEncodingStrategy { primaryEncoding: EncodingChannel; secondaryEncodings: EncodingChannel[]; colorStrategy: ColorEncodingStrategy; sizeStrategy?: SizeEncodingStrategy; shapeStrategy?: ShapeEncodingStrategy; aestheticOptimizations: AestheticOptimization[]; } export interface EncodingChannel { channel: 'x' | 'y' | 'color' | 'size' | 'shape' | 'opacity' | 'angle'; dataField: string; dataType: 'quantitative' | 'ordinal' | 'nominal' | 'temporal'; scale: ScaleRecommendation; justification: string; } export interface ScaleRecommendation { type: 'linear' | 'log' | 'sqrt' | 'ordinal' | 'time' | 'threshold' | 'quantile'; domain: [number, number] | string[]; range?: [number, number] | string[]; nice?: boolean; zero?: boolean; clamp?: boolean; reasoning: string; } export interface ColorEncodingStrategy { scheme: 'categorical' | 'sequential' | 'diverging' | 'cyclical'; palette: string; accessibility: AccessibilityGuidance; reasoning: string; } export interface SizeEncodingStrategy { minSize: number; maxSize: number; scaling: 'linear' | 'sqrt' | 'area'; reasoning: string; } export interface ShapeEncodingStrategy { shapes: string[]; maxCategories: number; fallbackStrategy: string; reasoning: string; } export interface AestheticOptimization { property: string; value: any; reasoning: string; impact: 'high' | 'medium' | 'low'; } export interface InteractionRecommendation { interactionType: 'hover' | 'click' | 'brush' | 'zoom' | 'pan' | 'filter' | 'sort'; purpose: string; implementation: string; priority: 'essential' | 'recommended' | 'optional'; statisticalBenefit: string; } export interface AlternativeChartOption { chartType: string; confidence: number; tradeoffs: string; whenToUse: string; statisticalSuitability: number; } export interface PerformanceGuidance { dataPointThreshold: number; samplingStrategy?: string; aggregationSuggestions: string[]; renderingOptimizations: string[]; memoryConsiderations: string[]; } export interface AccessibilityGuidance { colorBlindnessSafe: boolean; contrastRatio: number; alternativeEncodings: string[]; screenReaderGuidance: string; } export interface DistributionAnalysis { isNormal: boolean; skewness: number; kurtosis: number; modality: 'unimodal' | 'bimodal' | 'multimodal'; outlierSeverity: 'none' | 'mild' | 'moderate' | 'severe'; tailBehavior: 'light' | 'normal' | 'heavy'; recommendedTransformation?: string; } export interface CorrelationInsight { strength: 'very_weak' | 'weak' | 'moderate' | 'strong' | 'very_strong'; direction: 'positive' | 'negative'; significance: number; effectSize: number; relationship: 'linear' | 'monotonic' | 'non_linear' | 'threshold' | 'cyclical'; confoundingFactors: string[]; } /** * Advanced Statistical Chart Selection Engine */ export declare class StatisticalChartSelector { /** * Generate statistically-informed chart recommendations for univariate data */ static recommendUnivariateChart(columnAnalysis: ColumnAnalysis): StatisticalChartRecommendation; /** * Generate statistically-informed chart recommendations for bivariate relationships */ static recommendBivariateChart(xColumn: ColumnAnalysis, yColumn: ColumnAnalysis, correlation?: CorrelationInsight): StatisticalChartRecommendation; /** * Analyze distribution characteristics for statistical insights */ private static analyzeDistribution; /** * Recommend charts for numerical univariate data based on distribution */ private static recommendNumericalUnivariate; /** * Recommend charts for categorical univariate data */ private static recommendCategoricalUnivariate; /** * Recommend charts for numerical vs numerical relationships */ private static recommendNumericalBivariate; private static createUnivariateEncodingStrategy; private static createBivariateEncodingStrategy; private static recommendScale; private static isNumerical; private static isCategorical; private static isTemporal; private static calculateEntropy; private static detectOrderedCategories; private static extractDataCharacteristics; private static generateUnivariateInteractions; private static generateUnivariateAlternatives; private static generatePerformanceGuidance; private static generateAestheticOptimizations; private static createTemporalEncodingStrategy; private static generateTemporalInteractions; private static generateTemporalAlternatives; private static createCategoricalNumericalEncodingStrategy; private static generateCategoricalNumericalInteractions; private static generateCategoricalNumericalAlternatives; private static createCategoricalBivariateEncodingStrategy; private static generateCategoricalBivariateInteractions; private static generateCategoricalBivariateAlternatives; private static recommendTemporalUnivariate; private static recommendBooleanUnivariate; private static recommendCategoricalNumerical; private static recommendCategoricalBivariate; private static recommendTemporalBivariate; private static createCategoricalEncodingStrategy; private static generateCategoricalInteractions; private static generateCategoricalAlternatives; private static generateBivariateInteractions; private static generateBivariateAlternatives; private static createFallbackRecommendation; private static createFallbackBivariateRecommendation; /** * Create recommendation for identifier columns - avoid meaningless frequency charts */ private static createIdentifierRecommendation; } //# sourceMappingURL=statistical-chart-selector.d.ts.map