我想在R中对线性回归模型进行k倍交叉验证,并测试一个标准误差规则:
https://stats.stackexchange.com/questions/17904/one-standard-error-rule-for-variable-selection
因此,我需要一个函数来返回预测误差的交叉验证估计
和
该估计值的标准误差(或至少每个倍数的MSE,以便我自己计算标准误差)。许多包具有计算交叉验证错误的函数(例如,
cv.glm
在
boost
包),但通常它们只返回预测误差的CV估计,而不返回其标准误差或每个倍数的MSE。
我试过使用软件包
DAAG
,其功能
CVlm
应该比
cv.glm
。然而,我似乎做不到!这是我的代码:
a=c(0.0056, 0.0088, 0.0148, 0.0247, 0.0392, 0.0556, 0.0632, 0.0686, 0.0786, 0.0855, 0.0937)
b=c(6.0813, 9.5011, 15.5194, 23.9409, 32.8492, 40.8399, 43.8760, 45.5270, 46.7668, 46.1587, 43.4524)
dataset=data.frame(x=a,y=b)
CV.list=CVlm(df=dataset,form.lm = formula(y ~ poly(x,2)), m=5)
我得到了几乎没有信息的错误
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
这对我来说没什么意义。
x
和
y
相同的长度(11),所以很明显,函数在抱怨其他函数
x(x)
,
y
它在内部创建的变量。
我很乐意接受其他软件包的解决方案(例如
caret
). 此外,如果我能指定k倍交叉验证的重复次数,那就太好了。