R语言实现岭回归的示例代码

岭参数的一般选择原则

  • 选择k(或lambda)值,使得:
  • 各回归系数的岭估计基本稳定
  • 用最小二乘估计时符号不合理的回归系数,其岭回归的符号变得合理
  • 回归系数没有不合乎实际意义的绝对值
  • 残差平方和增大的不多

用R语言进行岭回归

这里使用MASS包中的longley数据集,进行岭回归分析(longley数据集中的变量具有显著的多重共线性)。从而分析使用岭回归进行多重共线性的解决。

首相将longley数据集中的第一列数据命名为“y”,并使用岭回归创建线性模型

显示当y为因变量,其余各个变量为自变量时,直接构建线性模型的统计结果如下:

可见,虽然线性回归的Multiple R-squared: 0.9926是一个很高的值。但各个变量的显著性检验却很差,同样说明直接使用线性模型的拟合效果并不是很理想。

制定岭参数lamdba从0-0.1,每次变化的长度为0.001,并绘制岭迹图,如下:

详细岭回归的岭迹图如下:

从岭迹图中可以看出,当lambda=0时,图像不稳定。因此,可以说明这里的变量存在多重共线性。

现在需要对岭参数lambda进行选择:

可以看出,这里由于使用了不同的估计方法,从而可以得到几个不同的岭参数的估计。通常取GCV估计,或者结合几个结果进行取值。这里取lambda=0.006。

使用R的ridge包的时候,出现如下问题:

岭回归的问题

  • 岭参数计算方法太多,差异太大
  • 根据岭迹图进行变量筛选,随意性太大
  • 岭回归返回的模型(如果没哟经过变量筛选)包含所有的变量
  • 而且,对于使用岭回归进行变量的筛选,目前只能作为一个扩展计算视野的方法,而在实际使用中,会出现很多问题。

