Re: [问题] 关于逐步回归

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

: ?
: 另外想问若想把模型改成有二次项跟交互作用项,要怎么写?
: 麻烦各位,谢谢
我还是遇到一些问题
我的回归模型尝试了以下两种写法
1.
X2 = cbind(model.matrix(~.^2,data = as.data.frame(X[ind2,]))[,-1],X[ind2,]^2)
m2 = lm(Y[ind2]~-1+sqrt(size[a,k])[ind2]+.,as.data.frame(X2))
2.
m2 = lm(Y[ind2]~-1+sqrt(size[a,k])[ind2]+(.)^2
+I(X[ind2,1]^2)+I(X[ind2,2]^2)+I(X[ind2,3]^2)
+I(X[ind2,4]^2)+I(X[ind2,5]^2)+I(X[ind2,6]^2)
,as.data.frame(X[ind2,]))
以上两种回归模型都是无截距项,且包含交互作用项和平方项
然后使用step(m2)这个指令进行选模
但是为什么选出来的变量会不相同
理论上模型相同,选模的指令也相同,只是模型写法不同,选出来的变量应该要相同才对

到底是哪边出了差错???
Btw, X本身是一个6行的矩阵,也就是它是一个有六个变量的矩阵
作者: andrew43 (讨厌有好心推文后删文者)   2017-09-19 10:30:00
size, a, k, ind2这些是什么?既然要抓虫,请提供可重复问题的原始码。还有,X[ind2,1]这很可疑。这只会是一个数而不是一群数更正,应该只是某些栏的第一列数,如果X是个matrix的话再更正。我眼花了。没事lm()生成的物件,如这里的m2,可以看见内部使用的资料。你可以先看看m2$model$Y和m2$model$X是不是如你预期,就可以确定是不是正确纳入了资料。这样的话,你的第一个写法可能在step只会丢整个size和X2细看step的回传步骤就可以发现了。因此,如我之前所说,把所有变量都做制做好放在同一个data frame之内,step(lm(Y ~ ., data = ...) 才会成如果我的推断不对的话,请你再回应了。step()被设计成针对你的formula写法,所以你只好先“配合”它。可能存在其它function会让你用得更直觉。

Links booklink

Contact Us: admin [ a t ] ucptt.com