forループを(c)と(d)を100回繰り返すように書こうとしています。 forループの各繰り返しでTRS-TRS0の見積もりを出力したいと思います。アルゴリズムが小さければ(例えば1/10000)、アルゴリズムを停止する必要があります。最後に、これらの値のそれぞれが表示されるプロットを作成します。R for loop n times
ここにはすべてがあると思いますが、実行すると何も起こりません。何か不足していますか?再現する
for (i in 1:100){
#c)
fit1 = loess(res~x2, data=data.frame(res,x1,x2))
f2=predict(fit1,newdata=data.frame(res,x1,x2))
res=data$y-mean(data$y) -f2
#d)
fit2 = loess(res~x1, data=data.frame(res,x1,x2))
f1=predict(fit2,newdata=data.frame(res,x1,x2))
res=data$y - mean(data$y)-f1
TSR=sum((data$y-mean(data$y)-f1-f2)^2);TSR
if (abs(TSR-TSR0) > delta) TSR0=TSR else break
#continue
if (abs(TSR-TSR0) < delta) break
TSR0=TSR
val=TSR-TSR0;val
x11(); plot(x1,f1); plot(x2,f2)
}
は、ここで作成されたデータである。
set.seed(3)
x1=runif(300);x2=runif(300)
error=rnorm(300,mean=0,sd=3)
z1=-2+3*x1; z2=2*sin(2*pi*x2)
data=data.frame(x1,x2,y=z1+z2+error)
#fit the model
TSR0=0
f10=0;f20=0
res=data$y-mean(data$y) -f10 -f20;
delta=.0001