0

これはほぼ以前に行われたことがわかりますが、私はRを初めて使用するため、理解できません。ほとんどの場合、回帰ループがあり(データマイニングを批判しないでください)、各ループからいくつかのことを新しいリスト/データフレーム/最も適切なものに報告する必要があります。これが私のコードです:

#Required packages
require(lattice)
require(plyr)


ACDn <- "ACDn.csv"
x <- as.matrix(read.csv(ACDn, colClasses = "numeric"))

#To find which columns are which, in order to split up the overall dataset.
which( colnames(X)=="H95.H30" )
which( colnames(X)=="H99" )

#Here i split all the data into their different types, i.e. LHt = Lidar Heights. Please ignore
#those that are unpopulated, as i am waiting on data to run.

Yall <- x[,c(59:79)]                            #All "True Variables" - BA, MTH, etc.
Y <- Yall[,10]                                  #Specifies which columnn is the Y variable, BA = 10,
                                                #TopHt = 11, SPH = 12, Vol_live = 13, RecovVol = 14

X <- x[,c(1:58,80:95)]                          #All Lidar metrics and combinations.
LHt <- X[,c(28:41,59:74)]
LCv <- X[,c()]
LKu <- X[,c()]
LSk <- X[,c()]
L?? <- X[,c()]

#Create List file. I 

Optmod1 <- 

#Loop Creation, need dataset sizes. The ?? are caused by not knowing the exact sizes 
#of the relative datasets yet. Somewhere in here i would like the an entry for EACH model to be
#appended to a data.frame (or list, whatever is most appropriate), which would state the variables
# i.e. 'y', 'i', 'j', 'k', 'l', 'm', and the Adj. R-squared value (which i guess can be extracted
# through using 'summary(mod)$adj.r.squared). 

For(i in 1:30) {
  For(j in 1:??) {
    For(k in 1:??) {
      For(l in 1:??){
        For(m in 1:??){
          mod <- lm(Y ~ LHt[i] + LCv[j] + LKu[k] + LSk[l] + L??[m])
        }
      }
    }
  }
}

つまり、「mod」が毎回実行された後は、「Y」、「i」、「j」、「k」、「l」、「m」、およびAdjusted.R-Squaredをスローする必要があります。 (「summary(mod)$ adj.r.squared」を使用して推測します)ある種の抽出可能なテーブルに入れます。

申し訳ありませんが、これがr-illiterateである場合、私はこれに不慣れで、以前に規定のコードを与えられたばかりであり、そのため、私の基本的な理解はまばらです。

御時間ありがとうございます!

PSどんな質問でも気軽に質問してください-私はそれらに答えるために本当に一生懸命努力します!

4

1 に答える 1

1

あなたの質問に対する簡単な答えは

Answers = list()
For(i in 1:30) {
  For(j in 1:??) {
    For(k in 1:??) {
      For(l in 1:??){
        For(m in 1:??){
          mod <- lm(Y ~ LHt[i] + LCv[j] + LKu[k] + LSk[l] + L??[m])
          Answers[[length(Answers)+1]] = list(i,j,k,l,m,summary(mod)$adj.r.squared)
        }
      }
    }
  }
}

必要な情報をリストに保存します。これは、空白のリストを作成することで機能します。このリストは、回帰モデルをループで実行するたびに追加されます。ただし、このようなリストをループで増やすことは、Rの慣例としては非常に悪いことです。

最初に可能なすべての形式の数式をLHt[i] + LCv[j] + LKu[k] + LSk[l] + L??[m]リストに書き込んでから、lapplyを使用して回帰を実行する方がよい場合があります...

最初に使用expand.gridして、5列のデータフレームを作成します。各列には、各カテゴリの1つの変数名が含まれます。

LHT_names = lapply(1:30,function(i) paste("LHt[",i,"]",sep="")) #a list of names of LHT type variables for use in formula
LCv_names = lapply(1:?,function(i) paste("LCv[",i,"]",sep="")) #similar for LCv
LKu_names = ...
LSk_names = ...
L??_names = ...

temp = expand.grid(c(LHt_names, LCv_names, LKu_names, LSk_names, L??_names))

次に、貼り付けと重ね合わせを使用して、数式のリストを取得します。

list_of_formulas = lapply(seq_along(nrow(temp)), function(i) paste("Y~",paste(temp[i,],collapse="+"),sep = ""))

次に、lapplyを使用して回帰モデルのリストを取得します

list_of_models = lapply(list_of_formulas, function(x)  lm(x) )
于 2013-03-26T06:14:32.260 に答える