stat_fun(H1): min=0.00011853515119853252 max=247.0990606559303
Running initial clustering …
Found 1 cluster
Box Plot Significance Indicators
Automatically add significance indicators between box or violin plots:
import plotly.express as pxfrom mdu.plotly.stats import add_box_significance_indicatorfrom scipy import stats# Create sample datadf = px.data.tips()# Create box plotfig = px.box(df, x='day', y='total_bill', color='time', title='Total Bill by Day and Time')# Add significance indicators between all groupsfig = add_box_significance_indicator( fig, stat_func=stats.ttest_ind, same_legendgroup_only=True, # Only compare same colors only_significant=True)fig.show()
Testing Specific Pairs
# Test only specific day pairsfig = add_box_significance_indicator( fig, xval_pairs=[('Thur', 'Fri'), ('Fri', 'Sat'), ('Sat', 'Sun')], same_legendgroup_only=True)fig.show()# Test specific color combinationsfig = add_box_significance_indicator( fig, color_pairs=[('Dinner', 'Lunch')], same_legendgroup_only=False)fig.show()
Non-parametric Tests
# Use Mann-Whitney U test instead of t-testfrom scipy.stats import mannwhitneyufig = add_box_significance_indicator( fig, stat_func=mannwhitneyu, p_quantiles=(0.05, 0.01, 0.001) # Three significance levels)fig.show()
Showing All Comparisons
# Show both significant and non-significant (ns) comparisonsfig = add_box_significance_indicator( fig, only_significant=False# Will add 'ns' for non-significant)fig.show()
Statistical Model Fits
Add regression lines with confidence intervals:
import numpy as npimport plotly.express as pximport statsmodels.api as smfrom mdu.plotly.stats import add_statsmodel_fit# Create sample datanp.random.seed(42)x = np.linspace(0, 10, 50)y =2* x +5+ np.random.normal(0, 3, 50)# Create scatter plotfig = px.scatter(x=x, y=y, title='OLS Regression with Confidence Intervals')# Add OLS fit with 95% CIfig = add_statsmodel_fit( fig, x=x, y=y, fitfunc=sm.OLS, show_ci=True, show_obs_ci=False, ci_alpha=0.05)fig.show()
With Prediction Intervals
# Show both confidence interval (mean) and prediction interval (observations)fig = add_statsmodel_fit( fig, x=x, y=y, show_ci=True, show_obs_ci=True, # Prediction interval for new observations ci_alpha=0.05)fig.show()