用于测试 MCAR 的分类数据的 Chi2 热图:无法解压不可迭代的 rv_frozen 对象
Chi2 heat map for categorical data to test for MCAR: cannot unpack non-iterable rv_frozen object
我想知道我丢失的数据是否是 MCAR。
我有一个这样的数据集,其中 0 表示数据存在,1 表示数据缺失:
a b c d e
0 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
我想了解 B 列中的数据是否为 MCAR,所以我想在所有列之间制作 chi2 的热图(如果所有 p 值 >0.5,就我而言,数据可能被视为 MCAR明白)。
我写了这个:
import pandas as pd
import numpy as np
from scipy.stats import chi2
df = pd.read_csv('binary_to_check_for_missing_data.txt',header=0,sep='\t')
column_names = df.columns
resultant = pd.DataFrame(data=[(0 for i in range(len(df.columns))) for i in range(len(df.columns))],
columns=list(df.columns))
resultant.set_index(pd.Index(list(df.columns)), inplace = True)
for i in list(df.columns):
for j in list(df.columns):
if i != j:
chi2_val, p_val = chi2(np.array(df[i]).reshape(-1, 1), np.array(df[j]).reshape(-1, 1))
resultant.loc[i,j] = p_val
print(resultant)
我收到错误:
追溯(最近调用最后):
File "chi2_contingency.py", line 16, in <module>
chi2_val, p_val = chi2(np.array(df[i]).reshape(-1, 1), np.array(df[j]).reshape(-1, 1))
TypeError: cannot unpack non-iterable rv_frozen object
我只是不太明白这个错误。我在想,也许因为数据是类别,它是否告诉我我不打算将数据变成 np.array?
将 chi2
更改为 chisquare
。
scipy.stats.chi2
is the SciPy implementation of the chi-squared probability distribution。调用它不会执行 chi-squared test.
函数scipy.stats.chisquare
performs the chi-squared test。它 returns 您期望的 chi-squared 统计数据和 p-value。
我想知道我丢失的数据是否是 MCAR。
我有一个这样的数据集,其中 0 表示数据存在,1 表示数据缺失:
a b c d e
0 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
我想了解 B 列中的数据是否为 MCAR,所以我想在所有列之间制作 chi2 的热图(如果所有 p 值 >0.5,就我而言,数据可能被视为 MCAR明白)。
我写了这个:
import pandas as pd
import numpy as np
from scipy.stats import chi2
df = pd.read_csv('binary_to_check_for_missing_data.txt',header=0,sep='\t')
column_names = df.columns
resultant = pd.DataFrame(data=[(0 for i in range(len(df.columns))) for i in range(len(df.columns))],
columns=list(df.columns))
resultant.set_index(pd.Index(list(df.columns)), inplace = True)
for i in list(df.columns):
for j in list(df.columns):
if i != j:
chi2_val, p_val = chi2(np.array(df[i]).reshape(-1, 1), np.array(df[j]).reshape(-1, 1))
resultant.loc[i,j] = p_val
print(resultant)
我收到错误:
追溯(最近调用最后):
File "chi2_contingency.py", line 16, in <module>
chi2_val, p_val = chi2(np.array(df[i]).reshape(-1, 1), np.array(df[j]).reshape(-1, 1))
TypeError: cannot unpack non-iterable rv_frozen object
我只是不太明白这个错误。我在想,也许因为数据是类别,它是否告诉我我不打算将数据变成 np.array?
将 chi2
更改为 chisquare
。
scipy.stats.chi2
is the SciPy implementation of the chi-squared probability distribution。调用它不会执行 chi-squared test.
函数scipy.stats.chisquare
performs the chi-squared test。它 returns 您期望的 chi-squared 统计数据和 p-value。