R包glmnet是通过惩罚最大似然法拟合广义线性和类似模型的软件包。

1. 加载包和数据

#install.packages("glmnet", repos = "https://cran.us.r-project.org")library(glmnet)
ls("package:glmnet")# x = matrix(rnorm(100 * 20), 100, 20)*10
# y = rnorm(100)### 1. 加载包和数据
data(QuickStartExample)
x <- QuickStartExample$x
y <- QuickStartExample$y

2. 拟合模型

### 2. 拟合模型
fit = glmnet(x,y,alpha = 1,family = "gaussian",standardize=TRUE) # lasso回归
##glmnet主要参数说明:
# alpha: elasticnet mixing parameter,0≤α≤ 1,
# alpha=1(默认值) is the lasso penalty, and alpha=0 the ridge penalty.
# nlambda: 默认100
# lambda: 用户提供的lambda序列。默认是让程序根据nlambda和lambda计算的lambda序列
# standardize:数据是否要标准化处理,默认为TRUE
# intercept,线性模型的截距,默认为TRUE
# family:模型中使用的误差分布和链接函数,取值范围:"gaussian", "binomial",
# "poisson", "multinomial","cox", "mgaussian",默认为gaussian。#fit = glmnet(x,y,alpha = 0,family = "gaussian",standardize=TRUE) # Ridge回归
#fit = glmnet(x,y,alpha = 0.3,family = "gaussian",standardize=TRUE) # elasticnet# # 自定义lambdas
# lambdas <- 10^seq(2, -2, by = -.1) # 100和0.01之间
# fit = glmnet(x,y,alpha = 1,family = "gaussian",
#              lambda=lambdas,standardize=TRUE)class(fit) # [1] "elnet"  "glmnet"
print(fit)
# glmnet返回一系列模型供用户选择(不同lambda下训练好的模型)
## 输出结果解读:
# Df:the number of nonzero coefficients
# %dev:the percent deviance explained
# Lambda: the corresponding value of λ,可能小于指定的lambda数,由于算法停止规则# help(glmnet.control) # internal glmnet parameters

3.查看模型参数

### 3.查看模型参数
any(fit$lambda == 0.5)# 是否有此lambda值的模型(训练好的)# 所有lambda值下的模型参数
coef(fit)
# 指定lambda值下的模型参数
coef(fit,s = 0.01)
coef(fit,s = c(10,1,0.1))

4. 预测

### 4. 预测
# 不同lambda下模型的预测结果。注:一个lambda对应一个训练好的模型
predict(fit, newx = x[1:5,],type = "response")
# type:“link”, “response”, “coefficients”, “nonzero”其中的一个# 指定参数lambda,模型的预测结果
predict(fit, newx = x[1:5,], type = "response", s = 0.00351)
predict(fit, newx = x[1:5,], type = "response", s = 0.5)

5. 模型拟合过程作图

### 5. 模型拟合过程作图
plot(fit,label = TRUE)
plot(fit, xvar = "lambda", label = TRUE)
## 参数 xvar: “norm” for the ℓ1-norm of the coefficients (default),
# “lambda” for the log-lambda value and “dev” for %deviance explained
## 参数label: 是否显示变量名

6. 交叉验证确定模型的最佳lambda(超参数)

### 6. 交叉验证确定模型的最佳lambda(超参数)
# glmnet返回一系列模型供用户选择
cvfit <- cv.glmnet(x, y) # 默认10倍交叉验证(nfolds = 10)。
# 返回cv.glmnet对象,包含交叉验证的所有fits要素统计。
# lambda.min:is the value of λ that gives minimum mean cross-validated error
# lambda.1se: is the value of λ that gives the most regularized model such that
# the cross-validated error is within one standard error of the minimumplot(cvfit)cvfit$lambda.min # 交叉验证平均误差最小时模型的lambda
cvfit$lambda.1se
# 得到交叉验证平均误差最小的lambda时模型的系数(coefficients)
coef(cvfit, s = "lambda.min")
coef(cvfit) # 默认s = "lambda.1se"
coef(cvfit, s = "lambda.1se") predict(cvfit, newx = x[1:5,], s = "lambda.min")
predict(cvfit, newx = x[1:5,])

