0

関数があり、それにノイズを追加し、平滑化して回帰直線を取得しました。元の関数と等間隔の 30 点の回帰直線との間の MSE を見つけるにはどうすればよいですか?

または、R に x 値を与え、回帰直線の y 値を取得するにはどうすればよいですか?

これは私の問題の縮小版です:

> test<- function(m) {3*m^2+7*m+2}  
> r=rnorm(10)  
> m=1:10/10  
> plot(test(m)+r)  
> lines(smooth.spline(1:10,test(m)+r),col="red")  

したがって、等間隔の 10 点、つまり test(m) で真の関数値を取得しました。これらの 10 ポイントで Smooth.spline 値を抽出する方法が必要なだけで、MSE を計算できるはずです。

4

1 に答える 1

2

どうですか:

y <- test(m)+r
y.pred <- predict(smooth.spline(1:10,y))$y
mean((y-y.pred)^2)        ## variance (could mult by n/(n-r) for an unbiased estimate)
mean((test(m)-y.pred)^2)  ## MSE
于 2013-01-08T18:37:09.393 に答える