[问题] 关于逐步回归

楼主: ericchin0404 (凛魂)   2017-09-14 22:13:40
[问题类型]:
程式咨询
[软件熟悉度]:
请把以下不需要的部份删除
新手
[问题叙述]:
就是我现在有一个反应变量向量Y
跟一个解释变量矩阵X,每一行代表一个变量
然后我对他做回归
m=lm(Y~X)
然后我想用stepwise选变量,所以写了
step(m)
不过做出来的结果就是原来的模型,他根本没有挑选
但如果我把模型写成
m=lm(Y~X[,1]+X[,2]+X[,3]+X[,4])
他就可以选
所以我的问题是,如果我要做逐步回归,可是回归模型想用矩阵表示,那程式应该怎么写

另外想问若想把模型改成有二次项跟交互作用项,要怎么写?
麻烦各位,谢谢
作者: andrew43 (讨厌有好心推文后删文者)   2017-09-14 22:16:00
你的第一个step(m)只是试试看把维一的X丢掉看看AIC变化而发现AIC没有变更小所以就维持不动。不嫌弃的话请见拙作 https://youtu.be/en_GdbpZexE等等,你的X是矩阵的话,那其实是把整个X都丢掉看看。你可以as.data.frame(X)后再丢给lm()。如果x有很多栏,就写成lm(y ~ ., as.data.frame(x))其中的 "." 就是指 as.data.frame(x) 的每个字段lm(y ~ (.)^2, as.data.frame(x))那可以改变做法,先把所有自变项制作好并塞在新的matrix或是塞在新的data frame例如 model.matrix(~.^2, data = as.data.frame(x))[,1]和x^2这二个matrix用cbind()接起来,看习惯。另一种想法可以是利用字串处理生成很长的formula,直接喂给lm()和step(),而不是预先制作变量。
楼主: ericchin0404 (凛魂)   2017-09-16 21:16:00
Ok 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com