我想在Python(3.7.1)中使用scipy.stats.chi2_contingency的输出来计算Pearson的标准化残差。我已经在this stackoverflow post上纠结了,这正是我需要的,但是我得到了错误的结果。我只能猜测这可能与我更新的Python版本有关(链接来自2013年)?在
我已经把
v = csum * rsum * (n - rsum) * (n - csum) / n**3
包括cr_sum = csum * rsum和{}。两个输出数组都具有(2,5)的形状。这里似乎有必要计算cr_sum和{}的Hadamard积。当我手动对第一个单元格(频率值为33)执行此操作时,我得到了右残差(-2.62309082)。但是,我不能让这个Hadamard产品在Python中工作。相反,Python似乎是一些广播和输出:
array([[-1125512208, -267063340, -274153780, -1725637260, 691228240],
[-1125512208, -267063340, -274153780, -1725637260, 691228240]])。在
此外,我通常不知道何时使用哪种乘法类型。在stackoverflow邮报上,评论员只使用了星号,一切似乎都很顺利。必须对代码进行哪些更改?为什么?在
这是我的代码:from __future__ import division
import numpy as np
from scipy.stats.contingency import margins
from scipy.stats import chi2_contingency
def residuals(observed, expected