【发布时间】:2019-05-13 04:05:08
【问题描述】:
我有以下数据。我的目标是通过重复 100 次使用交叉验证来计算均方预测误差 (MSPE)。
y=rnorm(250,0,2)
x1=rnorm(250,0,3)
x2=rnorm(250,1,1)
datasim=data.frame(y,x1,x2)
首先,我需要将数据拆分为训练和测试数据。所以我首先使用 R 中的 sample.int 函数计算了索引。基于这些索引,我将数据分成训练集和测试集。
dd=replicate(100,sample.int(n = nrow(datasim),
size = floor(.75*nrow(datasim)), replace = F))
train_set=apply(dd,2,function(y)
datasim[y, ])
test_set=apply(dd,2,function(y)
datasim[-y, ])
之后我必须使用训练数据来拟合模型。并且基于测试数据,我需要预测并获得均方预测误差(MSPE)。我不知道如何从这里开始。特别是我不知道如何链接训练集和测试集,以便我可以预测和计算 MSPE。
我使用另一个 lapply 函数内部的 lapply 函数尝试使用它。
lapply(test_set, function(train_set) {
lapply(train_set,function(x)
mean((test_set$y- predict.lm(y ~ x1 + x2, data = train_set))^2)
}
))
但这似乎有问题。谁能帮我解决这个问题?还有比这个方法更简单的方法吗?
谢谢
【问题讨论】:
标签: r simulation lapply lm