Re: [程式] R語言的迴圈跟二進位法問題
※ 引述《roymond (羅伊)》之銘言:
: ------------------------------------------------------------------------
: [軟體程式類別]:
: R語言
: [程式問題]:
: 資料處理 迴歸
: [軟體熟悉度]:
: 低(1~3個月)
: [問題敘述]:
: 假設一組資料有 Y X1 X2 X3 X4
: 想要用迴圈的方式去計算 Y 對 X1 X2 X3 X4 所產生的subset model的r-square
: 因為有4個變數,共有15組subset model
: y=x1
: y=x1+x2
: y=x1+x3
: y=x1+x4
: y=x1+x2+x3
: y=x1+x2+x4
: y=x1+x2+x3+x4
: :
: :
: :
: 以此類推...
: 然後將給組subset model所產生的r-square存到矩陣裡面
: 可是想不出迴圈的部分該怎麼寫才能呈獻每組模型!
: 另一個想法是利用二進位的方式
: 讓程式可以判斷什麼時候要放哪個變數進去
: 例如 0001 就是放x4 0010 就是放x3
: 0011 就是放x3+x4 1001 就是放x1+x4 以此類推...
: 然後再計算r-square
: 可是卻想不出該怎麼將這想法呈獻出來寫在R上
: 還有請教各位高手
: 感謝各位!
: [程式範例]:
: smatrix=matrix(1:15,15,1)
: for(i = 1:15)
: {
: lm.f=as.formula(paste("y~ ",name[i+1],collapse= "+"))
: smatrix[i,1]=summary(lm.f)$r.square
: }
: -----------------------------------------------------------------------------
我只有想到這個笨方法 =.=
library(e1071)
bincombinations(4)
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 1
[3,] 0 0 1 0
[4,] 0 0 1 1
[5,] 0 1 0 0
[6,] 0 1 0 1
[7,] 0 1 1 0
[8,] 0 1 1 1
[9,] 1 0 0 0
[10,] 1 0 0 1
[11,] 1 0 1 0
[12,] 1 0 1 1
[13,] 1 1 0 0
[14,] 1 1 0 1
[15,] 1 1 1 0
[16,] 1 1 1 1
qq <- bincombinations(4)[2:16,]
> qq
[,1] [,2] [,3] [,4]
[1,] 0 0 0 1
[2,] 0 0 1 0
[3,] 0 0 1 1
[4,] 0 1 0 0
[5,] 0 1 0 1
[6,] 0 1 1 0
[7,] 0 1 1 1
[8,] 1 0 0 0
[9,] 1 0 0 1
[10,] 1 0 1 0
[11,] 1 0 1 1
[12,] 1 1 0 0
[13,] 1 1 0 1
[14,] 1 1 1 0
[15,] 1 1 1 1
這樣 qq 就是 你想要的二進位矩陣
然後你可以做迴圈
X <- cbind(X[1:4])
for (i in 1:15)
{ smatrix[i,1] <- lm(y ~ X %*% qq[i,])$r.square
}
這樣應該可以吧
sorry 我只有想到這樣
也希望板上前輩能分享更簡單的方法 <(_ _)>
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.9.142
※ 編輯: laba1014 來自: 61.230.9.142 (05/02 02:34)
※ 編輯: laba1014 來自: 61.230.9.142 (05/02 02:39)
推
05/02 18:47, , 1F
05/02 18:47, 1F
→
05/02 19:46, , 2F
05/02 19:46, 2F
推
05/02 20:28, , 3F
05/02 20:28, 3F
→
05/03 17:43, , 4F
05/03 17:43, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):