【发布时间】:2021-09-02 18:58:40
【问题描述】:
我正在尝试计算模拟数据的 RMSE。但是输出给出了 RMSE 的 NaN。下面是我正在使用的代码。
library(caret)
RMSE <- function(x,y) sqrt(mean((x-y)^2))
sim.regression<-function(n.obs=200,coefficients=c(3,1.5,0,0,2,0,0,0),s.deviation=.1){
n.var=length(coefficients)
M=matrix(0,ncol=n.var,nrow=n.obs)
beta=as.matrix(coefficients)
for (i in 1:n.var){
M[,i]=rnorm(n.obs,0,1)
}
y=M %*% beta + rnorm(n.obs,0,s.deviation)
train.data<-y[1:150]
train.data<-data.frame(train.data)
test.data<-y[151:200]
test.data<-data.frame(test.data)
prediction <- predict(lm(y~M),test.data)
RMSE.data<-RMSE(prediction, test.data$y)
return (list(x=M,y=y,coeff=coefficients, RMSE=RMSE.data))
}
set.seed(2000)
sim.regression(100)
【问题讨论】:
-
尝试在你的函数中逐行运行代码。您也可以使用调试器。您如何构建数据似乎存在几个问题。当该列不存在时,您似乎拥有
test.data$y。此外,您的lm模型似乎将M作为自变量,但您没有将其与test.data一起传递,因此您无法做出预测
标签: r machine-learning statistics