pandas 是否有必要在仅对分类变量运行的logit模型中添加一个常数?

flseospp  于 2023-03-21  发布在  Git
关注(0)|答案(1)|浏览(154)

我有一个 Dataframe ,看起来像这样:

我正在运行一个以流体为因变量的logit模型,不包括vpperip

model = smf.logit('''fluid ~ C(examq3_n, Treatment(reference = 2.0)) + C(pmhq3_n) + C(fluidq3_n) + C(mapq3_n, Treatment(reference = 3.0)) + 
                  C(examq6_n, Treatment(reference = 2.0)) + C(pmhq6_n) + C(fluidq6_n) + C(mapq6_n, Treatment(reference = 3.0)) +
                  + C(case, Treatment(reference = 2))''',
                      data = case1_2_vars).fit()
print(model.summary())

我得到以下结果:

我想知道我是否需要向数据中添加一个常量,如果是的话,怎么做?我试过向名为const的 Dataframe 中添加一个列,它等于1,但是当我把const加到logit方程中时,我得到LinAlgError: Singular Matrix,,我不I don’我不知道如何用smf.add_constant()相加,因为我必须在等式中指定分类变量及其各自的参考编号,而不是分别定义xy并简单地将它们输入到smf.logit()调用中。
我的问题是:a)我是否需要添加一个常数,以及B)如何添加?网上有一些链接似乎暗示它可能不需要基于分类变量的logit模型,但如果它是最佳实践,我宁愿这样做。
我还想知道,statmodels是否自动包含一个常量?因为Intercept列在结果中。

gorkyyrv

gorkyyrv1#

如果使用公式,则patsy的公式处理会自动添加常数/截距。
(when使用例如smf.logitsm.Logit.from_formula
如果你使用numpy数组或pandas DataFrame创建一个没有公式的模型,那么exog不会被statmodels改变,也就是说,用户需要自己添加一个常量。助手函数是sm.add_constant,它向数组或DataFrame添加一列1。
(when使用例如sm.Logit(y, x)

相关问题