精华内容
下载资源
问答
  • 2022-05-07 11:40:00

    R语言学习笔记



    install.packages("glmnet")	#安装包
    install.packages("ridge")		#安装包,用于第3问ridge
    install.packages("lars")		#安装包,用于第3问lasso
    

    比较lm.ridge和glmnet函数

    以“data3.3.csv”为例做岭回归,比较lm.ridge和glmnet函数的结果异同。(设置lambda=seq(0,3,0.1))

    library(glmnet)	#加载包
    library(MASS)	#加载包
    
    data3.3<-read.csv("data3.3.csv")	#导入数据
    
    ##数据标准化,将变量标准差变为1#########
    n<-nrow(data3.3)
    y1<-data3.3$y
    sd_y<-(var(y1)*(n-1)/n)^0.5
    y1<-y1/sd_y
    sd_x<-function(x){
        sdx<-(var(x)*(n-1)/n)^.5
        x/sdx
    }
    
    x1<-apply(data3.3[,3:7],2,sd_x)
    ##y2<-sd_x(data3.3[,2])
    datas1<-data.frame(y1,x1)
    
    ###对标准化的数据进行线性回归,计算回归系数
    lm1<-lm(y1~.,data=datas1)
    beta1<-coef(lm1)
    beta1
    coef(lm1)
    
    (Intercept)x1x2x3x4x5
    0.48482.4474-2.4851-0.08310.53050.5635
    ###用MASS包中的lm.ridge函数及数据datas1进行岭回归,计算岭回归的系数向量beta2
    lam<-seq(0,3,0.1)
    lm.ridge<-lm.ridge(y1~.,data=datas1,lambda=lam)
    beta2<-coef(lm.ridge)
    beta2
    

    注意:beta2的第一行是OLS回归的系数

    ###利用glmnet包中的glmnet函数及数据datas进行岭回归,计算岭回归的系数向量beta3
    lam1<-seq(3,0,-0.1)
    glmnet1<-glmnet(x1, y1,alpha=0, standardize=F,lambda=lam1,thresh=1e-20)	
    beta3<-coef(glmnet1)
    beta3
    

    alpha=1 is the lasso penalty, and alpha=0 the ridge penalty.
    注意:

    1. 无论lambda的值是倒序还是正序写,其岭回归的系数输出都是按lambda从大到小输出。另外,glmnet()模型的系数估计应该是近似估计,为了能和OLS回归系数进行对比,需要设置参数thresh,这个值越小越好,得到的岭回归系数中最后一列即为OLS回归的系数。
    2. 虽然调整thresh的值可以对应出OLS的回归系数,但是lm.ridge和glmnet函数对于不同lambda值对应的岭回归系数输出也不同。
    3. 由于本例中数据已经标准化,所以尝试可以发现,是否设置standardize=F,glmnet的输出结果没有变化。

    综上,岭回归函数glmnet默认是对因变量和自变量均进行标准化处理,标准化仅使标准差为1,未进行中心化,使用时注意,确定出最优的lambda后,岭回归模型最好用非标准化变量的模型。

    画岭迹图

    《统计学习导论 基于R应用》图6-4,图6-6

    图6-4 《统计学习导论 基于R语言的应用》P182

    6-4

    #图6-4	《统计学习导论 基于R语言的应用》P182
    library(glmnet)	#加载包,用于回归lm.ridge
    library(car)
    library(ISLR)	#加载包,调用数据
    attach(Credit)	#使用数据
    str(Credit)
    Cre<-data.frame(Credit)
    for(i in 1:12)
    	Cre[,i]=as.numeric(Credit[,i])
    #将Credit中factor类型的转化为numeric类型,为了标准化
    #也可用model.matrix,即  Cre<-model.matrix(Balance~.-ID,Credit)[,-1]
    
    Cre.s<-scale(Cre)	#标准化
    
    x<-data.matrix(Cre.s[,2:11])
    Balance<-Cre[,12]	#这里选取的是未标准化的因变量!
    
    data.new<-data.frame("Balance"=Balance,x)	#不对因变量进行标准化,只标准化自变量
    str(data.new)
    
    #OLS最小二乘回归(用于画右图的横轴)
    lm<-lm(Balance~.,data=data.new)
    lm
    beta_lm<-coef(lm)[2:11]	#舍去截距项
    beta_lm
    
    #ridge回归
    l1<-seq(0,10,0.01)
    l2<-seq(10.01,10000,1)
    lam2<-append(l1,l2)	#λ,受到数量限制所以这样生成
    lam2<-seq(0,10
    
    ridge<-glmnet(x,Balance,alpha=0, lambda=lam2, standardize=T, intercept = F)
    
    beta_ridge<-t(coef(ridge)[2:11,])
    colnames(beta_ridge)
    
    log_lambda_ridge<-log(ridge$lambda)/log(10)	#左图的横轴
    
    par(mfrow=c(1,2))
    
    #画图6-4
    linetype2<-c(1,2,3,1,1,1,1,4,1,1)	#线类型
    color2<-c("black","red","blue","grey","grey","grey","grey","orange","grey" ,"grey")	#线颜色
    
    #6-4左图
    plot(log_lambda_ridge, log_lambda_ridge ,type="n",xlab="λ",ylab="Standardized Coefficients",ylim=c(-300,400),xlim=c(-2,4),main="Ridge")	
    for(i in 1:10)
    	lines(log_lambda_ridge,beta_ridge[,i],lty=linetype2[i],col=color2[i],lwd=2.5)
    
    legend("topright",lty=c(1,2,3,4), legend=c("Income","Limit","Rating","Student"),col=c("black","red","blue","orange") ,lwd=2.5)
    
    #6-4右图
    beta_r_2<-sqrt(rowSums(beta_ridge^2))
    beta_l_2<-sqrt(sum(beta_lm^2))	
    plot_X<-beta_r_2 / beta_l_2
    
    plot(plot_X, plot_X, type="n",xlab="||β^R_λ||2  / ||β||2 ",ylab="Standardized Coefficients",ylim=c(-300,400),xlim=c(0,1),main="Ridge")
    for(i in 1:10)
    	lines(plot_X,beta_ridge[,i],lty=linetype2[i],col=color2[i],lwd=2.5)	
    
    

    图6-6《统计学习导论 基于R语言的应用》P184

    6-6

    #lasso回归
    lam3<-seq(0,6000,0.1)	#λ,受到数量限制所以这样生成
    lasso<-glmnet(x,Balance,alpha=1, lambda=lam3, standardize=T, intercept = F)	#和ridge的区别在于alpha
    
    beta_lasso<-t(coef(lasso)[2:11,])
    
    log_lambda_lasso<-log(lasso$lambda)/log(10)	#左图的横轴
    
    par(mfrow=c(1,2))
    
    #画图6-6
    #6-6左图
    plot(log_lambda_lasso, log_lambda_lasso, type="n",xlab="λ",ylab="Standardized Coefficients",ylim=c(-300,400),xlim=c(log_lambda_lasso[60000-1],max(log_lambda_lasso)),main="Lasso")
    for(i in 1:10)
    	lines(log_lambda_lasso,beta_lasso[,i],lty=linetype2[i],col=color2[i],lwd=2.5)
    
    #6-6右图
    beta_La_2<-rowSums(abs(beta_lasso))
    beta_l_2<-sum(abs(beta_lm))	
    plot_X_2<-beta_La_2 / beta_l_2
    
    plot(plot_X_2, plot_X_2, type="n",xlab="||β^L_λ||1  / ||β||1 ",ylab="Standardized Coefficients",ylim=c(-300,400),xlim=c(0,1),main="Lasso")
    for(i in 1:10)
    	lines(plot_X_2,beta_lasso[,i],lty=linetype2[i],col=color2[i],lwd=2.5)	
    
    legend("bottomleft",lty=c(1,2,3,4), legend=c("Income","Limit","Rating","Student"),col=c("black","red","blue","orange") ,lwd=2.5)
    
    detach(Credit)
    

    论文复刻《基于岭回归和LASSO回归…安徽省财政收入影响因素分析_朱海龙》

    library("readxl")
    data<-read_xlsx("论文复刻数据.xlsx",sheet="data")
    str(data)
    
    
    ##描述统计
    summary(data[2:16])	#描述统计,包括最小值、最大值、中位数、平均数
    
    SD<-c(1:15)*0	#标准差
    for(i in 1:15)	SD[i]<-sd(as.numeric(unlist(data[,i+1])))
    
    #为输出便捷,分别计算最大值、最小值等
    Min<-c(1:15)*0	#最小值
    for(i in 1:15)	Min[i]<-min(data[,i+1])
    
    Max<-c(1:15)*0	#最大值
    for(i in 1:15)	Max[i]<-max(data[,i+1])
    
    Median<-c(1:15)*0	#中位数
    for(i in 1:15)	Median[i]<-median(as.numeric(unlist(data[,i+1])))
    
    Mean<-c(1:15)*0	#平均数
    for(i in 1:15)	Mean[i]<-mean(as.numeric(unlist(data[,i+1])))
    
    describe<-data.frame(Min,Max,Median,Mean,SD)
    rownames(describe)=names(data)[2:16]	#给列命名
    
    write.csv(describe, file = "描述统计结果.csv")
    
    
    
    
    #三、实证分析
    ##(一)多重共线性检验
    ###为了消除异方差的影响,对财政收入数据进行对数化处理。
    logY<-log(data[,2])
    data.log<-data.frame(logY,data[,3:16])
    names(data.log)[1]="logY"
    
    ###标准化处理
    data.s<-data.frame(scale(data.log))
    str(data.s)	
    
    ###对所有变量进行线性回归
    lm<-lm(logY~.,data=data.s)
    result.lm<-summary(lm)
    Coef.lm<-coef(lm)
    
    ###kappa值判断变量间是否具有严重的多重共线性
    kappa<-kappa(lm,exact=T)
    
    ###方差膨胀因子(VIF)检验共线性的强弱
    library(car)
    VIF<-vif(lm)
    
    ##(二)岭回归分析
    library(ridge)
    Ridge<-linearRidge(logY~.,data=data.s)
    result.Ridge<-summary(Ridge)
    Coef.Ridge<-coef(Ridge)
    
    
    ##(三) LASSO 回归分析
    library(lars)
    X<-data.matrix(data.s[,2:15])	
    Lasso<-lars(X,data.s[,1])
    result.Lasso<-summary(Lasso)
    
    
    minCpstep<-which.min(Lasso$Cp)	#哪个Cp最小。应该是第22个(还是21?为何这个会有两个结果,但在下一步不出错?)
    #length(minCpstep)
    
    Coef.Lasso<-coef.lars(Lasso,mode="step",s=minCpstep)	#回归系数。
    
    plot(Lasso)	#图1 LASSO 回归方法下的变量选择
    
    ###筛选出X2、X3、X4、X5、X6、X8、X10、X11、X12、 X13 、X14共 11个变量,再进行线性回归,
    lm.Lasso<-lm(logY~X2+X3+X4+X5+X6+X8+X10+X11+X12+X13+X14,data=data.s)
    result.Lasso.lm<-summary(lm.Lasso)	#通过显著性检验的有X2、X3、X5、X11、X12、X13、X14。
    
    Coef.Lasso.lm<-coef(lm.Lasso)
    
    #结果输出
    ##VIF值输出到表格
    write.csv(VIF,"共线性检验VIF.csv")
    write.csv(kappa,"共线性检验kappa.csv")
    
    
    ##回归系数输出到表格"回归系数.csv"
    Coef<-data.frame(	Coef.lm,
    			Coef.Ridge,
    			"Coef.Lasso"=append(0,Coef.Lasso),
    			"Coef.Lasso.lm"=c(Coef.Lasso.lm[1],0,Coef.Lasso.lm[2:6],0,Coef.Lasso.lm[7],0,Coef.Lasso.lm[8:12]))
    write.csv(Coef,"回归系数.csv")
    
    ##lasso回归结果单独输出到表格"回归结果.csv"
    write.csv(result.Lasso,"Lasso回归结果.csv")
    
    
    ##具体回归结果输出到"回归结果.txt"
    sink("回归结果.txt")
    		cat("\n","简单线性回归=================","\n")
    	print(result.lm)
    
    		cat("\n","\n","共线性检验=================","\n")
    	cat("Kappa=",kappa,"\n")
    	cat("VIF=",VIF,"\n")
    
    		cat("\n","\n","岭回归=================","\n")
    	print(result.Ridge)
    
    		cat("\n","\n","Lasso回归=================","\n")
    	print(result.Lasso)
    
    		cat("\n","\n","Lasso回归结果下的线性回归=================","\n")
    	print(result.Lasso.lm)
    sink()
    
    更多相关内容
  • R语言实现LASSO回归

    万次阅读 多人点赞 2019-03-23 19:52:53
    Lasso回归又称为套索回归,是Robert Tibshirani于1996年提出的一种新的变量选择技术。Lasso是一种收缩估计...R语言中有多个包可以实现Lasso回归,这里使用lars包实现。 1.利用lars函数实现lasso回归并可视化显示 x...

    Lasso回归又称为套索回归,是Robert Tibshirani于1996年提出的一种新的变量选择技术。Lasso是一种收缩估计方法,其基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0的回归系数,进一步得到可以解释的模型。R语言中有多个包可以实现Lasso回归,这里使用lars包实现。

    1.利用lars函数实现lasso回归并可视化显示

    x = as.matrix(data5[, 2:7]) #data5为自己的数据集
    y = as.matrix(data5[, 1])
    lar1 <-lars(x,y,type = "lasso")
    lar1 #查看得到的结果
    

    在这里插入图片描述
    从图1可以看出通过lasso回归得到的R^2为0.426,较低。标红的部分是在进行lasso回归时,自变量被选入的顺序。下面用图表的形式显示。

    plot(lar1) 
    

    在这里插入图片描述
    可以看到图2中的竖线对应于lasso中迭代的次数,对应的系数值不为0的自变量即为选入的,竖线的标号与图1中的step相对应。

    2.选取cp值最小时对应的模型,获取模型对应系数

    对于选取最小cp值对应的模型可以通过两种方式实现:
    (1)显示所有cp值,从中挑选最小的

    summary(lar1) #输出lasso对象的细节,包括Df、RSS和Cp,其中Cp是MallowsCp统计量,通常选取Cp最小的那个模型
    

    在这里插入图片描述
    图3显示了lasso回归中所有的cp值,选择最小的,即上图标红的部分,对应的df=3,最前面一列对应迭代次数(即步数),step=2 。

    (2)直接选取最小的cp值

    lar1$Cp[which.min(lar$Cp)]  #选择最小Cp,结果如下:
    

    在这里插入图片描述
    与图3中标红的部分结果一样,但是要注意,2表示的是step大小。

    3.选取cp值最小时对应的模型系数

    (1)获取所有迭代系数,根据step大小选择cp值最小对应的自变量系数值

    lar1$beta #可以得到每一步对应的自变量对应的系数
    

    在这里插入图片描述
    图4标红的部分就是step=2对应的cp值最小时对应的模型的自变量的系数

    (2)获取指定迭代次数(即步数)对应的自变量的系数,可以通过下面的代码实现:

    coef <-coef.lars(lar,mode="step",s=3) #s为step+1,也比图2中竖线为2的迭代次数对应,与图3中df值相等;s取值范围1-7.
    coef[coef!=0] #获取系数值不为零的自变量对应的系数值
    

    在这里插入图片描述
    与图4中标红部分一样。

    4.获取截距的系数
    通过第4部分可以获取cp值最小时对应的自变量的系数,但是没有办法获取对应模型的截距值,下面的代码可以获取对应模型的截距值。

    predict(lar1,data.frame(SHDI=0,MIDU=0,LSI=0,CONTAF=0,MPS=0,PD=0),s=3) #s的含义和第4部分求取coef中的s相同,代表第几次迭代对应的模型的截距值。且data.frame中自变量的数量和数据框中进行lasso拟合的自变量数目相同,都要写上。
    

    上面的代码就是求取cp值最小时对应的模型的截距值,结果如下:
    在这里插入图片描述
    总结:
    通过上面的4步可以利用R语言实现Lasso回归,并可以获取模型相应的系数和截距值。

    展开全文
  • p-value: 7.861e-05 LASSO 相关 视频:Lasso回归、岭回归等正则化回归数学原理及R语言实例 Lasso回归、岭回归等正则化回归数学原理及R语言实例 plot(lasso) 使用BIC选择路径上的最佳点 ## df MSE bic ## Intercept ...

    原文链接:http://tecdat.cn/?p=10997

    原文出处:拓端数据部落公众号

    模拟假数据集

     set.seed(0820)
    
     n         <- 50
     p         <- 25
     beta      <- rep(0,p)
     beta[1:5] <- 1:5/5
    
     X <- matrix(rnorm(n*p),n,p)
     X <- scale(X)
    
     Xb <- X%*%beta
     Y <- X%*%beta+rnorm(n)
     Y <- Y-mean(Y)
    
     plot(cor(X,Y),xlab="j",ylab="Cor(Y,X_j)",main="Sample correlations",cex=2)
    

    标准最小二乘法

    
     summary(ols)
    
    ## 
    ## Call:
    
    ## 
    ## Residuals:
    ##      Min       1Q   Median       3Q      Max 
    ## -2.54540 -0.38971 -0.00738  0.49058  1.90900 
    ## 
    ## Coefficients:
    ##               Estimate Std. Error t value Pr(>|t|)    
    ## (Intercept) -3.914e-16  1.648e-01   0.000  1.00000    
    ## X1           6.020e-01  2.097e-01   2.871  0.00841 ** 
    ## X2           5.924e-01  2.013e-01   2.944  0.00709 ** 
    ## X3          -1.106e-01  2.290e-01  -0.483  0.63363    
    ## X4           1.117e+00  2.058e-01   5.427 1.42e-05 ***
    ## X5           1.234e+00  2.190e-01   5.633 8.46e-06 ***
    ## X6          -3.225e-01  2.322e-01  -1.389  0.17755    
    ## X7          -1.954e-01  2.150e-01  -0.909  0.37231    
    ## X8           1.466e-01  2.532e-01   0.579  0.56803    
    ## X9           4.678e-02  2.353e-01   0.199  0.84409    
    ## X10         -2.779e-01  2.151e-01  -1.292  0.20864    
    ## X11         -7.308e-02  2.553e-01  -0.286  0.77717    
    ## X12         -4.424e-02  2.642e-01  -0.167  0.86839    
    ## X13         -1.078e-01  2.101e-01  -0.513  0.61270    
    ## X14          3.000e-01  2.263e-01   1.326  0.19743    
    ## X15          2.396e-01  2.480e-01   0.966  0.34365    
    ## X16         -1.178e-01  2.285e-01  -0.515  0.61100    
    ## X17         -2.409e-01  2.280e-01  -1.057  0.30104    
    ## X18         -3.191e-01  2.396e-01  -1.332  0.19551    
    ## X19         -1.207e-01  2.372e-01  -0.509  0.61553    
    ## X20          1.721e-01  2.179e-01   0.790  0.43733    
    ## X21         -1.677e-02  2.144e-01  -0.078  0.93831    
    ## X22          3.706e-02  2.145e-01   0.173  0.86426    
    ## X23          3.233e-02  2.108e-01   0.153  0.87938    
    ## X24         -1.541e-01  2.343e-01  -0.658  0.51691    
    ## X25         -1.970e-01  1.965e-01  -1.002  0.32622    
    ## ---
    ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    ## 
    ## Residual standard error: 1.166 on 24 degrees of freedom
    ## Multiple R-squared:  0.8416, Adjusted R-squared:  0.6767 
    ## F-statistic: 5.102 on 25 and 24 DF,  p-value: 7.861e-05
    

     LASSO

     相关 视频:Lasso回归、岭回归等正则化回归数学原理及R语言实例

    Lasso回归、岭回归等正则化回归数学原理及R语言实例

     

    
     plot(lasso)
    

    使用BIC选择路径上的最佳点

    
    
    ##           df       MSE      bic
    ## Intercept  1 4.1174138 74.67329
    ##            2 3.8224639 74.86881
    ##            3 1.9171062 44.27691
    ##            4 1.9136899 48.09976
    ##            5 1.5118875 40.22806
    ##            6 1.3016560 36.65400
    ##            7 1.2693779 39.31051
    ##            8 1.2124870 40.92986
    ##            9 1.1814011 43.54326
    ##           10 1.1728179 47.09070
    ##           11 1.1016346 47.87201
    ##           12 1.0050559 47.19643
    ##           13 0.9867377 50.18875
    ##           14 0.9636054 52.91465
    ##           15 0.8686856 51.64164
    ##           16 0.7777734 50.02637
    ##           17 0.7700763 53.44111
    ##           18 0.7663544 57.11089
    ##           19 0.7510361 60.01336
    ##           20 0.7451598 63.53263
    ##           19 0.7196873 57.88151
    ##           20 0.7149486 61.46323
    ##           21 0.7141592 65.32002
    ##           20 0.7051259 60.77152
    ##           21 0.6875391 63.42065
    ##           22 0.6764241 66.51776
    ##           23 0.6739037 70.24313
    ##           24 0.6570954 72.89225
    ##           25 0.6564105 76.75213
    ##           26 0.6520870 80.33373
    
    
    

    
    

    结果

     # beta真值
     
    
    ##  [1] 0.2 0.4 0.6 0.8 1.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
    ## [18] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
    
     #使用最小二乘预测beta
     round(beta_ols,3)
    
    ##     X1     X2     X3     X4     X5     X6     X7     X8     X9    X10 
    ##  0.602  0.592 -0.111  1.117  1.234 -0.323 -0.195  0.147  0.047 -0.278 
    ##    X11    X12    X13    X14    X15    X16    X17    X18    X19    X20 
    ## -0.073 -0.044 -0.108  0.300  0.240 -0.118 -0.241 -0.319 -0.121  0.172 
    ##    X21    X22    X23    X24    X25 
    ## -0.017  0.037  0.032 -0.154 -0.197
    
     # LASSO预测beta
     round(beta_lasso,3)
    
    ##  [1]  0.238  0.238  0.000  0.900  0.786  0.000  0.000  0.000  0.000  0.000
    ## [11]  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
    ## [21]  0.000  0.000  0.000  0.000 -0.075
    
     #MSE - OLS
     mean((beta-beta_ols)^2)
    
    ## [1] 0.06204978
    
     #MSE - LASSO
     mean((beta-beta_lasso)^2)
    
    ## [1] 0.01795647


    最受欢迎的见解

    1.R语言多元Logistic逻辑回归 应用案例

    2.面板平滑转移回归(PSTR)分析案例实现

    3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

    4.R语言泊松Poisson回归模型分析案例

    5.R语言回归中的Hosmer-Lemeshow拟合优度检验

    6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

    7.在R语言中实现Logistic逻辑回归

    8.python用线性回归预测股票价格

    9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标

    展开全文
  • 非负Lasso回归R语言实现-附件资源
  • Lease Absolute Shrinkage ...在这组练习中,我们将在R中实现LASSO回归。 练习1 加载糖尿病数据集。这有关于糖尿病的病人水平的数据。数据为n = 442名糖尿病患者中的每个人获得了10个基线变量、年龄、性别、...

    原文链接:http://tecdat.cn/?p=22721 

    原文出处:拓端数据部落公众号

    Lease Absolute Shrinkage and Selection Operator(LASSO)在给定的模型上执行正则化和变量选择。根据惩罚项的大小,LASSO将不太相关的预测因子缩小到(可能)零。因此,它使我们能够考虑一个更简明的模型。在这组练习中,我们将在R中实现LASSO回归。

    相关 视频:Lasso回归、岭回归等正则化回归数学原理及R语言实例

    Lasso回归、岭回归等正则化回归数学原理及R语言实例

    练习1

    加载糖尿病数据集。这有关于糖尿病的病人水平的数据。数据为n = 442名糖尿病患者中的每个人获得了10个基线变量、年龄、性别、体重指数、平均血压和6个血清测量值,以及感兴趣的反应,即一年后疾病进展的定量测量。"
    接下来,加载包用来实现LASSO。

    head(data)

    练习2

    数据集有三个矩阵x、x2和y。x是较小的自变量集,而x2包含完整的自变量集以及二次和交互项。
    检查每个预测因素与因变量的关系。生成单独的散点图,所有预测因子的最佳拟合线在x中,y在纵轴上。用一个循环来自动完成这个过程。
     

    summary(x)

    for(i in 1:10){
      plot(x[,i], y)
      abline(lm(y~x[,i])
    }

     

    练习3

    使用OLS将y与x中的预测因子进行回归。我们将用这个结果作为比较的基准。

    lm(y ~ x)

     

    练习4

    绘制x的每个变量系数与β向量的L1准则的路径。该图表明每个系数在哪个阶段缩减为零。

    
    plot(model_lasso)

    练习5

    得到交叉验证曲线和最小化平均交叉验证误差的lambda的值。

    plot(cv_fit)
    

    练习6

    使用上一个练习中的lambda的最小值,得到估计的β矩阵。注意,有些系数已经缩减为零。这表明哪些预测因子在解释y的变化方面是重要的。

    > fit$beta
    

    练习7

    为了得到一个更简明的模型,我们可以使用一个更高的λ值,即在最小值的一个标准误差之内。用这个lambda值来得到β系数。注意,现在有更多的系数被缩减为零。

    lambda.1se

     

    beta

    练习8

    如前所述,x2包含更多的预测因子。使用OLS,将y回归到x2,并评估结果。

    summary(ols2)
    

     

    练习9

    对新模型重复练习-4。

    lasso(x2, y)
    plot(model_lasso1)

     

    练习10

    对新模型重复练习5和6,看看哪些系数被缩减为零。当有很多候选变量时,这是缩小重要预测变量的有效方法。

    plot(cv_fit1)

    beta

     


    最受欢迎的见解

    1.R语言多元Logistic逻辑回归 应用案例

    2.面板平滑转移回归(PSTR)分析案例实现

    3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

    4.R语言泊松Poisson回归模型分析案例

    5.R语言回归中的Hosmer-Lemeshow拟合优度检验

    6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

    7.在R语言中实现Logistic逻辑回归

    8.python用线性回归预测股票价格

    9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标

    展开全文
  • 在基因数据的分析中,经常会用到...接下来以线性回归为例介绍其在R语言中的实现,当然在logistic回归、cox回归也是可用lasso的。实例数据data("longley")R包(glmnet)library(glmnet)我们用交叉验证来确定lamda的值...
  • r语言建立逻辑回归临床预测模型 + lasso回归变量筛选+ roc曲线绘制+roc统计检验
  • 手把手教你使用R语言LASSO 回归

    万次阅读 多人点赞 2020-12-25 17:29:28
    LASSO 回归也叫套索回归,是通过生成一个惩罚函数是...今天我们来讲讲怎么使用R语言通过LASSO 回归构造预测模型。 首先我们要下载R的glmnet包,由 LASSO 回归的发明人,斯坦福统计学家 Trevor Hastie 领衔开发。 加载
  • 本文基于R语言编写Lasso回归方法对水稻产量和产量相关性状进行全基因组预测分析。
  • R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数(lasso regression coefficients)及可视化、lasso回归模型分类评估计算(混淆矩阵、accuracy、Deviance)
  • 我们在既往文章《手把手教你使用R语言做LASSO 回归》中介绍了glmnet包进行lasso回归,后台不少粉丝发信息向我问到分类变量处理的问题,我后面查了一下资料之前文章分类变量没有处理,非常抱歉。现在来重新聊一聊分类...
  • 基于R语言实现Lasso回归分析

    万次阅读 多人点赞 2017-03-13 16:54:28
    R中,读取数据,然后将数据转成矩阵形式 加载lars包,先安装 调用lars函数 确定Cp值最小的步数 确定筛选出的变量,并计算回归系数具体代码如下: 需要注意的地方: 1、数据读取的方法,这里用的file....
  • R语言lasso

    千次阅读 2022-03-26 23:58:26
    R语言lasso
  • mydata$status) x=model.matrix(surv~.,mydata)[,-c(1,2,30,31)] y=surv set.seed(12) lasso2(x,y,family="cox", nlambda=100, alpha=1) #cv.glmnet():交叉验证函数 lasso2 coef(lasso2) plot(lasso2) table(mydata...
  • 这篇文章中我们可以编写自己的代码来计算套索(lasso)回归
  • Lasso-Logistic回归-R语言应用详解

    万次阅读 多人点赞 2019-09-01 16:02:37
    Lasso-R示例 LASSO(Least Absolute Shrinkage and Selection Operator)是线性回归的一种缩减方式,本文用R语言对真实医学数据建模,包括分类变量的处理、lasso建模、ROC评估等
  • 基于R语言lars包的改写,详细实现lasso模型和adaptive lasso模型,并使用两个模型分别研究了幸福指数的影响因素,得出:Adaptive lasso模型具有更强的Oracle性质。
  • codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 1.166 on 24 degrees of freedom ## Multiple R-squared: 0.8416, Adjusted R-squared: 0.6767 ## F-statistic: 5.102 on ...
  • 然而LASSO对以上的数据类型都适合,也可以说LASSO 回归的特点是在拟合广义线性模型的同时进行变量筛选(variable selection)和复杂度调整(regularization)。变量筛选是指不把所有的变量都放入模型中进行拟合,而是有...
  • 在一项临床研究中,想要筛选变量进行建模,查阅了相似的文献,文献作者思路是这样的:先使用Lasso回归对全数据集筛选自变量,再分训练集和测试集,用Logistic回归、随机森林、神经网络对筛选后的自变量进行建模和...
  • R语言:岭回归和LASSO回归

    千次阅读 多人点赞 2020-06-15 16:09:27
    岭回归和LASSO回归的原理就是在线性回归的基础上添加了2范数和1范数的惩罚项。这两个模型的关键点是找到一个合理的lambda系数,来平衡模型 的方差和偏差,从而得到比较符合实际的回归系数。 二、实验过程 1. 数据...
  • 正则化路径是在正则化参数lambda的值网格上计算套索LASSO或弹性网路惩罚的正则化路径。该算法速度快,可以利用输入矩阵x中的稀疏性,拟合线性、logistic和多项式、poisson和Cox回归模型。可以通过拟合模型进行各种...
  • 回归模型的介绍 岭回归模型用以解决自变量多于样本量或者自变量之间存在多重线性关系。添加l2正则项(惩罚项),但需要确定参数。 使用glmnet包中的glmnet函数可以确定,而根据cv.glmnet函数则可以实现岭回归...
  • 贝叶斯回归分位数在最近的文献中受到广泛关注,本文实现了贝叶斯系数估计和回归分位数(RQ)中的变量选择,带有lasso和自适应lasso惩罚的贝叶斯。还包括总结结果、绘制路径图、后验直方图、自相关图和绘制分位数图的...
  • 介绍 Glmnet是一个通过惩罚最大似然来拟合广义线性...它符合线性,逻辑和多项式,泊松和Cox回归模型。可以从拟合模型中做出各种预测。它也可以适合多响应线性回归。 glmnet算法采用循环坐标下降法,它连续优...
  • R语言LASSO回归和LAR算法

    千次阅读 2019-11-16 12:45:40
    LASSO介绍 Tibshirani(1996)提出了LASSO(The Least Absolute Shringkage and Selectionator operator)算法 通过构造一个一阶惩罚函数获得一个精炼的模型;通过最终确定一些指标(变量)的系数为零(岭回归估计...
  • 拟合岭回归和LASSO回归,解释系数,并对其在λ范围内的变化做一个直观的可视化。 # 加载CBI数据 # 子集所需的变量(又称,列) CBI_sub <- CBI # 重命名变量列(节省大量的输入) names(CBI_sub)[1] <- "cbi...
  • 3.2 lasso回归 lasso是岭回归的一种替代正则化方法。它们之间的差别体现在惩罚项里,岭回归是将有效的将系数压缩到更小的值,而lasso最小化的是系数的绝对值之和,由于lasso会把某些系数完全收缩到0,所以它兼具了...
  • R构建lasso回归模型并获得最佳正则化系数 目录 R构建lasso回归模型并获得最佳正则化系数 数据加载 拟合LASSO回归模型 分析最终模型 数据加载 我们将使用MTCARS数据集,该数据集为R内置数据集。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,304
精华内容 921
关键字:

r语言lasso回归