Mic*_*iak 3 python linear-regression scikit-learn statsmodels
我想比较两个嵌套线性模型,将它们称为 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)
Run Code Online (Sandbox Code Playgroud)
给我以下输出:
这告诉我添加am: wt交互项显着改善了模型。有没有办法在 Python/sklearn/statsmodels 中做类似的事情?
编辑:我在发布这个问题之前看过这个问题,但无法弄清楚它们是如何相同的。另一个问题是对两个向量进行 F 检验。这个问题是关于比较 2 个嵌套线性模型。
我认为这就是我需要的:
但我不确定传递这个函数到底是什么。如果有人可以提供或指出一个例子,那将非常有帮助。
通过以下方式调整 Jeremy 的答案,我可以获得与在 R 中获得的结果相同的结果:
import pandas as pd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
cars_df = pd.read_csv("https://raw.githubusercontent.com/focods/WonderfulML/master/data/mtcars.csv")
m01 = ols('mpg ~ am + wt', data=cars_df).fit()
m02 = ols('mpg ~ am + wt + am:wt', data=cars_df).fit()
anovaResults = anova_lm(m01, m02)
print(anovaResults)
Run Code Online (Sandbox Code Playgroud)
这在我的 jupyter 笔记本中给了我以下结果:
我也得到了这些相当神秘的错误:
任何人都知道是什么导致了这些错误?
小智 5
我发现这本书很有帮助(“Python 统计简介”/Thomas Haslwanter)
这是相关的代码示例:
import pandas as pd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
df = pd.DataFrame(data, columns=['value', 'treatment'])
model = ols('value ~ C(treatment)', data=df).fit()
anovaResults = anova_lm(model)
print(anovaResults)
Run Code Online (Sandbox Code Playgroud)
查看上面的书籍链接以获取打印结果。
注意:anova_lm有时与参数“typ”一起使用,尝试其不同的可能值,看看哪个适合您。
归档时间: |
|
查看次数: |
6492 次 |
最近记录: |