statslibx 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -823,67 +823,366 @@ class UtilsStats:
823
823
 
824
824
  def help(self):
825
825
  """
826
- Muestra ayuda completa de la clase UtilsStats
826
+ Muestra ayuda completa de la clase DescriptiveStats
827
827
  """
828
828
  help_text = """
829
- 📊 CLASE UtilsStats - AYUDA COMPLETA
829
+ ╔════════════════════════════════════════════════════════════════════════════╗
830
+ ║ 📊 CLASE UtilsStats - AYUDA COMPLETA ║
831
+ ╚════════════════════════════════════════════════════════════════════════════╝
830
832
 
831
- Clase utilitaria para análisis estadísticos y visualización de datos.
833
+ 📝 DESCRIPCIÓN:
834
+ Clase para análisis estadístico descriptivo univariado y multivariado.
835
+ Proporciona herramientas para análisis exploratorio de datos, medidas de
836
+ tendencia central, dispersión, forma de distribución y regresión lineal.
832
837
 
833
- 🔧 MÉTODOS PRINCIPALES:
838
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
834
839
 
835
- 1. 📈 ANÁLISIS ESTADÍSTICO:
836
- • check_normality() # Test de normalidad
837
- • calculate_confidence_intervals() # Intervalos de confianza
838
- • detect_outliers() # Detección de outliers
839
- • calculate_effect_size() # Tamaño del efecto
840
- • get_descriptive_stats() # Estadísticas descriptivas
840
+ 📋 MÉTODOS PRINCIPALES:
841
841
 
842
- 2. 🎨 VISUALIZACIÓN:
843
- plot_distribution() # Gráficos de distribución
844
- • plot_distribution_with_ci() # Distribución con IC
845
- • plot_multiple_distributions_with_ci() # Múltiples distribuciones
846
- • plot_correlation_matrix() # Matriz de correlación
847
- • plot_scatter_matrix() # Matriz de dispersión
842
+ ┌────────────────────────────────────────────────────────────────────────────┐
843
+ 1. 📊 ANÁLISIS ESTADÍSTICO │
844
+ └────────────────────────────────────────────────────────────────────────────┘
848
845
 
849
- 3. ⚙️ CONFIGURACIÓN:
850
- set_plot_backend() # Backend de visualización
851
- set_default_figsize() # Tamaño de figura
852
- • set_save_fig_options() # Opciones para guardar
846
+ .check_normality(data, alpha=0.05)
847
+ Verifica normalidad usando test Shapiro-Wilk
848
+ Retorna: dict con estadístico, p-value e interpretación
853
849
 
854
- 4. 🛠️ UTILIDADES:
855
- • validate_dataframe() # Validación de datos
856
- format_number() # Formateo de números
850
+ .calculate_confidence_intervals(data, confidence_level=0.95,
851
+ method='parametric')
852
+ Calcula intervalos de confianza para la media
853
+ Métodos: 'parametric' o 'bootstrap'
857
854
 
858
- 💡 EJEMPLOS DE USO:
855
+ .detect_outliers(data, method='iqr', **kwargs)
856
+ Detecta valores atípicos
857
+ Métodos: 'iqr', 'zscore', 'isolation_forest'
859
858
 
860
- # Inicializar
861
- utils = UtilsStats()
859
+ .calculate_effect_size(group1, group2, method='cohen')
860
+ Calcula tamaño del efecto entre grupos
861
+ Métodos: 'cohen' (Cohen's d) o 'hedges' (Hedges' g)
862
862
 
863
- # Análisis de normalidad
864
- normalidad = utils.check_normality(mis_datos)
863
+ .get_descriptive_stats(data, column=None)
864
+ Estadísticas descriptivas completas en un dict
865
865
 
866
- # Gráfico con intervalos de confianza
867
- fig = utils.plot_distribution_with_ci(
868
- data=mis_datos,
869
- confidence_level=0.95,
870
- bins=20
871
- )
866
+ ┌────────────────────────────────────────────────────────────────────────────┐
867
+ 2. 🎨 VISUALIZACIÓN DE DISTRIBUCIONES │
868
+ └────────────────────────────────────────────────────────────────────────────┘
872
869
 
873
- # Matriz de correlación
874
- fig_corr = utils.plot_correlation_matrix(
875
- data=mi_dataframe,
876
- method='pearson'
877
- )
870
+ .plot_distribution(data, column=None, plot_type='hist',
871
+ backend='seaborn', bins=30, figsize=None,
872
+ save_fig=None, filename=None)
873
+
874
+ Grafica distribución de una variable
875
+
876
+ plot_type: 'hist', 'kde', 'box', 'violin', 'all'
877
+ backend: 'matplotlib', 'seaborn', 'plotly'
878
+
879
+ • .plot_distribution_with_ci(data, column=None, confidence_level=0.95,
880
+ ci_method='parametric', bins=30)
881
+
882
+ Distribución con intervalos de confianza visualizados
883
+
884
+ • .plot_multiple_distributions_with_ci(data_dict, confidence_level=0.95)
885
+
886
+ Compara múltiples distribuciones con sus IC
887
+
888
+ ┌────────────────────────────────────────────────────────────────────────────┐
889
+ │ 3. 🎨 VISUALIZACIÓN MULTIVARIADA │
890
+ └────────────────────────────────────────────────────────────────────────────┘
891
+
892
+ • .plot_correlation_matrix(data, method='pearson', backend='seaborn',
893
+ figsize=None, save_fig=None)
894
+
895
+ Matriz de correlación con heatmap
896
+ Métodos: 'pearson', 'spearman', 'kendall'
897
+
898
+ • .plot_scatter_matrix(data, columns=None, backend='seaborn',
899
+ figsize=None, save_fig=None)
900
+
901
+ Matriz de gráficos de dispersión (pairplot)
902
+ Backends: 'seaborn', 'plotly', 'pandas'
903
+
904
+ ┌────────────────────────────────────────────────────────────────────────────┐
905
+ │ 4. ⚙️ CONFIGURACIÓN │
906
+ └────────────────────────────────────────────────────────────────────────────┘
907
+
908
+ • .set_plot_backend(backend)
909
+ Establece backend por defecto: 'matplotlib', 'seaborn', 'plotly'
910
+
911
+ • .set_default_figsize(figsize)
912
+ Establece tamaño de figura por defecto: (ancho, alto)
913
+
914
+ • .set_save_fig_options(save_fig=False, fig_format='png',
915
+ fig_dpi=300, figures_dir='figures')
916
+
917
+ Configura guardado automático de figuras
918
+
919
+ ┌────────────────────────────────────────────────────────────────────────────┐
920
+ │ 5. 🛠️ UTILIDADES │
921
+ └────────────────────────────────────────────────────────────────────────────┘
922
+
923
+ • .validate_dataframe(data)
924
+ Valida y convierte datos a DataFrame
925
+
926
+ • .format_number(num, decimals=6, scientific=False)
927
+ Formatea números con precisión específica
928
+
929
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
930
+
931
+ 💡 EJEMPLOS DE USO:
878
932
 
879
- # Estadísticas descriptivas
880
- stats = utils.get_descriptive_stats(mis_datos)
933
+ ┌─ Ejemplo 1: Configuración Inicial ──────────────────────────────────────┐
934
+ from utils import UtilsStats │
935
+ │ import pandas as pd │
936
+ │ import numpy as np │
937
+ │ │
938
+ │ # Inicializar │
939
+ │ utils = UtilsStats() │
940
+ │ │
941
+ │ # Configurar visualización │
942
+ │ utils.set_plot_backend('seaborn') │
943
+ │ utils.set_default_figsize((12, 6)) │
944
+ │ │
945
+ │ # Configurar guardado automático │
946
+ │ utils.set_save_fig_options( │
947
+ │ save_fig=True, │
948
+ │ fig_format='png', │
949
+ │ fig_dpi=300, │
950
+ │ figures_dir='mis_graficos' │
951
+ │ ) │
952
+ └──────────────────────────────────────────────────────────────────────────┘
881
953
 
882
- 🎯 CARACTERÍSTICAS:
883
- Múltiples backends: matplotlib, seaborn, plotly
884
- Guardado automático de figuras
885
- Manejo robusto de datos faltantes
886
- • Visualizaciones profesionales listas para publicación
887
- Integración perfecta con Jupyter notebooks
888
- """
954
+ ┌─ Ejemplo 2: Análisis de Normalidad ─────────────────────────────────────┐
955
+ # Generar datos │
956
+ datos_normales = np.random.normal(0, 1, 1000) │
957
+ datos_no_normales = np.random.exponential(2, 1000) │
958
+ │ │
959
+ # Test de normalidad │
960
+ │ resultado1 = utils.check_normality(datos_normales) │
961
+ │ print(f"Normales: {resultado1['interpretation']}") │
962
+ │ print(f"p-value: {resultado1['shapiro_pvalue']:.4f}") │
963
+ │ │
964
+ │ resultado2 = utils.check_normality(datos_no_normales) │
965
+ │ print(f"No normales: {resultado2['interpretation']}") │
966
+ └──────────────────────────────────────────────────────────────────────────┘
967
+
968
+ ┌─ Ejemplo 3: Intervalos de Confianza ────────────────────────────────────┐
969
+ │ # Método paramétrico │
970
+ │ ci_param = utils.calculate_confidence_intervals( │
971
+ │ datos_normales, │
972
+ │ confidence_level=0.95, │
973
+ │ method='parametric' │
974
+ │ ) │
975
+ │ │
976
+ │ print(f"Media: {ci_param['mean']:.3f}") │
977
+ │ print(f"IC 95%: [{ci_param['ci_lower']:.3f}, " │
978
+ │ f"{ci_param['ci_upper']:.3f}]") │
979
+ │ │
980
+ │ # Método bootstrap (para datos no normales) │
981
+ │ ci_boot = utils.calculate_confidence_intervals( │
982
+ │ datos_no_normales, │
983
+ │ confidence_level=0.95, │
984
+ │ method='bootstrap' │
985
+ │ ) │
986
+ └──────────────────────────────────────────────────────────────────────────┘
987
+
988
+ ┌─ Ejemplo 4: Detección de Outliers ──────────────────────────────────────┐
989
+ │ # Método IQR (rango intercuartílico) │
990
+ │ datos = np.random.normal(100, 15, 1000) │
991
+ │ datos = np.append(datos, [200, 210, -50]) # Agregar outliers │
992
+ │ │
993
+ │ outliers_iqr = utils.detect_outliers(datos, method='iqr') │
994
+ │ print(f"Outliers IQR: {outliers_iqr.sum()}") │
995
+ │ │
996
+ │ # Método Z-score │
997
+ │ outliers_z = utils.detect_outliers( │
998
+ │ datos, │
999
+ │ method='zscore', │
1000
+ │ threshold=3 │
1001
+ │ ) │
1002
+ │ print(f"Outliers Z-score: {outliers_z.sum()}") │
1003
+ │ │
1004
+ │ # Isolation Forest (machine learning) │
1005
+ │ outliers_if = utils.detect_outliers( │
1006
+ │ datos, │
1007
+ │ method='isolation_forest', │
1008
+ │ contamination=0.05 │
1009
+ │ ) │
1010
+ └──────────────────────────────────────────────────────────────────────────┘
1011
+
1012
+ ┌─ Ejemplo 5: Tamaño del Efecto ──────────────────────────────────────────┐
1013
+ │ # Comparar dos grupos │
1014
+ │ grupo_control = np.random.normal(100, 15, 100) │
1015
+ │ grupo_tratamiento = np.random.normal(110, 15, 100) │
1016
+ │ │
1017
+ │ efecto = utils.calculate_effect_size( │
1018
+ │ grupo_control, │
1019
+ │ grupo_tratamiento, │
1020
+ │ method='cohen' │
1021
+ │ ) │
1022
+ │ │
1023
+ │ print(f"Cohen's d: {efecto['effect_size']:.3f}") │
1024
+ │ print(f"Interpretación: {efecto['interpretation']}") │
1025
+ │ print(f"Diferencia de medias: {efecto['mean_diff']:.2f}") │
1026
+ └──────────────────────────────────────────────────────────────────────────┘
1027
+
1028
+ ┌─ Ejemplo 6: Gráficos de Distribución ───────────────────────────────────┐
1029
+ │ df = pd.DataFrame({ │
1030
+ │ 'edad': np.random.normal(35, 10, 500), │
1031
+ │ 'salario': np.random.lognormal(10.5, 0.5, 500) │
1032
+ │ }) │
1033
+ │ │
1034
+ │ # Histograma simple │
1035
+ │ fig1 = utils.plot_distribution( │
1036
+ │ df, │
1037
+ │ column='edad', │
1038
+ │ plot_type='hist', │
1039
+ │ bins=30 │
1040
+ │ ) │
1041
+ │ │
1042
+ │ # Panel completo (histograma, box, violin, Q-Q) │
1043
+ │ fig2 = utils.plot_distribution( │
1044
+ │ df, │
1045
+ │ column='salario', │
1046
+ │ plot_type='all', │
1047
+ │ backend='seaborn' │
1048
+ │ ) │
1049
+ │ │
1050
+ │ # Con Plotly (interactivo) │
1051
+ │ fig3 = utils.plot_distribution( │
1052
+ │ df, │
1053
+ │ column='edad', │
1054
+ │ plot_type='violin', │
1055
+ │ backend='plotly' │
1056
+ │ ) │
1057
+ └──────────────────────────────────────────────────────────────────────────┘
1058
+
1059
+ ┌─ Ejemplo 7: Distribución con Intervalos de Confianza ───────────────────┐
1060
+ │ # Visualizar distribución con IC │
1061
+ │ fig = utils.plot_distribution_with_ci( │
1062
+ │ df, │
1063
+ │ column='edad', │
1064
+ │ confidence_level=0.95, │
1065
+ │ ci_method='parametric', │
1066
+ │ bins=30, │
1067
+ │ save_fig=True, │
1068
+ │ filename='edad_con_ic' │
1069
+ │ ) │
1070
+ │ │
1071
+ │ # Comparar múltiples distribuciones │
1072
+ │ data_dict = { │
1073
+ │ 'Grupo A': df['edad'][:200], │
1074
+ │ 'Grupo B': df['edad'][200:400], │
1075
+ │ 'Grupo C': df['edad'][400:] │
1076
+ │ } │
1077
+ │ │
1078
+ │ fig = utils.plot_multiple_distributions_with_ci( │
1079
+ │ data_dict, │
1080
+ │ confidence_level=0.95 │
1081
+ │ ) │
1082
+ └──────────────────────────────────────────────────────────────────────────┘
1083
+
1084
+ ┌─ Ejemplo 8: Matriz de Correlación ──────────────────────────────────────┐
1085
+ │ # Crear datos correlacionados │
1086
+ │ df = pd.DataFrame({ │
1087
+ │ 'A': np.random.normal(0, 1, 100), │
1088
+ │ 'B': np.random.normal(0, 1, 100), │
1089
+ │ 'C': np.random.normal(0, 1, 100) │
1090
+ │ }) │
1091
+ │ df['D'] = df['A'] * 0.8 + np.random.normal(0, 0.2, 100) │
1092
+ │ │
1093
+ │ # Matriz de correlación con seaborn │
1094
+ │ fig = utils.plot_correlation_matrix( │
1095
+ │ df, │
1096
+ │ method='pearson', │
1097
+ │ backend='seaborn', │
1098
+ │ figsize=(10, 8) │
1099
+ │ ) │
1100
+ │ │
1101
+ │ # Con Plotly (interactiva) │
1102
+ │ fig = utils.plot_correlation_matrix( │
1103
+ │ df, │
1104
+ │ method='spearman', │
1105
+ │ backend='plotly' │
1106
+ │ ) │
1107
+ └──────────────────────────────────────────────────────────────────────────┘
1108
+
1109
+ ┌─ Ejemplo 9: Matriz de Dispersión ───────────────────────────────────────┐
1110
+ │ # Pairplot completo │
1111
+ │ fig = utils.plot_scatter_matrix( │
1112
+ │ df, │
1113
+ │ columns=['A', 'B', 'C', 'D'], │
1114
+ │ backend='seaborn' │
1115
+ │ ) │
1116
+ │ │
1117
+ │ # Con Plotly │
1118
+ │ fig = utils.plot_scatter_matrix( │
1119
+ │ df, │
1120
+ │ backend='plotly' │
1121
+ │ ) │
1122
+ └──────────────────────────────────────────────────────────────────────────┘
1123
+
1124
+ ┌─ Ejemplo 10: Estadísticas Descriptivas Completas ───────────────────────┐
1125
+ │ # Obtener todas las estadísticas │
1126
+ │ stats = utils.get_descriptive_stats(df, column='edad') │
1127
+ │ │
1128
+ │ print(f"Media: {stats['mean']:.2f}") │
1129
+ │ print(f"Mediana: {stats['median']:.2f}") │
1130
+ │ print(f"Desv. Est.: {stats['std']:.2f}") │
1131
+ │ print(f"IQR: {stats['iqr']:.2f}") │
1132
+ │ print(f"Asimetría: {stats['skewness']:.3f}") │
1133
+ │ print(f"Curtosis: {stats['kurtosis']:.3f}") │
1134
+ └──────────────────────────────────────────────────────────────────────────┘
1135
+
1136
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1137
+
1138
+ 🎯 CARACTERÍSTICAS CLAVE:
1139
+
1140
+ ✓ Múltiples backends de visualización (matplotlib, seaborn, plotly)
1141
+ ✓ Guardado automático de figuras en alta resolución
1142
+ ✓ Análisis estadísticos robustos
1143
+ ✓ Detección de outliers con 3 métodos
1144
+ ✓ Intervalos de confianza paramétricos y bootstrap
1145
+ ✓ Visualizaciones profesionales listas para publicación
1146
+ ✓ Manejo automático de valores faltantes
1147
+ ✓ Integración perfecta con pandas y numpy
1148
+ ✓ Gráficos interactivos con Plotly
1149
+
1150
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1151
+
1152
+ 📊 BACKENDS DE VISUALIZACIÓN:
1153
+
1154
+ 🔹 Matplotlib:
1155
+ • Rápido y ligero
1156
+ • Ideal para gráficos simples
1157
+ • Mejor para exportar a archivos
1158
+
1159
+ 🔹 Seaborn:
1160
+ • Gráficos estadísticos elegantes
1161
+ • Temas predefinidos atractivos
1162
+ • Mejor para análisis exploratorio
1163
+
1164
+ 🔹 Plotly:
1165
+ • Gráficos interactivos
1166
+ • Zoom, pan, hover tooltips
1167
+ • Ideal para presentaciones y dashboards
1168
+
1169
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1170
+
1171
+ 💡 CONSEJOS Y MEJORES PRÁCTICAS:
1172
+
1173
+ 1. Siempre verificar normalidad antes de usar métodos paramétricos
1174
+ 2. Usar bootstrap para IC cuando los datos no son normales
1175
+ 3. Detectar outliers antes de calcular estadísticas
1176
+ 4. Guardar figuras en alta resolución (300 DPI) para publicaciones
1177
+ 5. Usar Plotly para presentaciones interactivas
1178
+ 6. Usar seaborn para análisis exploratorio rápido
1179
+
1180
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1181
+
1182
+ 📚 DOCUMENTACIÓN ADICIONAL:
1183
+ Para más información sobre métodos específicos, use:
1184
+ help(UtilsStats.nombre_metodo)
1185
+
1186
+ ╚════════════════════════════════════════════════════════════════════════════╝
1187
+ """
889
1188
  print(help_text)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: statslibx
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Librería de estadística descriptiva e inferencial para Python
5
5
  Home-page: https://github.com/Immanuel3008/StatsLibrary
6
6
  Author: Emmanuel Ascendra Perez
@@ -0,0 +1,8 @@
1
+ statslibx/__init__.py,sha256=p1AydN8u_zWgm1rJBJb8TVQkRUzQMA3iNDwfFZn8k00,1117
2
+ statslibx/descriptive.py,sha256=Hu7VuOGXs6oOq-zxQNiBKg7UtkNdNQ1Qy3PP-wEO5_k,36971
3
+ statslibx/inferential.py,sha256=slLh32Ny4doLA0EA8pYRUGQSuMI8oBUCMBu-CTX-7FY,41732
4
+ statslibx/utils.py,sha256=vnfs5LmWEKsB9p8Fs2Di3btReepkB1RYAwQfT-eZs6c,61856
5
+ statslibx-0.1.1.dist-info/METADATA,sha256=ujX3UiJWx5ibgNv7OaJevK5YYeIaxudPkKzlFWBChO0,1737
6
+ statslibx-0.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
+ statslibx-0.1.1.dist-info/top_level.txt,sha256=eeYZXyFm0hIjuI0ba3wF6XW938Mv9tv7Nk9qgjYfCtU,10
8
+ statslibx-0.1.1.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ statslibx