这是一个非常普通的问题,确切的答案取决于您要运行的模型。为了在一定程度上帮助您,您需要了解您运行的每个拟合模型都具有特定的结构。例如,请考虑以下内容:
set.seed(42)
x = rnorm(100000)
y = x + 5*rnorm(100000)
df <- data.frame(y,x)
查看线性模型的摘要方法返回的结果(还请探索
names(lm(y~x, data = df)))
)以下内容:
names(summary(lm(y~x, data = df)))
[1] "call" "terms" "residuals" "coefficients" "aliased" "sigma" "df" "r.squared"
[9] "adj.r.squared" "fstatistic" "cov.unscaled"
您将看到返回r^2和调整后的r^2。如果你对这个数量感兴趣,你可以多次拟合你的模型,提取这个数量,并以你想要的任何方式存储它。根据您的示例,假设我们要为每个运行到给定索引的数据提取r^2,我们可以定义以下函数:
get_rsq <- function(ind){
summary(lm(y~x, data = df[1:ind,]))$r.squared
}
然后跑
sapply(seq(1000, nrow(df), 10000), get_rsq)
[1] 0.05720826 0.04352535 0.03907049 0.03851629 0.04007696 0.04063812 0.04058338 0.03924757 0.03934495 0.03926088
在我们使用的每一个合适的地方得到r^2
seq(1000, nrow(df), 10000)
以增加数据帧中的索引,从而增加我们用来拟合模型的数据量(每次迭代增加10000)。请确保数据被洗牌。
注意,以我定义的同样方式
get_rsq
,您可以定义自己的函数,从拟合模型中提取所需的任何数量。
有许多现有的包装有助于这种运动。例如,查看
caret
打包,或者读一些
blog posts
是的。根据您的应用程序,
broom-package
它的功能
tidy
和
glance
可能也有帮助。例如,下面给出了在数据帧中通过格兰仕收集的所有摘要统计信息,每个增量数据分区有一行:
library(dplyr)
library(broom)
bind_rows(lapply(seq(1000, nrow(df), 10000), function(x) glance(lm(y~x, data = df[1:x,])) ))
r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual
1 0.05720826 0.05626358 0.9896907 60.55827 1.778778e-14 2 -1407.575 2821.15 2835.873 977.5288 998
2 0.04352535 0.04343838 0.9734098 500.47514 1.924959e-108 2 -15310.872 30627.74 30649.662 10420.8975 10998
3 0.03907049 0.03902473 0.9768702 853.75895 5.281910e-184 2 -29305.279 58616.56 58640.414 20037.8762 20998
4 0.03851629 0.03848528 0.9805112 1241.75589 9.551206e-267 2 -43375.978 86757.96 86782.980 29801.5469 30998
5 0.04007696 0.04005355 0.9802690 1711.67402 0.000000e+00 2 -57358.419 114722.84 114748.703 39396.0941 40998
6 0.04063812 0.04061931 0.9793373 2160.25156 0.000000e+00 2 -71300.030 142606.06 142632.579 48912.2650 50998
7 0.04058338 0.04056766 0.9785619 2580.21927 0.000000e+00 2 -85232.308 170470.62 170497.672 58410.6772 60998
8 0.03924757 0.03923404 0.9778149 2900.32974 0.000000e+00 2 -99150.760 198307.52 198335.030 67882.7501 70998
9 0.03934495 0.03933309 0.9789331 3317.38429 0.000000e+00 2 -113208.374 226422.75 226450.655 77621.2003 80998
10 0.03926088 0.03925032 0.9789433 3718.65928 0.000000e+00 2 -127185.787 254377.57 254405.830 87206.1159 90998