在Pandas中,我正在尝试手动编写卡方检验。我正在比较下面数据框中的
为此,我需要计算每个单元格的预期计数,公式为:
我使用numpy的outer product函数来模仿上述R代码的结果:
可以使用Pandas函数实现这个吗?
行0
与行1
。data
2 3 5 10 30
0 3 0 6 5 0
1 33324 15833 58305 54402 38920
为此,我需要计算每个单元格的预期计数,公式为:
cell(i,j) = rowSum(i)*colSum(j) / sumAll
。在 R 中,我可以通过取 outer()
乘积来轻松实现此操作:Exp_counts <- outer(rowSums(data), colSums(data), "*")/sum(data) # Expected cell counts
我使用numpy的outer product函数来模仿上述R代码的结果:
import numpy as np
pd.DataFrame(np.outer(data.sum(axis=1),data.sum(axis=0))/ (data.sum().sum()), index=data.index, columns=data.columns.values)
2 3 5 10 30
0 2 1 4 3 2
1 33324 15831 58306 54403 38917
可以使用Pandas函数实现这个吗?
not_yet_df = np.outer(data.sum(axis=0), data.sum(axis=1))/ (data.sum().sum())
然后now_a_df = pd.DataFrame(not_yet_df)
此外,如果你愿意的话,你可以使用pd.np.outer(..)
直接从 pandas 中调用outer
函数,而无需导入 numpy。 - mkln