【发布时间】:2017-06-28 20:08:30
【问题描述】:
我正在熟悉 Statsmodels,以便将我更复杂的统计数据完全转移到 python。但是,我很谨慎,所以我用 SPSS 交叉检查我的结果,以确保我没有犯任何明显的错误。大多数时候,没有区别,但我有一个双向方差分析的例子,它在 Statsmodels 和 SPSS 中抛出了非常不同的测试统计数据。 (相关点:方差分析中的样本量不匹配,因此方差分析可能不是这里合适的模型。)
我选择我的模型如下:
import pandas as pd
import scipy as sp
import numpy as np
import statsmodels.api as sm
import seaborn as sns
import statsmodels
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt
Body = pd.read_csv(filepath)
Body = Body.dropna()
Body_lm = ols('Effect ~ C(Fiction) + C(Condition) + C(Fiction)*C(Condition)', data = Body).fit()
table = sm.stats.anova_lm(Body_lm, typ=2)
Statsmodels 输出如下:
sum_sq df F PR(>F)
C(Fiction) 278.176684 1.0 307.624463 1.682042e-55
C(Condition) 4.294764 1.0 4.749408 2.971278e-02
C(Fiction):C(Condition) 10.776312 1.0 11.917092 5.970123e-04
Residual 520.861599 576.0 NaN NaN
对应的SPSS结果如下:
谁能帮忙解释一下区别?可能是在引擎盖下对不同的样本量进行了不同的处理吗?还是我选错了型号?
任何帮助表示赞赏!
【问题讨论】:
-
看起来您在 statsmodels 中使用类型 2 ANOVA,在 SPSS 中使用类型 3。尝试在 statsmodels 中也使用类型 3 Anova。请注意,在具有正交设计的平衡数据集中,ANOVA 的类型都给出相同的结果,但在非正交设计中则不然。
-
感谢您的回答。我尝试改变这一点,但并不高兴:结果仍然不同。还尝试在将数据帧传递给 statsmodels 和 SPSS 之前删除 nan 值——仍然没有乐趣!
-
我在一个来自我自己的数据集的不同示例中遇到了完全相同的问题,差不多一年后 - 我想你没有找到原因吗?与 SPSS 有非常不同的值让我有点紧张
-
不,恐怕我从来没有找到这个问题的根源!如果您这样做,请回帖...
标签: python pandas statistics statsmodels