{"example":"Protein Expression Histogram","labtools_version":"0.14.3","generated":"2026-09-23","calls":[{"label":"stats.describe","method":"stats.describe","params":{},"result":{"columns":[{"excess_kurtosis":-0.19662101251678,"iqr":0.30425000000000013,"max":4.117,"mean":3.4134852941176486,"median":3.42,"min":2.734,"n":612,"n_missing":0,"name":"Protein expression","q1":3.264,"q3":3.56825,"range":1.383,"sd":0.21125606303638977,"sem":0.008539520215207626,"skewness":-0.016354780844210933,"sum":2089.053000000001,"variance":0.04462912416963509}],"n_columns":1,"notes":[],"source":{"kind":"arrays"}},"error":null},{"label":"stats.normality","method":"stats.normality","params":{"method":"shapiro_wilk"},"result":{"all_normal":true,"alpha":0.05,"method":"shapiro_wilk","notes":["Group 'Protein expression' has n = 612; at this size a normality test flags departures far too small to affect a t-test. Judge by the skewness/kurtosis and a QQ plot instead."],"results":[{"excess_kurtosis":-0.19662101251678,"group":"Protein expression","interpretation":"Data is consistent with normality (W = 0.9982, p = 0.7984)","n":612,"normality_rejected":false,"p_value":0.7983905964085484,"skewness":-0.016354780844210933,"statistic":0.9982452299219348,"test":"Shapiro-Wilk"}],"source":{"kind":"arrays"}},"error":null},{"label":"stats.normality","method":"stats.normality","params":{"method":"anderson_darling"},"result":{"all_normal":true,"alpha":0.05,"method":"anderson_darling","notes":["Group 'Protein expression' has n = 612; at this size a normality test flags departures far too small to affect a t-test. Judge by the skewness/kurtosis and a QQ plot instead."],"results":[{"excess_kurtosis":-0.19662101251678,"group":"Protein expression","interpretation":"Data is consistent with normality (A² = 0.3591, p = 0.4496)","n":612,"normality_rejected":false,"p_value":0.4495962634307678,"skewness":-0.016354780844210933,"statistic":0.35914369858448936,"test":"Anderson-Darling"}],"source":{"kind":"arrays"}},"error":null},{"label":"stats.normality","method":"stats.normality","params":{"method":"kolmogorov_smirnov"},"result":{"all_normal":true,"alpha":0.05,"method":"kolmogorov_smirnov","notes":["Group 'Protein expression' has n = 612; at this size a normality test flags departures far too small to affect a t-test. Judge by the skewness/kurtosis and a QQ plot instead."],"results":[{"excess_kurtosis":-0.19662101251678,"group":"Protein expression","interpretation":"Data is consistent with normality (D = 0.0201, p = 0.7945)","n":612,"normality_rejected":false,"p_value":0.7945411921625656,"skewness":-0.016354780844210933,"statistic":0.020084653189467838,"test":"Kolmogorov-Smirnov (Lilliefors)"}],"source":{"kind":"arrays"}},"error":null},{"label":"stats.ci","method":"stats.ci","params":{"conf_level":0.95},"result":{"conf_level":0.95,"estimate":3.4134852941176486,"interpretation":"Over repeated sampling, intervals built this way contain the true mean at the stated rate. It is not the probability that this particular interval contains it.","kind":"mean","lower":3.3967149218136963,"margin_of_error":0.016770372303952286,"method":"t","n":612,"name":"data","notes":[],"sd":0.21125606303638977,"source":{"kind":"arrays_or_dataset"},"upper":3.430255666421601},"error":null},{"label":"stats.ci","method":"stats.ci","params":{"conf_level":0.99},"result":{"conf_level":0.99,"estimate":3.4134852941176486,"interpretation":"Over repeated sampling, intervals built this way contain the true mean at the stated rate. It is not the probability that this particular interval contains it.","kind":"mean","lower":3.391420030011602,"margin_of_error":0.022065264106046367,"method":"t","n":612,"name":"data","notes":[],"sd":0.21125606303638977,"source":{"kind":"arrays_or_dataset"},"upper":3.435550558223695},"error":null},{"label":"stats.outliers","method":"stats.outliers","params":{"method":"grubbs"},"result":{"alpha":0.05,"method":"grubbs","notes":["Grubbs tests only the single most extreme point, so a second outlier can mask the first. On larger samples use method='generalized_esd'."],"results":[{"critical_value":3.916023602524324,"group":"Protein expression","interpretation":"No outliers detected (G = 3.330, critical = 3.916)","n":612,"outlier_count":0,"outliers":[],"test":"Grubbs"}],"source":{"kind":"arrays"},"total_outliers":0},"error":null},{"label":"stats.outliers","method":"stats.outliers","params":{"method":"generalized_esd","max_outliers":5},"result":{"alpha":0.05,"method":"generalized_esd","notes":[],"results":[{"critical_value":3.916023602524324,"group":"Protein expression","interpretation":"No outliers detected (tested up to 5 outliers)","n":612,"outlier_count":0,"outliers":[],"test":"Generalized ESD"}],"source":{"kind":"arrays"},"total_outliers":0},"error":null},{"label":"stats.outliers","method":"stats.outliers","params":{"method":"modified_z"},"result":{"alpha":0.05,"method":"modified_z","notes":[],"results":[{"critical_value":3.5,"group":"Protein expression","interpretation":"No outliers detected (threshold = 3.50)","n":612,"outlier_count":0,"outliers":[],"test":"Modified Z-Score"}],"source":{"kind":"arrays"},"total_outliers":0},"error":null},{"label":"stats.outliers","method":"stats.outliers","params":{"method":"iqr"},"result":{"alpha":0.05,"method":"iqr","notes":["Flagged points are candidates, not verdicts, and nothing has been removed. Look for a physical cause before excluding anything; if there is none, keep the point and use a robust test instead. Any exclusion must be reported.","The IQR rule is descriptive — it has no p-value and flags roughly 0.7% of a perfectly normal sample by construction."],"results":[{"critical_value":1.5,"group":"Protein expression","interpretation":"Detected 2 outlier(s) outside [2.808, 4.025] (k = 1.5)","n":612,"outlier_count":2,"outliers":[{"index":85,"test_statistic":1.7419884963023815,"value":2.734},{"index":603,"test_statistic":1.803615447822514,"value":4.117}],"test":"IQR Method"}],"source":{"kind":"arrays"},"total_outliers":2},"error":null},{"label":"stats.gmm","method":"stats.gmm","params":{"k_max":3},"result":{"n_init":10,"notes":[],"results":[{"best_fit":{"aic":-163.15365145658663,"bic":-154.32018689156197,"components":[{"mean":3.4134852941176486,"sigma":0.2110857663702817,"weight":1.0}],"converged":true,"k":1,"k_fitted":1,"log_likelihood":83.57682572829331,"n_iter":3,"n_parameters":2},"best_k_aic":1,"best_k_bic":1,"error":null,"fits":[{"aic":-163.15365145658663,"bic":-154.32018689156197,"components":[{"mean":3.4134852941176486,"sigma":0.2110857663702817,"weight":1.0}],"converged":true,"k":1,"k_fitted":1,"log_likelihood":83.57682572829331,"n_iter":3,"n_parameters":2},{"aic":-159.67221450449236,"bic":-137.58855309193072,"components":[{"mean":3.2559165386021607,"sigma":0.16255632583886123,"weight":0.3940047050467917},{"mean":3.5159330054423066,"sigma":0.17236168493583126,"weight":0.6059952949532084}],"converged":false,"k":2,"k_fitted":2,"log_likelihood":84.83610725224618,"n_iter":100,"n_parameters":5},{"aic":-154.70894789761297,"bic":-119.37508963751436,"components":[{"mean":3.265728090853493,"sigma":0.15384548321313557,"weight":0.3362530539143661},{"mean":3.4433294075093075,"sigma":0.22325560338117242,"weight":0.3714280600311472},{"mean":3.545529002329534,"sigma":0.13486429214350046,"weight":0.29231888605448675}],"converged":false,"k":3,"k_fitted":3,"log_likelihood":85.35447394880649,"n_iter":100,"n_parameters":8}],"group":"Protein expression","n":612}],"seed":42,"source":{"kind":"arrays"}},"error":null}]}