Функция R, которая повторно подключается к выходу - PullRequest
0 голосов
/ 21 мая 2019

У меня проблема с HW, когда я смоделировал данные и должен повысить градиент.Я думаю, что понимаю суть повышения градиента, но у меня проблемы с настройкой цикла.

"f" - это список из 400 деревьев, которые вычисляются с помощью функции tree (), которая включает в себя "r", который изначально определен вне функции.

"r" пересчитываетсяоснованный на первом «f», а затем подключенный обратно к функции tree ()

Так что в основном нам нужно 400 «r», но r [1] уже определено.Нам также нужно 400 «f», где f [1] является функцией от r [1], а для f [2] используется «r», рассчитанное по f [1], причем процесс повторяется до тех пор, пока мы не получим 400 «f"

Надеюсь, это объяснение имеет смысл (мне кажется, это просто).Кажется, что это, вероятно, простой цикл, но в целом мне так сложно программировать, что у меня возникают проблемы при написании даже псевдокода.

#Simulate data set
N=1000
X1=runif(N)
X2=2*runif(N)
SNR=10
Y=sin(10*X1) + 2*(X2^0.5)
sigma=sqrt(var(Y)/SNR)
Y=Y +rnorm(N,0,sigma)
newdat<-data.frame(c(Y,X1,X2))

#3a:  List of all boost trees
f=list()
r=Y

#3b:  Fit regression tree and calculate residual 
#THIS CODE IS NOT CORRECT AND IT'S WHAT I NEED HELP WITH
for(i in 1:400){
  f[[i]]=tree(r~X1+X2, data = newdat, control=tree.control(nobs = 1000,mincut = N/4)) 
r[2]=residuals(f[[1]], type="usual")
}
...