作者developme223 (allen)
看板R_Language
标题[问题] 取出Residual再跑一次Regression
时间Tue Dec 1 17:28:36 2015
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
程式码:
model.1 <- lm(TAC ~ 0 +TA +REC +PPE ,data=merge.data.3)
model.2 <- lm(merge.data.3$RIR ~ model.1$residual)
其中,
merge.data.3 大概资料型态:
Code RIR TAC TA REC PPE
1 20 200 0.5 . .
2 30 . . . .
.
.
.
533 . . . . .
先跑一个简单线性回归模型(model.1),取出此模型之残差,
再跑一次简单线性回归(model.2),但此时残差(model.1$residual)
的排列与原先的data.frame不同(无法执行,跑出Variable lengths differ)
有尝试用cbind与data.frame重组资料,但好像也无法解决,想请教各位高手
。
[关键字]:
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 120.126.58.61
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1448962118.A.B24.html
1F:→ celestialgod: model.1$residual长度不为533? 12/01 17:33
2F:→ celestialgod: 先确认模型1的残差是否长度跟原本data.frame列数箱 12/01 17:34
3F:→ celestialgod: 异 12/01 17:34
4F:推 locka: 我想您应该是做model1时有产生NA(如果有的话summary(model1 12/01 18:14
5F:→ locka: )会告诉你due to singularities…blabla),NA的资料会被略 12/01 18:14
6F:→ locka: 过,所以该model计算的残差个数跟原始资料笔数会不同。其中 12/01 18:14
7F:→ locka: 一个可能原因是解释变数有共线性问题,建议您再检查一下您 12/01 18:14
8F:→ locka: 的回归模型~ 12/01 18:14
9F:→ developme223: 原本的model.1所有的解释变数及被解释变数length数 12/02 11:44
10F:→ developme223: 皆为533 12/02 11:45
11F:→ developme223: 但跑完回归後,summary(model.1) 出现23observation 12/02 11:46
12F:→ developme223: deleted due to missingness 12/02 11:47
13F:→ developme223: length(model.1$residual)=510 12/02 11:48
14F:→ developme223: 不过用model.1$residual看整个残差就是533个 12/02 11:50
15F:→ developme223: l大,如果是完全共线性的话,应该估计系数值跑不出 12/02 11:52
16F:→ developme223: 来,与样本数好像没关系(?) 12/02 11:53
17F:→ celestialgod: 所以是你有23个观察值全部都是NA 12/02 12:05
18F:→ celestialgod: 更正 有NA 12/02 12:05
19F:→ celestialgod: 所以你把没NA的观察值挑出来 fit模型就好了 12/02 12:07
20F:→ developme223: 但我用model.1$residual 12/02 12:48
21F:→ developme223: 或cbind(model.1$residual)观看资料,都还是533个 12/02 12:49
22F:→ developme223: 样本 12/02 12:50
23F:→ celestialgod: 所以问题出在哪= =? 12/02 12:51
24F:→ celestialgod: 如果长度还是533就没有问题啦 12/02 12:51
25F:→ developme223: 问题出在我直接用残差跑,还是显示变数长度相异。 12/02 13:04
26F:→ developme223: 在想是不是资料型态排列的关系。 12/02 13:05
27F:→ celestialgod: 没资料 我也无从抓药了(摊手 12/02 13:25
28F:→ locka: 既然length(model1.1$residual)=510,为什麽你会说用model1. 12/02 13:44
29F:→ locka: 1$residual是533?你是怎麽看的? 12/02 13:45
30F:→ locka: 如果讯息说deleted due to missingness即代表你有样本是无 12/02 13:46
31F:→ locka: 法fit model产出预测值,那当然会没办法计算残差了 12/02 13:47
32F:→ locka: 如果还是想要把第一个模型的残差加入第二个模型,你必须要 12/02 13:49
33F:→ locka: 1.把模型2中对应到模型1中missing的那几笔资料删除 12/02 13:52
34F:→ locka: 2.解决missing 问题(depends on资料特性) 12/02 13:53
35F:→ developme223: cbind(model.1$residual)直接观察每个残差值,共533 12/02 13:56
36F:→ developme223: 个,并没有NA的数字存在。 12/02 13:57
37F:→ celestialgod: 没资料都只能凭空想像,原PO真的想解决就上传资料吧 12/02 14:20
38F:→ allen1985: 与其凭空乱猜 有资料应该几分钟就有神人帮你debug了 12/02 15:16
39F:→ allen1985: btw 你是想fit一个没有intercept的回归线吗 12/02 15:18
40F:→ developme223: 各位抱歉,刚发现是因为各个解释变数有NA值,才造成 12/02 20:19
41F:→ developme223: 残差有23个NA值,因为model.1$residual不会显示NA值 12/02 20:20
42F:→ developme223: 所以才没发现有NA值。 12/02 20:21
43F:→ developme223: 想问有没有办法让回归结果出现NA值,即刚好533列数 12/02 20:23
44F:→ developme223: 感谢各位。 12/02 20:25
45F:→ celestialgod: 直接na.omit再去fit model就好了 12/02 21:02
46F:→ locka: 其实不是很了解为什麽要用model.1的残差去跟别人作回归,而 12/02 21:20
47F:→ locka: 且还是model.2还是用一样的资料?(c大的na.omit应该是正解) 12/02 21:23
48F:→ developme223: 排除掉X1 X2 X3 对Y的影响,再用Y去解释新的变数。 12/02 21:43
49F:→ developme223: 跟用一样的资料无关,就只是很简单的变数探讨。 12/02 21:44
50F:→ allen1985: 这样只排除掉x1x2x3对y “线性”的影响 12/04 01:02
51F:→ andrew43: to locka, 有些permutation test这样做, 也有些是特别 12/04 03:50
52F:→ andrew43: 的目的,例如把 y~x 的残差视为 x 相同下 y 的中心化值 12/04 03:51
53F:→ andrew43: 有需要了解这种应用可以开一个新的讨论。 12/04 04:02