r - 套索代码 - 它有什么问题?

标签 r regression lasso-regression lars

我正在尝试使用 lars 包进行套索回归,但似乎无法让 lars 工作。我输入了代码:

diabetes<-read.table("diabetes.txt", header=TRUE)
diabetes
library(lars)
diabetes.lasso = lars(diabetes$x, diabetes$y, type = "lasso")

但是,我收到一条错误消息:
rep(1, n) 中的错误:无效的“时间”参数。

我试过这样输入:
diabetes<-read.table("diabetes.txt", header=TRUE)
library(lars)
data(diabetes)
diabetes.lasso = lars(age+sex+bmi+map+td+ldl+hdl+tch+ltg+glu, y, type = "lasso")

但后来我收到错误消息:
'lars(age+sex + bmi + map + td + ldl + hdl + tch + ltg + glu, y, type = "lasso") 中的错误:
未找到对象“年龄”

我哪里错了?

编辑:数据 - 如下,但还有 5 列。
             ldl          hdl          tch          ltg          glu
1   -0.034820763 -0.043400846 -0.002592262  0.019908421 -0.017646125
2   -0.019163340  0.074411564 -0.039493383 -0.068329744 -0.092204050
3   -0.034194466 -0.032355932 -0.002592262  0.002863771 -0.025930339
4    0.024990593 -0.036037570  0.034308859  0.022692023 -0.009361911
5    0.015596140  0.008142084 -0.002592262 -0.031991445 -0.046640874

最佳答案

我认为有些困惑可能与 diabetes 的事实有关。 lars 附带的数据集包具有不寻常的结构。

library(lars)
data(diabetes)
sapply(diabetes,class)
##        x         y        x2 
##   "AsIs" "numeric"    "AsIs" 

sapply(diabetes,dim)
## $x
## [1] 442  10
## 
## $y
## NULL
## 
## $x2
## [1] 442  64

换句话说,diabetes是一个包含“列”的数据框,这些列本身就是矩阵。在这种情况下,with(diabetes,lars(x,y,type="lasso"))lars(diabetes$x,diabetes$y,type="lasso")工作正常。 (但只有 lars(x,y,type="lasso") 不会,因为 R 不知道在 x 数据框中查找 ydiabetes 变量。)

但是,如果您正在阅读自己的数据,则必须自己将响应变量和预测矩阵分开,例如
X <- as.matrix(mydiabetes[names(mydiabetes)!="y",])
mydiabetes.lasso = lars(X, mydiabetes$y, type = "lasso")

或者你可以使用
X <- model.matrix(y~.,data=mydiabetes)

关于r - 套索代码 - 它有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14202509/

相关文章:

python - 回归:如何逼近多维函数?

performance - 如何计算Python中回归问题的平均绝对百分比误差?

Python 学习。为什么我只在第一次收到警告?

Python - Lasso/LassoCV 中的交互术语?

r - 领先一步,在 R 中一次仅接收一个值的样本外预测

r - 在具有 3 个 y 轴的单个图中绘制 4 条曲线

r - 在 R 中使用多列旋转更宽

r - 使用facet_wrap将r平方注释为ggplot

r - TrainControl 的插入符错误,方法 ="repeatedCV"