小编Ony*_*mbu的帖子

为什么 R 产生不正确的 AIC 和 BIC

我已经用谷歌搜索了这个并找不到解决方案。

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)

r

3
推荐指数
1
解决办法
177
查看次数

如何在仅显示部分列表的同时输出包含不可见项 R 的列表

我想这个问题在某个地方被问过。虽然我找不到一个。请帮帮我。我需要输出一个列表,但可能只显示列表的第一个元素,而其他元素不可见。虽然可以访问它们。

请允许我举一个例子。

 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
推荐指数
1
解决办法
383
查看次数

标签 统计

r ×2