作者laba1014 (I-20快点来)
站内Statistics
标题Re: [程式] R语言的回圈跟二进位法问题
时间Sun May 2 01:44:46 2010
※ 引述《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)
1F:推 roymond:谢谢指教!想请问 %*% 这是什麽意思!刚学不久 有点不懂 05/02 18:47
2F:→ laba1014:outer product 的指令 05/02 19:46
3F:推 roymond:恩恩 谢谢^^ 05/02 20:28
4F:→ laba1014:哪里 05/03 17:43