阿升

V1

2022/10/19阅读:23主题:默认主题

基于Python3实现的统计分析包Pingouin

一.Pingouin库的功能

Pingouin主要是基于Pandas和Numpy类库,Python3实现的统计包。

1.T检验

import numpy as np
import pingouin as pg

np.random.seed(123)
mean, cov, n = [4, 5], [(1, .6), (.6, 1)], 30
x, y = np.random.multivariate_normal(mean, cov, n).T

# T-test
print(pg.ttest(x, y))

输出结果如下所示:

2.皮尔逊相关

print(pg.corr(x, y))

输出结果如下所示:

3.Robust correlation(鲁棒相关)

# Introduce an outlier
x[5] = 18
# Use the robust biweight midcorrelation
print(pg.corr(x, y, method="bicor"))

输出结果如下所示:

4.数据正态性检验

print(pg.normality(x))                                    # Univariate normality
print(pg.multivariate_normality(np.column_stack((x, y)))) # Multivariate normality

输出结果如下所示:

5.Q-Q plot

import numpy as np
import pingouin as pg
np.random.seed(123)
x = np.random.normal(size=50)
ax = pg.qqplot(x, dist='norm')

输出结果如下所示:

6.单因素方差分析

# Read an example dataset
df = pg.read_dataset('mixed_anova')
# Run the ANOVA
aov = pg.anova(data=df, dv='Scores', between='Group', detailed=True)
print(aov)

输出结果如下所示:

7.重复测量方差分析

print(pg.rm_anova(data=df, dv='Scores', within='Time', subject='Subject', detailed=True))

输出结果如下所示:

8.Post-hoc tests corrected for multiple-comparisons

# FDR-corrected post hocs with Hedges'g effect size
posthoc = pg.pairwise_tests(data=df, dv='Scores', within='Time', subject='Subject', parametric=True, padjust='fdr_bh', effsize='hedges')
# Pretty printing of table
pg.print_table(posthoc, floatfmt='.3f')

输出结果如下所示:

9.Two-way mixed ANOVA(双因素混合方差分析)

# Compute the two-way mixed ANOVA and export to a .csv file
aov = pg.mixed_anova(data=df, dv='Scores', between='Group', within='Time', subject='Subject', correction=False, effsize="np2")
pg.print_table(aov)

输出结果如下所示:

10.Pairwise correlations between columns of a dataframe

import pandas as pd
np.random.seed(123)
z = np.random.normal(5, 1, 30)
data = pd.DataFrame({'X': x, 'Y': y, 'Z': z})
print(pg.pairwise_corr(data, columns=['X''Y''Z'], method='pearson'))

输出结果如下所示:

11.Convert between effect sizes(效应量间转换)

# Convert from Cohen's d to Hedges' g
pg.convert_effsize(0.4, 'cohen''hedges', nx=10, ny=12)

输出结果如下所示:

0.384

12.多元线性回归

print(pg.linear_regression(data[['X''Z']], data['Y']))

输出结果如下所示:

13.中介效应分析

print(pg.mediation_analysis(data=data, x='X', m='Z', y='Y', seed=42, n_boot=1000))

输出结果如下所示:

14.Contingency analysis

data = pg.read_dataset('chi2_independence')
expected, observed, stats = pg.chi2_independence(data, x='sex', y='target')
print(stats)

输出结果如下所示:

15.Bland-Altman plot(差异图)

import numpy as np
import pingouin as pg
np.random.seed(123)
mean, cov = [10, 11], [[1, 0.8], [0.8, 1]]
x, y = np.random.multivariate_normal(mean, cov, 30).T
ax = pg.plot_blandaltman(x, y)

输出结果如下所示:

16.Plot achieved power of a paired T-test(配对t检验的功率)

import matplotlib.pyplot as plt
import seaborn as sns
import pingouin as pg
import numpy as np
sns.set(style='ticks', context='notebook', font_scale=1.2)
d = 0.5  # Fixed effect size
n = np.arange(5, 80, 5)  # Incrementing sample size
# Compute the achieved power
pwr = pg.power_ttest(d=d, n=n, contrast='paired')
# Start the plot
plt.plot(n, pwr, 'ko-.')
plt.axhline(0.8, color='r', ls=':')
plt.xlabel('Sample size')
plt.ylabel('Power (1 - type II error)')
plt.title('Achieved power of a paired T-test')
sns.despine()

输出结果如下所示:

17.Paired plot(配对图)

import pingouin as pg
import numpy as np
df = pg.read_dataset('mixed_anova').query("Group == 'Meditation' and Time != 'January'")
ax = pg.plot_paired(data=df, dv='Scores', within='Time', subject='Subject', dpi=150)
ax.set_title("Effect of meditation on school performance")

输出结果如下所示:

二.统计学相关概念解释

1.中介分析

解析:中介分析是用于检验自变量 对因变量 (即 )的影响是否由自变量通过影响中介变量 而对因变量 (即 )的产生影响。

2.功效分析

解析:P值是拒绝原假设而犯第一类错误的概率,功效是1-犯第二类错误的概率。样本大小、显著性水平、功效和效应量,只要知道这4个值中的任意3个,就可以推算出第4个。
(1)样本大小:指的是实验中每组观测的数目。
(2)显著性水平(alpha):犯第一类错误的概率,通常是0.05。
(3)功效(power):1-第二类错误发生的概率。
(4)效应量(ES, effect size):量化强度的数值,效应量的计算方式依赖于假设检验中使用的统计方法。
说明:在假设检验中,根据影响功效的因素,改变和控制某些变量,以提高功效值,使研究更有效、更科学的过程。

3.配对样本t检验

解析:用于检验两配对样本数据的均值是否存在显著性差异。

4.秩和检验

解析:非参数检验,秩和检验就是用秩和作为统计量进行假设检验的方法。

参考文献:
[1]Pingouin官方文档:https://pingouin-stats.org/index.html
[2]Pingouin GitHub:https://github.com/raphaelvallat/pingouin
[3]Pingouin API:https://pingouin-stats.org/api.html#non-parametric
[4]功效分析:P值的胞弟:https://zhuanlan.zhihu.com/p/141465732
[5]样本量、功效分析和效应量之间的关系:https://zhuanlan.zhihu.com/p/473335639
[6]商业统计分析功效分析:https://www.bilibili.com/video/BV1434y1b7ua/
[7]SPSS之配对样本的T检验:https://blog.csdn.net/qq_51843109/article/details/123616113

分类:

数学

标签:

数学

作者介绍

阿升
V1

吾爱DotNet(公众号)