def bootstrap_ci(data, statistic=np.mean, n_boots=1000, ci=95): boots = [statistic(np.random.choice(data, len(data), replace=True)) for _ in range(n_boots)] lower = np.percentile(boots, (100 - ci) / 2) upper = np.percentile(boots, (100 + ci) / 2) return lower, upper
import seaborn as sns import matplotlib.pyplot as plt
She ran a using statsmodels :
def statistical_report(df, numeric_col, categorical_col=None): """Quick statistical summary for a numeric column.""" data = df[numeric_col].dropna() print(f"=== Statistical Report: numeric_col ===\n") # Descriptives print(f"Mean: np.mean(data):.2f") print(f"Median: np.median(data):.2f") print(f"Std: np.std(data, ddof=1):.2f") print(f"Skewness: stats.skew(data):.3f")
import pandas as pd import numpy as np import scipy.stats as stats import statsmodels.api as sm from statsmodels.stats import weightstats as ws import matplotlib.pyplot as plt import seaborn as sns from sklearn.linear_model import LinearRegression, LogisticRegression from sklearn.metrics import mean_squared_error, confusion_matrix
# Visualización elegante fig, axes = plt.subplots(1, 2, figsize=(14, 6)) def bootstrap_ci(data, statistic=np