我创建了一个数据帧来比较三个或更多组的比例(Real data有超过50,000行)。在左栏中,0表示存活,1表示死亡,右栏中的0,1,2,3表示等级。
在示例数据帧中,不同等级的比例似乎没有不同,但我想要导出p值,无论这是否在统计上有意义。
从例子中获得的存活率如下。
0级57.14%
一级66.66%
等级2 50.0%
等级3 60.0%
我试着同时使用Kai和Anova测试。但是,我不知道哪种方法是正确的。
ex_df = pd.DataFrame({"Survive":[0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1],
"grade":[2,1,2,3,0,0,0,3,0,2,1,1,0,0,0,1,2,3,1,2,1,3,3,2]})
我想要计算p值
P-值:0.xxxx....
发布于 2019-06-03 01:12:48
这是一个最好用逻辑回归分析的问题。(所提出的对整个样本使用年级组的二项式检验的方法在统计学上是不正确的。)使用R(因为我不是pythonista)可以很容易地演示它,并且我怀疑有一个类似的python。R结果可用于检查任何Python实现的正确性。正如您所看到的,Pandas中的数据帧结构是从R复制的,它的许多统计例程也是如此:
ex_df = data.frame(Survive = c(0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1),
grade=factor(c(2,1,2,3,0,0,0,3,0,2,1,1,0,0,0,1,2,3,1,2,1,3,3,2)) )
glm(Survive~grade, data=ex_df, family="binomial")
#--- output---
Call: glm(formula = Survive ~ grade, family = "binomial", data = ex_df)
Coefficients:
(Intercept) grade1 grade2 grade3
-0.2877 -0.4055 0.2877 -0.1178
Degrees of Freedom: 23 Total (i.e. Null); 20 Residual
Null Deviance: 32.6
Residual Deviance: 32.25 AIC: 40.25
#----------
summary( glm(Survive~grade, data=ex_df, family="binomial") )
#-------output------
Call:
glm(formula = Survive ~ grade, family = "binomial", data = ex_df)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.1774 -1.0579 -0.9005 1.3018 1.4823
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.2877 0.7638 -0.377 0.706
grade1 -0.4055 1.1547 -0.351 0.725
grade2 0.2877 1.1180 0.257 0.797
grade3 -0.1178 1.1902 -0.099 0.921
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 32.601 on 23 degrees of freedom
Residual deviance: 32.247 on 20 degrees of freedom
AIC: 40.247
Number of Fisher Scoring iterations: 4
发布于 2019-05-31 15:11:33
方差分析要求你的数据是正态分布的,而你的数据显然不是正态分布的(只有0和1)。你可以通过假设存活概率为数据中的1的总数除以测量的总数来尝试binomial test,而不考虑年级。然后对每个年级做一个二项式测试。我链接到的python函数返回p值。
https://stackoverflow.com/questions/56223324
复制相似问题