我已经用谷歌搜索了这个并找不到解决方案。
R 似乎在 AIC/BIC 计算方面存在问题。它会产生错误的结果。一个简单的例子如下所示:
link = 'https://gist.githubusercontent.com/seankross/a412dfbd88b3db70b74b/raw/5f23f993cd87c283ce766e7ac6b329ee7cc2e1d1/mtcars.csv'
df = read.csv(link, row.names = 'model')
form = 'mpg ~ disp + hp + wt + qsec + gear'
my_model = lm(form, data = df)
summary(my_model)
cat('AIC:',AIC(my_model),'\tBIC:',AIC(my_model, k = log(nrow(df))))
AIC: 157.4512 BIC: 167.7113
Run Code Online (Sandbox Code Playgroud)
在 python 中做完全相同的事情,我得到:
import pandas as pd
from statsmodels.formula.api import ols as lm
link = 'https://gist.githubusercontent.com/seankross/a412dfbd88b3db70b74b/raw/5f23f993cd87c283ce766e7ac6b329ee7cc2e1d1/mtcars.csv'
df = pd.read_csv(link, index_col='model')
form = 'mpg ~ disp + hp + wt + qsec + gear'
my_model = lm(form, df).fit()
my_model.summary() …Run Code Online (Sandbox Code Playgroud) 我想这个问题在某个地方被问过。虽然我找不到一个。请帮帮我。我需要输出一个列表,但可能只显示列表的第一个元素,而其他元素不可见。虽然可以访问它们。
请允许我举一个例子。
s=lm(iris)
s
Call:
lm(formula = iris)
Coefficients:
(Intercept) Sepal.Width Petal.Length Petal.Width
2.1713 0.4959 0.8292 -0.3152
Speciesversicolor Speciesvirginica
-0.7236 -1.0235
length(s)
[1] 13
Run Code Online (Sandbox Code Playgroud)
在这里我们看到,当使用lm函数时,输出是一个长度为 13 的列表。我们可以s通过简单地使用美元符号来访问我们想要的所有元素。但同时我们只看到调用和系数,我们看不到所有其他元素,如残差、拟合值等。我如何在我的函数上实现这个?
对于上面的示例,返回的对象属于类 lm。我想编写一个不一定输出 lm 对象的函数。
谢谢
r ×2