2016-10-29 9 views
-1

Я изучал R в R Studio и работал над простым прогнозированием.R - получение ошибки: «Недопустимый аргумент:« sim »и« obs »не имеют одинаковой длины!»

Я получаю следующее сообщение об ошибке:

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

когда я запускаю эту строку кода:

rmse(testingbabydata$weight, predictedWeight) 

Набор данных linked here содержит 1000 строк и глобальная панель среды показывает, что мои данные тестирования и мой учебные данные имеют «500 общ. из 2 переменных» каждый.

Библиотека hydroGOF также должна быть правильно загружена.

Это мой фрагмент кода, в котором я пытаюсь предсказать, веса ребенка на основе продолжительности беременности в неделях:

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) 

Спасибо за ваше время! (Я сделал попытку Google это сообщение об ошибке первого, но не нашел подходящего источника, который я мог понять, относительно легко.)

ответ

1

Ваши два вектора, на самом деле, а не такой же длины:

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

Причина это то, что некоторые из ваших функций - NA, и ваше предсказание просто опускает эти строки. Обработка недостающих данных в моделях является сложной темой, но так как это только две строки из 500, вы можете просто удалить их сейчас и продолжить свое обучение:

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

, а затем вы можете рассчитать свой RMSE (который вы можете также делать напрямую, без помощника):

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

и вы можете сравнить его с моделью, которая всегда предсказывает среднее значение:

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