6

以下のコードの結果を保存しようとしていますが、残差の平方和が最小のモデルの結果を保存するための解決策しか思いつきませんでした。これは、結果が c とガンマの両方の範囲の限界に達するまでは役に立ちました。したがって、他のポイントの特性を評価する必要があります。このために、すべての反復の結果を保存する必要があります。この場合、これを行う方法を知っている人はいますか?

前もって感謝します!

dlpib1 <- info$dlpib1
scale <- sqrt(var(dlpib1))
RSS.m <- 10

for (c in seq(-0.03,0.05,0.001)){
  for (gamma in seq(1,100,0.2))
    {
    trans <- (1+exp(-(gamma/scale)*(dlpib1-c)))^-1
    grid.regre <-lm(dlpib ~ dlpib1 + dlpib8 + trans + trans*dlpib1 + 
                  + I(trans*dlpib4) ,data=info) 
coef <- grid.regre$coefficients
RSS <- sum(grid.regre$residuals^2)

if (RSS < RSS.m){
  RSS.m <- RSS
  gamma.m <- gamma
  c.m <- c
  coef.m <- coef
  }
 }
}
grid <- c(RSS=RSS.m,gamma=gamma.m,c=c.m,coef.m)
grid`
4

3 に答える 3

10

反復によってモデルの結果を保存する最も簡単な方法は、次のlistとおりです。

List = list()
for(i in 1:100)
    {
       LM = lm(rnorm(10)~rnorm(10))
       List[[length(List)+1]] = LM
     }
于 2013-09-27T18:39:32.543 に答える
3

おそらくforループを完全に回避できます。ただし、タスクを達成する方法については、値を格納するオブジェクトにインデックスを付けるだけです。たとえば、

# outside the for loop
trans <- list()

# inside the for loop
trans[[paste(gamma, c, sep="_")]] <- ... 
于 2013-09-27T18:40:11.390 に答える
1

RSSのすべての繰り返しを保存することは間違いありません。次のようなことができます。

dlpib1 <- info$dlpib1
    scale <- sqrt(var(dlpib1))
    RSS.m <- rep(0,N)
    coef <- rep(0,N)
    i <- 0

    for (c in seq(-0.03,0.05,0.001)){
      for (gamma in seq(1,100,0.2))
        {
        trans <- (1+exp(-(gamma/scale)*(dlpib1-c)))^-1
        grid.regre <-lm(dlpib ~ dlpib1 + dlpib8 + trans + trans*dlpib1 + 
                      + I(trans*dlpib4) ,data=info) 
    coef <- grid.regre$coefficients
    RSS.m[i] <- sum(grid.regre$residuals^2)
    i=i+1


      }
     }
    }
于 2013-09-27T18:53:44.740 に答える