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