Python Statsmodels向SPSS提供了不同的方差分析结果

Python Statsmodels向SPSS提供了不同的方差分析结果,python,pandas,statistics,statsmodels,Python,Pandas,Statistics,Statsmodels,我越来越熟悉Statsmodels,以便将更复杂的统计数据完全转移到python上。然而,我很谨慎,所以我用SPSS交叉检查我的结果,只是为了确保我没有犯任何明显的错误。大多数情况下,没有差异,但我有一个双向方差分析的例子,它在Statsmodels和SPSS中给出了非常不同的测试统计数据。(相关点:ANOVA中的样本大小不匹配,因此ANOVA可能不是合适的模型。) 我选择的型号如下: import pandas as pd import scipy as sp import numpy as

我越来越熟悉Statsmodels,以便将更复杂的统计数据完全转移到python上。然而,我很谨慎,所以我用SPSS交叉检查我的结果,只是为了确保我没有犯任何明显的错误。大多数情况下,没有差异,但我有一个双向方差分析的例子,它在Statsmodels和SPSS中给出了非常不同的测试统计数据。(相关点:ANOVA中的样本大小不匹配,因此ANOVA可能不是合适的模型。)

我选择的型号如下:

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结果如下:

有人能解释一下区别吗?不相等的样本大小是否在引擎盖下得到了不同的处理?还是我选错了型号

感谢您的帮助

比较变量的平均值时应使用。 顺便说一句,如果使用
*
,则不需要指定交互术语中的每个变量:

“:”使用其他两列的乘积向设计矩阵中添加新列。
“*”还将包括相乘的各个列

您的模型应该是:

Body_lm = ols('Effect ~ C(Fiction, Sum)*C(Condition, Sum)', data = Body).fit()
比较变量的平均值时应使用。 顺便说一句,如果使用
*
,则不需要指定交互术语中的每个变量:

“:”使用其他两列的乘积向设计矩阵中添加新列。
“*”还将包括相乘的各个列

您的模型应该是:

Body_lm = ols('Effect ~ C(Fiction, Sum)*C(Condition, Sum)', data = Body).fit()

看起来您在statsmodels中使用的是2型方差分析,在SPSS中使用的是3型方差分析。在statsmodels中也尝试使用类型3方差分析。注意,在具有正交设计的平衡数据集中,ANOVA的类型都给出相同的结果,但在非正交设计中则没有。谢谢你的回答。我试图改变这一点,但没有任何乐趣:结果仍然不同。在将数据帧传递给statsmodels和SPSS之前,也尝试过删除nan值-仍然没有乐趣!差不多一年后,我在自己的数据集中遇到了一个完全相同的问题,一个不同的例子——我想你没有找到原因吧?与SPSSNo有很大不同的值,这让我有点紧张,恐怕我从来没有弄清这个问题的根源!如果您这样做,请发回…看起来您在statsmodels中使用的是2型方差分析,而在SPSS中使用的是3型方差分析。在statsmodels中也尝试使用类型3方差分析。注意,在具有正交设计的平衡数据集中,ANOVA的类型都给出相同的结果,但在非正交设计中则没有。谢谢你的回答。我试图改变这一点,但没有任何乐趣:结果仍然不同。在将数据帧传递给statsmodels和SPSS之前,也尝试过删除nan值-仍然没有乐趣!差不多一年后,我在自己的数据集中遇到了一个完全相同的问题,一个不同的例子——我想你没有找到原因吧?与SPSSNo有很大不同的值,这让我有点紧张,恐怕我从来没有弄清这个问题的根源!如果你这样做,请发回。。。