【发布时间】:2017-12-27 20:49:58
【问题描述】:
我想比较两个嵌套线性模型,分别称为 m01 和 m02,其中 m01 是简化模型,m02 是完整模型。我想做一个简单的 F 检验,看看完整模型是否比简化模型增加了显着的效用。
这在R中很简单。例如:
mtcars <- read.csv("https://raw.githubusercontent.com/focods/WonderfulML/master/data/mtcars.csv")
m01 <- lm(mpg ~ am + wt, mtcars)
m02 <- lm(mpg ~ am + am:wt, mtcars)
anova(m01, m02)
给我以下输出:
这告诉我添加 am: wt 交互项显着改善了模型。有没有办法在 Python/sklearn/statsmodels 中做类似的事情?
编辑:我在发布此之前查看了this question,但无法弄清楚它们有何相同之处。另一个问题是对两个向量进行 F 检验。这个问题是关于比较 2 个嵌套的线性模型。
我认为这是我需要的:
但不确定传递此函数的具体内容。如果有人能提供或指出一个例子,那将非常有帮助。
【问题讨论】:
-
你可以试试 sklearn.model_selection scikit-learn.org/stable/modules/… from sklearn.feature_selection import f_regression
-
重复标记不正确。正如编辑中提到的,这是两个不同的 f 检验。
-
答案见 statsmodels anova_lm statsmodels.org/dev/anova.html 比较嵌套模型,OLS 结果还具有三种 compare_xxx_test 方法,用于直接测试嵌套受限模型和非受限模型。 statsmodels.org/dev/generated/…
-
@user333700 谢谢。只需要熟悉这种风格的公式语法。看起来与 R 在表面上使用的相似。
-
@Mr_U4913 谢谢。我查看了该链接并没有排除它,但我只想像我在示例中展示的那样一次比较 2 个嵌套模型的集合。 model_selection 做得比我需要的要多。
标签: python scikit-learn linear-regression statsmodels