我有一个硬件问题,其中有模拟数据,必须进行梯度增强。我想我了解梯度增强的实质,但是在设置循环时遇到了问题。
“ f”是使用tree()函数计算的400棵树的列表,其中涉及最初在函数外部定义的“ r”。
根据第一个“ f”重新计算“ r”,然后将其重新插入tree()函数
因此,基本上,我们需要400个“ r”,但r [1]已经定义。我们还需要400个“ f”,其中f [1]是r [1]的函数,并且f [2]使用从f [1]计算出的“ r”,重复此过程直到我们得到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")
}