我想为我的回归绘制残差图。 我想像在这里(http://www.r-tutor.com/elementary-statistics/simple-linear-regression/residual-plot)那样绘制它,如下所示:
model1 <- lm(ROA ~ LN_CO2, data=model1)
model1.res <- resid(model1)
plot(LN_CO2, model1.res)
但是,我遇到此错误:
> plot(LN_CO2, model1.res)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
我认为它是发生的,因为在计算“ resid()”时,遗漏值(NA)被忽略了,然后model1.res和LN_CO2的数据量不相等。因此,绘制错误。 如果我是对的,我仍然不知道如何使用na.exclude,na.omit等。 有人可以帮我吗?
编辑:
我的数据如下所示(我有大约1200个过时现象):
残差:
-1.345901 -2.124645 -3.614880 -4.703744 7.305482 -4.041825
LN_CO2:
7.278 7.872 6.902 7.296 8.173 8.335
(很抱歉,如果不是方便复制粘贴,请尽我所能)
答案 0 :(得分:0)
正如评论(现已删除)指出的那样,您可以通过将拟合结果保存到model1
来擦除数据框。不要那样做
您可以使用
fit1 <- lm(ROA ~ LN_CO2, data=model1, na.action = na.exclude)
包含NA
个残差。但是拟合可能使用了model1$LN_CO2
,不一定与LN_CO2
相同,因此这也可能是您遇到问题的原因:一种更安全的绘制方法是
fit1.res <- resid(fit1)
plot(fit1.res ~ LN_CO2, data = model1)
或
plot(model1$LN_CO2, fit1.res)
答案 1 :(得分:0)
您可以使用数据和残差创建一个数据框,仅选择完整的情况:
df <- data.frame(LN_CO2, model1.res)
df2 <- df[complete.cases(df),]
然后您可以从那里绘图:
plot(df2$LN_CO2, df2$model1.res)