我正在尝试使用Lasso回归,但我无法在R中很好地定义我的X和Y.
#load data
>test.data<-read.spss("C:\\Users\\Inhib\\OneDrive\\documents\\dummy.sav",use.value.labels=TRUE, to.data.frame=TRUE)
>test.data #testing my data, it's all there so I won't add it here
#take columns 2 to 6 for X
>X<-as.matrix(test.data[,2:6])
# Column 1 is the predicted variable Y
>Y<-as.matrix(test.data[,1])
#Ok, let's fit it
fit<- glmnet(x, y, family="gaussian", alpha=0, lambda=0.001)
然后我收到此错误消息:
"Error in glmnet(x, y, family = "gaussian", alpha = 0, lambda = 0.001) :
number of observations in y (100) not equal to the number of rows of x (222)"
现在所有列的长度都相同(222),但错误表明Y中只有100个,X中只有222个。
#So I checked for Y here
>length(Y)
[1] 222
#Then checked for X
> length(X)
[1] 1110
现在,它肯定指向我错过了一些东西。显然矩阵大小不同,X是222 * 5列,但我怎样才能使它工作?意味着这个错误将会消失......我尝试了很多方法。我正在努力工作几个小时,这真的阻止了我的进步,谷歌帮助不大。非常感谢解决方案。
答案 0 :(得分:0)
我会建议你
1)使用dim(x)
和dim(y)
而不是length
来检查矩阵的维度
2)检查y
中是否有任何NA值(极有可能)