library(MASS)#mvrnorm library(car)#scatterplotMatrix;;;;vip(model,....)计算线性模型、广义线性模型和其他模型的方差-通货膨胀和广义方差-通货膨胀因子。 library(glmnet)#用惩罚极大似然拟合广义线性模型。在正则化参数lambda的数值网格上计算套索或elasticnet惩罚的正则化路径。可以处理各种形状的数据,包括非常大的稀疏数据矩阵。拟合线性,logistic和多项式,泊松和Cox回归模型。 library(psych)#corr.tes library(ncvreg)#SCAD 拟合MCP-或scad -惩罚回归模型的系数路径在一个网格值的正则化参数lambda。拟合线性和逻辑回归模型,选择额外的L2惩罚。 library(msgps)#Adaptive Lasso基于广义寻径算法计算了套索、弹性网、广义弹性网和自适应套索的自由度。采用Mallows’Cp、偏置校正AIC (AICc)、广义交叉验证(GCV)和BIC等模型选择准则,可以筛选出最优模型。 #=================================数值模拟环境============= #样本 n=80 #(训练集+测试集),预测变量维数 p=50,稀疏矩阵:beta=c(1,1.2,-3.2,4.1,-5.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) #m=300 试验次数 #===================================X:多元正态数据集==========================- options(digits=3) p=50 n=80 mean=rnorm(p,0,1) cname=c("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10" ,"x11","x12","x13","x14","x15","x16","x17","x18","x19","x20" ,"x21","x22","x23","x24","x25","x26","x27","x28","x29","x30" ,"x31","x32","x33","x34","x35","x36","x37","x38","x39","x40" ,"x41","x42","x43","x44","x45","x46","x47","x48","x49","x50") #sigma08:生成相关系数为0.8的协方差矩阵(正定)50*50 sigma08=matrix(0,nrow=50,ncol=50,dimnames=list(cname,cname)) for (i in 1:50){ for (j in 1:50){ if (i==j) sigma08[i,j]=1 else sigma08[i,j]=0.8}} XD08=mvrnorm(n, mean, sigma08) #------------------相关系数及相关性检验-------------------- corr.test(XD08,use="complete")#use=c(pairwise,complete) #------------------------------------------------------------------- beta=c(1,1.2,-3.2,4.1,-5.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) beta1=beta/(1+1.2^2+(-3.2)^2+4.1^2+(-5.)^2)^0.5 #0.135 0.163 -0.434 0.555 -0.677 0.000 0.000 0.000 0.000 0.000 train=sample(c(TRUE,FALSE),nrow(XD08),rep=TRUE) test=(!train) #-------------训练集-------------------- XD08Tr=XD08[train,] # X矩阵 esp=rnorm(nrow(XD08Tr),0,1) YD08Tr=XD08Tr%*%beta+esp #Y矩阵 dim(XD08Tr) #-------------测试集--------------------------- XD08Te=XD08[test,] #X矩阵 esp=rnorm(nrow(XD08Te),0,1) YD08Te=XD08Te%*%beta+esp #Y矩阵 dim(XD08Te) #------------散点图--------------------------------- YXD08Tr=cbind(YD08Tr,XD08Tr) #[Y,X]矩阵 dfYXD08Tr=as.data.frame(YXD08Tr)#数据框 names(dfYXD08Tr)=c("ymo","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10" ,"x11","x12","x13","x14","x15","x16","x17","x18","x19","x20" ,"x21","x22","x23","x24","x25","x26","x27","x28","x29","x30" ,"x31","x32","x33","x34","x35","x36","x37","x38","x39","x40" ,"x41","x42","x43","x44","x45","x46","x47","x48","x49","x50") attach(dfYXD08Tr)#[Y,X]数据框 scatterplotMatrix(~ymo+x1+x2+x50, data=dfYXD08Tr, spread=FALSE, lty.smooth=2, main="ScatterplotmydatadfYXD08Tr") #---------------------------------------------------------------------------- #---------------elastic-net(alpha=0.5)-------------------- YD08Trs=as.vector(YD08Tr) YD08Tes=as.vector(YD08Te) fEND08=msgps(XD08Tr,YD08Trs,penalty="enet",alpha=0.5)#(penalty="enet",alpha=0---Lasso);(penalty="enet"/gent",0