如何在Python中执行多元正态性检验
在本文中,我们将研究在Python中执行多元正态性检验的各种方法。
多元正态性检验是一种正态性检验,它确定给定的一组变量是否来自正态分布。多元正态性检验确定一组变量是否服从多元正态分布。
multivariate_normality()函数
在这种方法中,用户需要使用 pingouin 库中的所需参数调用 multivariate_normality()函数,以对Python中的给定数据进行多变量正态性测试。
安装 pingouin 库的语法:
pip install pingouin
Syntax: multivariate_normality(x,alpha)
Parameters:
- X: Data matrix of shape (n_samples, n_features).
- alpha: Significance level.
Returns
- hz:he Henze-Zirkler test statistic.
- pval:P-value.
- normal: True if X comes from a multivariate normal distribution.
这是一个假设检验,两个假设如下:
- H0(接受):变量服从多元正态分布..(Po>0.05)
- Ha(拒绝):变量不服从多元正态分布。
示例 1: Python中多元正态分布的多元正态性检验
在此示例中,我们将简单地使用 pingouin 库中的 multivariate_normality()函数对Python中包含 100 个数据点和 5 个变量的随机生成数据进行多元正态性测试。
Python3
from pingouin import multivariate_normality
import pandas as pd
import numpy as np
data = pd.DataFrame({'a': np.random.normal(size=100),
'b': np.random.normal(size=100),
'c': np.random.normal(size=100),
'd': np.random.normal(size=100),
'e': np.random.normal(size=100)})
# perform the Multivariate Normality Test
multivariate_normality(data, alpha=.05)
Python3
from pingouin import multivariate_normality
import pandas as pd
import numpy as np
data = pd.DataFrame({'a':np.random.poisson(size=100),
'b': np.random.poisson(size=100),
'c': np.random.poisson(size=100),
'd': np.random.poisson(size=100),
'e':np.random.poisson(size=100)})
# perform the Multivariate Normality Test
multivariate_normality(data, alpha=.05)
输出:
HZResults(hz=0.7973450591569415, pval=0.8452549483161891, normal=True)
输出解释:
由于在上面的示例中,p 值为 0.84,大于阈值(0.5),即 alpha(0.5),因此我们无法拒绝零假设,即我们没有证据表明样本遵循多元正态分配。
示例 2: Python中非多元正态分布的多元正态性检验
在此示例中,我们将简单地使用 pingouin 库中的 multivariate_normality()函数对Python中包含 100 个数据点和 5 个变量的随机生成的数据热情分布进行多元正态性测试。
Python3
from pingouin import multivariate_normality
import pandas as pd
import numpy as np
data = pd.DataFrame({'a':np.random.poisson(size=100),
'b': np.random.poisson(size=100),
'c': np.random.poisson(size=100),
'd': np.random.poisson(size=100),
'e':np.random.poisson(size=100)})
# perform the Multivariate Normality Test
multivariate_normality(data, alpha=.05)
HZResults(hz=7.4701896678920745, pval=0.00355552234721754, normal=False)
输出解释:
由于在上面的示例中,p 值为 0.003,小于 alpha(0.5),因此我们拒绝原假设,即我们有足够的证据表明样本不是来自多元正态分布。