选择CV岭参数0引言1、代码1.1获取数据函数1.2岭估计函数1.3岭估计CV预测精度1.4优化调用2、总结
引言0
《R语言入门——多元回归交叉验证的实现》介绍了用RMSE测量模型预测精度的交叉验证思路,本文采用同样的思路确定岭回归的岭参数。 具体的估计是:
^=(xtxe )1XTY.(hat ) beta ) ) x ) tx(lambdae ) ^{-1}x^ty.^=) xtxe )1xty。
本文旨在选择适当的(lambda为交叉验证后的最小RMSE,具体码如下:
1、代码1.1数据获取函数输入参数:
(p )变量的维数,通常取正整数,默认三维.(数值) ) ) ) )。
n :是大于p的整数,默认值为200.(数值)
beta :回归数据的真实参数。 每个组件的默认值为1.1。 长度是p的向量
输出参数:
-data:n(p1 )-n * (p1 )-n ) P1 )的数据框中,第一列以y-y值为自变量,第二列以P1-p1p 1列以p为自变量。
getdata-function(n=200,p=3,beta=rep (1,p ) ) library ) mass ) x - mvrnorm(n ) n,rep ) 0,p,diag ) RS 1:p ) y-x % * % beta rnorm (n,0,0.5 ) data-data.frame(y=y,x ) Data} 1.2岭估计函数输入参数:
数据: n (p 1 ) n* ) p 1 ) n ) P1 )中的数据框。 第一列为y y y值,第二列为p1
p+1 p+1列为p为自变量.– lambda: 岭回归的惩罚参数,默认值为0.1.(数值)
输出参数:
– beta:输出岭回归的参数估计.( p ∗ 1 p*1 p∗1的矩阵) rlm <- function(data = getData(20,3), lambda = 0.1){ library(MASS) x <- as.matrix(cbind(1, data[,-1])) y <- data[,1] n <- nrow(x); p = ncol(x) beta <- ginv(t(x) %*% x + lambda*diag(p)) %*% t(x) %*% y return(beta)} 1.3 岭估计CV预测精度
输入参数:
– data: n ∗ ( p + 1 ) n*(p+1) n∗(p+1)的数据框,第一列为 y y y值,第二到 p + 1 p+1 p+1列为p为自变量.(数据框)
– lambda: 岭回归的惩罚参数,默认值为0.1.(数值)
– k: 交叉验证的折数,默认值为5.(数值)
输出参数:(列表)
– yhat:输出岭回归的预测值.(列表中的第一个元素,为一个长度为n的向量)
– RMSE:输出岭回归的RMSE值.(列表中的第二个元素,为一个长度为1的向量)
最后希望可以帮助大家提高R水平。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。