到此这篇关于R语言实现岭回归的示例代码的文章就介绍到这了,更多相关R语言 岭回归内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言实现LASSO回归的方法

    Lasso回归又称为套索回归,是Robert Tibshirani于1996年提出的一种新的变量选择技术.Lasso是一种收缩估计方法,其基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0的回归系数,进一步得到可以解释的模型.R语言中有多个包可以实现Lasso回归,这里使用lars包实现. 1.利用lars函数实现lasso回归并可视化显示 x = as.matrix(data5[, 2:7]) #data5为自己的数据集 y = as.ma

  • R语言线性回归知识点总结

    回归分析是一种非常广泛使用的统计工具,用于建立两个变量之间的关系模型. 这些变量之一称为预测变量,其值通过实验收集. 另一个变量称为响应变量,其值从预测变量派生. 在线性回归中,这两个变量通过方程相关,其中这两个变量的指数(幂)为1.数学上,线性关系表示当绘制为曲线图时的直线. 任何变量的指数不等于1的非线性关系将创建一条曲线. 线性回归的一般数学方程为 y = ax + b 以下是所使用的参数的描述 y是响应变量. x是预测变量. a和b被称为系数常数. 建立回归的步骤 回归的简单例子是当人的

  • R语言中逻辑回归知识点总结

    逻辑回归是回归模型,其中响应变量(因变量)具有诸如True / False或0/1的分类值. 它实际上基于将其与预测变量相关的数学方程测量二元响应的概率作为响应变量的值. 逻辑回归的一般数学方程为 y = 1/(1+e^-(a+b1x1+b2x2+b3x3+...)) 以下是所使用的参数的描述 y是响应变量. x是预测变量. a和b是作为数字常数的系数. 用于创建回归模型的函数是glm()函数. 语法 逻辑回归中glm()函数的基本语法是 glm(formula,data,family) 以下是

  • R语言逻辑回归、ROC曲线与十折交叉验证详解

    自己整理编写的逻辑回归模板,作为学习笔记记录分享.数据集用的是14个自变量Xi,一个因变量Y的australian数据集. 1. 测试集和训练集3.7分组 australian <- read.csv("australian.csv",as.is = T,sep=",",header=TRUE) #读取行数 N = length(australian$Y) #ind=1的是0.7概率出现的行,ind=2是0.3概率出现的行 ind=sample(2,N,rep

  • R语言如何进行线性回归的拟合度详解

    R语言进行线性回归的拟合度. 本文只是使用 R做回归计算,查看拟合度等,不讨论 R 函数的内部公式 在R中线性回归分析的函数是lm(),基本语法是 一元回归: lm(y ~ x,data) 多元回归:lm(y ~ x1+x2+x3-,data) 创建关系模型并获取系数 x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131) y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48) # 使用lm()函数

  • R语言逻辑回归深入讲解

    逻辑回归 > ###############逻辑回归 > setwd("/Users/yaozhilin/Downloads/R_edu/data") > accepts<-read.csv("accepts.csv") > names(accepts) [1] "application_id" "account_number" "bad_ind" "vehicle_

  • R语言如何实现多元线性回归

    R小白几天的摸索 红色为输入,蓝色为输出 输入数据 先把数据用excel保存为csv格式放在"我的文档"文件夹 打开R软件,不用新建,直接写 回归计算 求三个平方和 置信区间(95%) 散点图(最显著的因变量) 拟合图 一元线性回归 结果:(看图) 变量系数  Estimate 变量系数标准误  Std. Error T检验值  t value T检验p值  Pr(>|t|) 均方根误差  Residual standard error 判定系数  R-squared 调整判定系

  • R语言关于泊松回归知识点总结

    泊松回归(英语:Poisson regression)包括回归模型,其中响应变量是计数而不是分数的形式. 例如,足球比赛系列中的出生次数或胜利次数. 此外,响应变量的值遵循泊松分布. 泊松回归的一般数学方程为 log(y) = a + b1x1 + b2x2 + bnxn..... 以下是所使用的参数的描述 ​y​是响应变量. ​a​和​b​是数字系数. ​x​是预测变量. 用于创建泊松回归模型的函数是​glm()​函数. 语法 在泊松回归中​glm()​函数的基本语法是 glm(formula

  • R语言实现岭回归的示例代码

    岭参数的一般选择原则 选择k(或lambda)值,使得: 各回归系数的岭估计基本稳定 用最小二乘估计时符号不合理的回归系数,其岭回归的符号变得合理 回归系数没有不合乎实际意义的绝对值 残差平方和增大的不多 用R语言进行岭回归 这里使用MASS包中的longley数据集,进行岭回归分析(longley数据集中的变量具有显著的多重共线性).从而分析使用岭回归进行多重共线性的解决. 首相将longley数据集中的第一列数据命名为"y",并使用岭回归创建线性模型: 显示当y为因变量,其余各个变

  • R语言时间序列TAR阈值自回归模型示例详解

    为了方便起见,这些模型通常简称为TAR模型.这些模型捕获了线性时间序列模型无法捕获的行为,例如周期,幅度相关的频率和跳跃现象.Tong和Lim(1980)使用阈值模型表明,该模型能够发现黑子数据出现的不对称周期性行为. 一阶TAR模型的示例: σ是噪声标准偏差,Yt-1是阈值变量,r是阈值参数, {et}是具有零均值和单位方差的iid随机变量序列. 每个线性子模型都称为一个机制.上面是两个机制的模型. 考虑以下简单的一阶TAR模型: #低机制参数 i1 = 0.3 p1 = 0.5 s1 = 1

  • C语言线性代数算法实现矩阵示例代码

    目录 C语言实现矩阵 特殊矩阵 特殊矩阵验证 C语言实现矩阵 矩阵作为一个结构体而言,至少要包含行数.列数以及数据. #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ int row, col, size; double *data; } Matrix; 特殊矩阵 接下来通过这个结构体实现一些特殊的矩阵,例如包括相同元素的矩阵.对角矩阵等. #define SetBase

  • R语言编程重读微积分泰勒级数示例详解

    一 理解极限 二 微分学 泰勒级数 如果我是泰勒,我会把思考的起点建立在这样的一个等式上 那么接下来我们直观地感受一下Taylor级数时如何逐渐逼近某个函数的.简单起见,在此选择  sinx作为被拟合的函数. library(ggplot2) library(gganimate) library(av) library(tibble) x = seq(-pi,pi,0.1) n = length(x) xs = rep(x,11) ys = rep(sin(0),n) ts = rep(0,n)

  • C语言实现字符串替换的示例代码

    替换,意思就是用另一个字符串str3来替换str1中所有的str2.替换过程和查找的过程可以合并在一起,在上面循环查找的过程中,每找到一个str2,就把它替换为str3,替换后移动指针p.替换的情况分好几种:一种是str2和str3的长度相同,一种是str3比str2长,一种是str3比str2短.第一种情况比较简单,直接使用strncpy函数就可以,后面两种情况,都需要把str1中的元素进行移动.比如,在上面的例子中,str2=“the”,假设str3 =“this”,str3比str2长,为

  • R语言绘制尺子的实现示例

    本文使用基本的绘图命令plot.rect.segments.text绘制一把长10厘米的直尺.话不多说上教程. 1.定义基本单位 xcm <- 0.07 ycm <- 0.07 2.首先使用plot绘制一个空白画布 plot(0:1, 0:1, type = "n", axes = F, ann = F) 3.绘制一个灰色的底作为直尺的影子 rect(0 + 0.2*xcm,0 - 0.2*ycm,0.95 + 0.2*xcm,0.15 - 0.2*ycm, col=&qu

  • C语言实现动态链表的示例代码

    目录 结构体定义已经函数声明 函数实现 创建一个链表 判断链表是否为空 获得链表中节点的个数 在某个特定的位置插入一个元素 获得指定下标的节点的元素 删除一个节点 链表逆序 链表的清空 链表的销毁 链表的遍历 按特定的元素查找节点 按某些特定的条件删除所有符合情况的节点 链表的排序 总结 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两个部分:一个是存储

随机推荐