7. Cox 回归

### 7. Cox 回归
# Cox回归
data(CoxExample)
fit = glmnet(CoxExample$x,CoxExample$y,alpha = 1,family = "cox")
## alpha = 1,用于变量选择,去除系数为零的变量cvfit <- cv.glmnet(CoxExample$x,CoxExample$y,alpha = 1,family = "cox")
# type.measure :deviance# cvfit <- cv.glmnet(CoxExample$x,CoxExample$y,
#                    alpha = 1,family = "cox",
#                    type.measure= "C")plot(cvfit)# type.measure="C" is Harrel's concordance measure
cvfit$lambda.min
coef(cvfit,s = cvfit$lambda.min)
coef(cvfit,s = cvfit$lambda.1se)# 预测生存时间
predict(cvfit, newx = CoxExample$x[1:10, ], s = cvfit$lambda.min,type = "response")
# type:“link”, “response”, “coefficients”, “nonzero”其中的一个## 和survival包coxph比较
library(survival)
set.seed(1)
nobs <- 100; nvars <- 15
x <- matrix(rnorm(nobs * nvars), nrow = nobs)# create response
ty <- rep(rexp(nobs / 5), each = 5)
tcens <- rbinom(n = nobs, prob = 0.3, size = 1)
y <- Surv(ty, tcens)glmnet_fit <- glmnet(x, y, family = "cox", lambda = 0)
# lambda =0, 没有正则项,等于coxph_fit
coxph_fit <- coxph(y ~ x)
# glmnet函数,当lambda =0, 没有正则项,等于coxph_fit
plot(coef(glmnet_fit), coef(coxph_fit))
abline(0, 1)

8. 其他回归实例

###8. 其他回归实例## 当y仅包含两种分类时可以使用二分类模型,
data(BinomialExample)
x <- BinomialExample$x
y <- BinomialExample$y
fit = glmnet(x,y,alpha = 1,family = "binomial")
plot(fit,label = TRUE)
#指定lambda在0.05和0.01时预测新样本的类别,type = "class"指定输出值为类别
predict(fit, newx = x[1:5,], type = "class", s = c(0.05, 0.01))
#交叉验证
#cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "class")
cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "auc")
plot(cvfit)## 当y为多分类时
data(MultinomialExample)
x <- MultinomialExample$x
y <- MultinomialExample$y
#拟合模型
fit = glmnet(x, y, family = "multinomial", type.multinomial = "grouped")
predict(fit, newx = x[1:10,], type = "class")
#交叉验证
cvfit=cv.glmnet(x, y, family="multinomial", type.multinomial = "grouped", parallel = TRUE)
#cvfit = cv.glmnet(x, y, family = "multinomial", type.measure = "class")
# Only deviance, class, mse, mae available as type.measure for Multinomial models;
#绘图展示
plot(fit, xvar = "lambda", label = TRUE, type.coef = "2norm")
plot(cvfit)#预测模型
predict(cvfit, newx = x[1:10,], s = "lambda.min", type = "class")

