R - getting the error: "Invalid argument: 'sim' & 'obs' doesn't have the same length !"

R - getting the error: "Invalid argument: 'sim' & 'obs' doesn't have the same length !"

我一直在 R Studio 中学习 R,并且一直致力于简单的预测建模。

我收到以下错误:

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

当我运行这行代码时:

rmse(testingbabydata$weight, predictedWeight)

数据集 linked here 包含 1000 行,全局环境窗格显示我的测试数据和我的训练数据各有“500 obs. of 2 variables”。

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 此错误消息,但没有找到我可以相对容易理解的合适来源。)

事实上,你的两个向量的长度不一样:

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

这是因为您的某些特征不适用,而您的预测只是忽略了这些行。处理模型中缺失的数据是一个复杂的主题,但由于它只有 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