2016-07-13 16 views
0

Ich versuche Lasso Regression zu nehmen, aber ich kann nicht definieren gut meine X und Y in R.Probleme mit der Vorbereitung der Daten für Lasso Regression

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

dann bekomme ich diese Fehlermeldung :

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

Nun werden alle Spalten sind von gleicher Länge (222), aber der Fehler sagt, dass es nur 100 in Y und 222 in X.

#So I checked for Y here

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

Jetzt verweist er auf jeden Fall zu, dass ich etwas zu verpassen. Offensichtlich ist die Matrixgröße unterschiedlich und X ist 222 * 5 Spalten, aber wie kann ich es funktionieren lassen? Bedeutet, dass dieser Fehler weg ist ... Ich habe viele Möglichkeiten ausprobiert. Daran arbeite ich stundenlang, das hält mich wirklich vom Fortschritt ab und es gibt nicht viel Hilfe von Google. Wäre dankbar für die Lösung.

+0

Was 'X' sind alle NA-Wert ist und ' y '(Kleinbuchstaben), die du in' glmnet' verwendest? Versuchen Sie 'rm (list = ls())' auszuführen und den gesamten Code erneut auszuführen. – Tensibai

Antwort

0

würde ich
1) Überprüfen Sie die Dimension der Matrix mit dim(x) und dim(y) statt length
2) Überprüfen Sie empfehlen, wenn es in y (sehr gut möglich)

+0

dim (x) gab mir [1] 222 4, dim (y) gab mir NULL. Auch habe ich überprüft und es gibt keine NA-Werte in den Daten. Wie kann es gelöst werden? –

+0

Es fühlt sich nicht richtig an, da dim (x) 222 5 und dim (y) 222 1 ergeben sollte. Ich nehme an, du hast X und Y in glmnet nicht großgeschrieben (x, y, family = "gaussian", alpha = 0) , Lambda = 0.001) was könnte ein Problem sein? Sollte es nicht Glmnet sein (X, Y, Familie = "Gaußsche", Alpha = 0, Lambda = 0.001)? – DevMui