R语言glmnet包拟合广义线性模型相关推荐

  1. 《R语言实战》:广义线性模型R实现

    广义线性模型 理论部分取自<R语言实战>: 当因变量结果为计数型变量(非负有限值).二值变量或多分类变量时进行适用广义线性模型. 标准线性模型中假设y符合正态分布,而广义线性模型使用连接函 ...

  2. R语言glmnet包lasso回归中分类变量的处理

    我们在既往文章<手把手教你使用R语言做LASSO 回归>中介绍了glmnet包进行lasso回归,后台不少粉丝发信息向我问到分类变量处理的问题,我后面查了一下资料之前文章分类变量没有处理, ...

  3. r语言glmnet包系数显示不全_第一章: R语言介绍

    1:R语言的用途 R也是一种为统计计算和绘图而生的语言和环境,R是一个全面的统计研究平台,提供了各式各样的数据分析技术. 2:R语言的使用 R语句由函数和赋值构成,命令提示符为 > ⑴赋值: R ...

  4. R语言使用glmnet包拟合lasso-cox回归模型(包含生存时间和结果标签)、使用lasso-cox模型进行特征筛选、使用sapply函数对特征数据进行标准化z-score

    R语言使用glmnet包拟合lasso-cox回归模型(包含生存时间和结果标签).使用lasso-cox模型进行特征筛选.使用sapply函数对特征数据进行标准化z-score 目录

  5. R语言使用glmnet包拟合lasso-cox回归模型(生存时间和结果标签)、lasso-cox模型进行特征筛选、plot函数可视化cv.glmnet模型获得的最佳lambda曲线位置及其1个标准差线

    R语言使用glmnet包拟合lasso-cox回归模型(包含生存时间和结果标签).使用lasso-cox模型进行特征筛选.plot函数可视化cv.glmnet模型获得的最佳lambda曲线位置及其1个 ...

  6. R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理、计算RMSE、R方、调整R方、可视化模型预测值与真实值的曲线)

    R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理.计算RMSE.R方.调整R方.可视化模型预测值与真实值的曲线) ...

  7. R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数及可视化、lasso回归模型分类评估计算(混淆矩阵、accuracy、Deviance)

    R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数(lasso regression coefficients)及可视化.lasso回归模型分类评估计算(混淆矩阵.accura ...

  8. R语言glmnet拟合岭回归模型实战:岭回归模型的模型系数(ridge regression coefficients)及可视化、岭回归模型分类评估计算(混淆矩阵、accuracy、Deviance)

    R语言glmnet拟合岭回归模型(ridge regression)实战:岭回归模型的模型系数(ridge regression coefficients)及可视化.岭回归模型分类评估计算(混淆矩阵. ...

  9. R语言glmnet交叉验证选择(alpha、lambda)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值、模型最优的lambda值,最终模型的拟合与评估

    R语言glmnet交叉验证选择(alpha参数和lambda参数)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值.弹性网络(elasticNet)模型最优的 ...

最新文章

  1. 收藏:存储知识全面总结
  2. 阿里P7架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结
  3. 对话王晶:音频人才亟待培养,高水平研究人员尤其欠缺
  4. maya 替换名称_maya替换对象,MAYA
  5. java某校在积极推行无人监考,结构化面试题:高校无人监考你怎么看?
  6. Linux系统安全基本措施及应用(关于账户安全以及sudo权限,安全认证等)
  7. ps新手零基础知识入门教程学习_图文
  8. python灰度雷达图_python 雷达图
  9. iOS-苹果官方开源网站;objc、Runloop、GCD、OC等开源代码
  10. Win10系统输入法(微软拼音)切换简体和繁体
  11. 基于微信小程序在线电子书阅读系统 电子书小程序毕业设计 毕业论文 开题报告和效果图参考
  12. Kali 开机报错解决方案
  13. 经乱离后天恩流夜郎忆旧游书怀赠江夏韦太守良宰
  14. 中文乱码——编码问题
  15. 美国造出最大电视 4K电视262英寸超大屏
  16. Java个人对接口的理解
  17. Unity3D 常用 英文单词
  18. ScyllaDB 1.2 国内安装更新源发布
  19. python 接口自动化测试王浩然 pdf_7-python接口自动化测试.pdf
  20. firefox 书签备份和还原

热门文章

  1. python中for循环缩进_Python减少循环层次和缩进的技巧分析
  2. 神经网络中参数量parameters和FLOPs计算
  3. sql查询父节点所有子节点id_5招搞定SQL棘手问题,同事看到直呼“内行”
  4. python读取大文件目录_Python读取系统文件夹内所有文件并统计数量的方法
  5. 3D IoU-Net:三维目标检测预测IoU
  6. 面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)...
  7. CVPR 2021|三维视觉相关论文汇总
  8. linux 安装jdk tar.gz
  9. OpenCV java 图片处理,蒙太奇图片(13)
  10. numpy 中的 squeeze() 函数