作者ericchin0404 (凛魂)
看板R_Language
标题Re: [问题] 关於逐步回归
时间Mon Sep 18 20:50:03 2017
※ 引述《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行的矩阵,也就是它是一个有六个变数的矩阵
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.127.233.48
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1505739006.A.779.html
※ 编辑: ericchin0404 (140.127.233.24), 09/18/2017 20:53:15
※ 编辑: ericchin0404 (140.127.233.24), 09/18/2017 21:19:33
1F:→ andrew43: size, a, k, ind2这些是什麽?09/19 10:30
size 我比较不好解释,总之他是一个矩阵,a是一向量,目的是去抓size这个矩阵的某些
列,而k是一个值,也就是这个矩阵的第k行,ind2是一向量,也是要抓位置用的
2F:→ andrew43: 既然要抓虫,请提供可重覆问题的原始码。09/19 10:31
3F:→ andrew43: 还有,X[ind2,1]这很可疑。这只会是一个数而不是一群数09/19 10:33
4F:→ andrew43: 更正,应该只是某些栏的第一列数,如果X是个matrix的话09/19 10:35
5F:→ andrew43: 再更正。我眼花了。没事09/19 11:13
6F:→ andrew43: lm()生成的物件,如这里的m2,可以看见内部使用的资料。09/19 11:15
7F:→ andrew43: 你可以先看看m2$model$Y和m2$model$X是不是如你预期,09/19 11:16
模型是一样的没错
8F:→ andrew43: 就可以确定是不是正确纳入了资料。09/19 11:16
※ 编辑: ericchin0404 (140.127.233.24), 09/19/2017 18:02:13
9F:→ andrew43: 这样的话,你的第一个写法可能在step只会丢整个size和X2 09/19 18:35
10F:→ andrew43: 细看step的回传步骤就可以发现了。 09/19 18:35
11F:→ andrew43: 因此,如我之前所说,把所有变数都做制做好放在同一个 09/19 18:36
12F:→ andrew43: data frame之内,step(lm(Y ~ ., data = ...) 才会成 09/19 18:37
13F:→ andrew43: 如果我的推断不对的话,请你再回应了。 09/19 18:37
14F:→ andrew43: step()被设计成针对你的formula写法,所以你只好先「配 09/19 18:38
15F:→ andrew43: 合」它。可能存在其它function会让你用得更直觉。 09/19 18:39