我正在R和Python中进行G测试,但结果却有所不同,在Python中得到的结果是错误的。我不知何故使用了该公式。
数据为:
prfs
Sex F M
Pref
B 29 17
A 2 12
R代码是:
library(RVAideMemoire)
G.test(prfs)
G-test
data: prfs
G = 11.025, df = 1, p-value = 0.0008989
Python代码是:
stats.power_divergence(prfs, lambda_ = 'log-likelihood')
Power_divergenceResult(statistic=array([28.14366538, 0.86639163]), pvalue=array([1.12635722e-07, 3.51956200e-01]))
stats.power_divergence(prfs, lambda_ = 'log-likelihood', axis = None, ddof = 2)
Power_divergenceResult(statistic=29.07673602201342, pvalue=6.956736686069527e-08)
您的建议将不胜感激。
答案 0 :(得分:0)
这是一个古老的问题,但以下答案可能会有所帮助:
obs = np.array([[29,17], [2,12]])
# G test with scipy:
from scipy.stats import *
g, p, dof, expctd = chi2_contingency(obs, lambda_="log-likelihood")
print("G={}; df={}; P={}".format(g, dof, p))
输出:
G=8.859368223179882; df=1; P=0.0029158847773319975
该值类似于通过R方法获得的值。
上述方法的参考文献为here。