[问题] 取出Residual再跑一次Regression

楼主: developme223 (allen)   2015-12-01 17:28:36
[问题类型]:
程式咨询(我想用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重组资料,但好像也无法解决,想请教各位高手

[关键字]:
作者: celestialgod (天)   2015-12-01 17:33:00
model.1$residual长度不为533?先确认模型1的残差是否长度跟原本data.frame列数箱异
作者: locka (locka)   2015-12-01 18:14:00
我想您应该是做model1时有产生NA(如果有的话summary(model1)会告诉你due to singularities…blabla),NA的资料会被略过,所以该model计算的残差个数跟原始资料笔数会不同。其中一个可能原因是解释变量有共线性问题,建议您再检查一下您的回归模型~
楼主: developme223 (allen)   2015-12-02 11:44:00
原本的model.1所有的解释变量及被解释变量length数皆为533但跑完回归后,summary(model.1) 出现23observationdeleted due to missingnesslength(model.1$residual)=510不过用model.1$residual看整个残差就是533个l大,如果是完全共线性的话,应该估计系数值跑不出来,与样本数好像没关系(?)
作者: celestialgod (天)   2015-12-02 12:05:00
所以是你有23个观察值全部都是NA更正 有NA所以你把没NA的观察值挑出来 fit模型就好了
楼主: developme223 (allen)   2015-12-02 12:48:00
但我用model.1$residual或cbind(model.1$residual)观看资料,都还是533个样本
作者: celestialgod (天)   2015-12-02 12:51:00
所以问题出在哪= =?如果长度还是533就没有问题啦
楼主: developme223 (allen)   2015-12-02 13:04:00
问题出在我直接用残差跑,还是显示变量长度相异。在想是不是资料型态排列的关系。
作者: celestialgod (天)   2015-12-02 13:25:00
没资料 我也无从抓药了(摊手
作者: locka (locka)   2015-12-02 13:44:00
既然length(model1.1$residual)=510,为什么你会说用model1.1$residual是533?你是怎么看的?如果讯息说deleted due to missingness即代表你有样本是无法fit model产出预测值,那当然会没办法计算残差了如果还是想要把第一个模型的残差加入第二个模型,你必须要1.把模型2中对应到模型1中missing的那几笔资料删除2.解决missing 问题(depends on资料特性)
楼主: developme223 (allen)   2015-12-02 13:56:00
cbind(model.1$residual)直接观察每个残差值,共533个,并没有NA的数字存在。
作者: celestialgod (天)   2015-12-02 14:20:00
没资料都只能凭空想像,原PO真的想解决就上传资料吧
作者: allen1985 (我要低调 拯救形象)   2015-12-02 15:16:00
与其凭空乱猜 有资料应该几分钟就有神人帮你debug了btw 你是想fit一个没有intercept的回归线吗
楼主: developme223 (allen)   2015-12-02 20:19:00
各位抱歉,刚发现是因为各个解释变量有NA值,才造成残差有23个NA值,因为model.1$residual不会显示NA值所以才没发现有NA值。想问有没有办法让回归结果出现NA值,即刚好533列数感谢各位。
作者: celestialgod (天)   2015-12-02 21:02:00
直接na.omit再去fit model就好了
作者: locka (locka)   2015-12-02 21:20:00
其实不是很了解为什么要用model.1的残差去跟别人作回归,而且还是model.2还是用一样的资料?(c大的na.omit应该是正解)
楼主: developme223 (allen)   2015-12-02 21:43:00
排除掉X1 X2 X3 对Y的影响,再用Y去解释新的变量。跟用一样的资料无关,就只是很简单的变量探讨。
作者: allen1985 (我要低调 拯救形象)   2015-12-04 01:02:00
这样只排除掉x1x2x3对y “线性”的影响
作者: andrew43 (讨厌有好心推文后删文者)   2015-12-04 03:50:00
to locka, 有些permutation test这样做, 也有些是特别的目的,例如把 y~x 的残差视为 x 相同下 y 的中心化值有需要了解这种应用可以开一个新的讨论。

Links booklink

Contact Us: admin [ a t ] ucptt.com