2016-07-13 2 views
0

Je suis en train de prendre régression Lasso mais je ne peux pas bien définir mon X et Y dans R.Problèmes avec la préparation des données pour la régression Lasso

#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) 

puis je reçois ce message d'erreur :

"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)" 

maintenant, toutes les colonnes sont de la même longueur (222), mais l'erreur dit qu'il n'y a que 100 en y et 222 dans X.

#So I checked for Y here

>length(Y) 
[1] 222 
#Then checked for X 
> length(X) 
[1] 1110 

Maintenant, elle rappelle certainement que je manque quelque chose. Évidemment, la taille de la matrice est différente et X est 222 * 5 colonnes, mais comment puis-je le faire fonctionner? Ce qui signifie que cette erreur aura disparu ... J'ai essayé plusieurs façons. Je travaille dessus pendant des heures, ça m'empêche vraiment de progresser et il n'y a pas beaucoup d'aide de google. Serait reconnaissant pour la solution.

+0

Quels sont '' x' et y' (minuscules) que vous utilisez dans 'glmnet'? essayez d'exécuter 'rm (list = ls())' et réexécutez tout votre code. – Tensibai

Répondre

0

Je recommande
1) Vérifiez la dimension de la matrice en utilisant dim(x) et dim(y) plutôt que length
2) Vérifiez si une valeur NA dans y (très possible)

+0

dim (x) m'a donné [1] 222 4, dim (y) m'a donné NULL. En outre, j'ai vérifié et il n'y a pas de valeurs NA dans les données. Comment peut-il être résolu? –

+0

Il ne se sent pas bien car dim (x) devrait donner 222 5 et dim (y) devrait donner 222 1. Je suppose que vous n'avez pas mis en majuscule X et Y dans glmnet (x, y, family = "gaussian", alpha = 0 , lambda = 0.001) qui pourrait poser problème? Ne devrait-il pas être glmnet (X, Y, famille = "gaussien", alpha = 0, lambda = 0.001)? – DevMui