r中的绘图错误:“ x”和“ y”的长度不同

时间:2019-08-10 09:33:26

标签: r plot na

我想为我的回归绘制残差图。 我想像在这里(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 (很抱歉,如果不是方便复制粘贴,请尽我所能)

2 个答案:

答案 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)