在列表而不是单独的向量上运行Levene检验

时间:2020-06-03 18:43:12

标签: python pandas scipy variance

我正在使用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)

1 个答案:

答案 0 :(得分:1)

我通过使用基于pingouin modulescipy找到了解决方案。 pingouin允许测试以列表格式(长和宽组织)的数据进行测试

我发现复习Long and Wide datadependent 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