2016-10-29 2 views
-1

Ich habe R in R Studio gelernt und arbeite an einfachen Vorhersagemodellen.R - Fehlermeldung: "Ungültiges Argument: 'sim' & 'obs' haben nicht die gleiche Länge!"

Ich erhalte den folgenden Fehler:

Invalid argument: 'sim' & 'obs' doesn't have the same length !

wenn ich laufe diese Codezeile:

rmse(testingbabydata$weight, predictedWeight) 

Der Datensatz linked here enthält 1000 Zeilen und die globale Umwelt Bereich zeigt, dass meine Daten Prüfung und meine Trainingsdaten haben jeweils "500 obs. von 2 Variablen".

Die Bibliothek hydroGOF sollte bereits korrekt geladen sein.

Dies ist mein Code-Schnipsel, wobei ich versuche, ein Baby Gewicht vorherzusagen, basierend auf der Länge der Schwangerschaft in Wochen:

ncbabydata=read.csv("nc.csv",header=TRUE,stringsAsFactors = FALSE`) 
trainingbabydata=ncbabydata[seq(1,nrow(ncbabydata),2),c("weeks","weight")] 
testingbabydata=ncbabydata[seq(2,nrow(ncbabydata),2),c("weeks","weight")] 
model = train(weight ~.,trainingbabydata,method="rf") 
predictedWeight=predict(model,testingbabydata) 
rmse(testingbabydata$weight, predictedWeight) 

Dank für Ihre Zeit danken! (Ich habe versucht, diese Fehlermeldung zuerst googeln fand aber keine geeignete Quelle, die ich relativ leicht verstehen konnte.)

Antwort

1

Ihre beiden Vektoren sind in der Tat nicht die gleiche Länge:

> length(predictedWeight) 
[1] 498 
> length(testingbabydata$weight) 
[1] 500 

Der Grund für Das ist, dass einige Ihrer Funktionen NA sind, und Ihre Vorhersage besteht darin, diese Zeilen einfach wegzulassen. Umgang mit fehlenden Daten in Modellen ist ein komplexes Thema, aber da es nur zwei Reihen von 500 ist, können Sie sie nur für jetzt entfernen und das Lernen weiter:

testingbabydata<-testingbabydata[complete.cases(testingbabydata),] 

und Sie können dann Ihre RMSE berechnen (die Sie auch direkt tun, ohne Helfer):

> sqrt(mean((testingbabydata$weight-predictedWeight)^2)) 
[1] 1.025823 

und Sie können es zu einem Modell vergleichen, die immer den Mittelwert sagt:

> sqrt(mean((testingbabydata$weight-mean(testingbabydata$weight))^2)) 
[1] 1.460638 
Verwandte Themen