我正在使用scipy.stats.levene()分析许多数据集的均方差。我将每个数据集放在一个单独的列中,放入熊猫数据框并删除NaN值。
我的问题是-我有很多样本-并希望同时对列表中的所有数据集进行测试(例如,诸如list_of_samples = list(df.columns.values)之类的东西。)这时给我错误消息 ValueError:必须输入至少两个输入向量。
非常感谢所有帮助和反馈!
到目前为止我的代码。
### Import modules
import scipy
import csv
import pandas as pd
### Open dataframe, drop one column and NaN values
df = pd.read_csv('data.csv')
df = df.drop(['Object'],axis=1)
df = df.dropna()
### Put sample data in dataframe by column
sample1 = df['column1']
sample2 = df['column2']
sample3 = df['column3']
sample4 = df['column4']
w = scipy.stats.levene(sample1,sample2,sample3,sample4)[0]
pvalue = scipy.stats.levene(sample1,sample2,sample3,sample4)[1]
if pvalue<0.05:
Result = "Data shows variance"
scipy.stats.levene
else:
Result = "Data shows no variance"
print(w, pvalue)
答案 0 :(得分:1)
我通过使用基于pingouin module的scipy找到了解决方案。 pingouin允许测试以列表格式(长和宽组织)的数据进行测试
我发现复习Long and Wide data和dependent and grouping variable的含义非常有帮助。
下面是示例代码
import numpy as np
import pingouin as pg
data = pd.read_csv('data.csv')
test = pg.homoscedasticity(data, dv='column1', group='column2', method='levene', alpha=0.05)
输出为具有以下格式的浮点数。
W pval equal_var
levene 1.583536 0.066545 True