对数 - 对数图上的线性回归 - 手动绘制lm()系数作为abline()产生不合适的情况

时间:2013-04-05 13:47:59

标签: r plot curve lm

我道歉,因为我之前已经问了同样的问题,但答案一直运作到现在为止。我使用这种方法生成了六个看起来很好的图,但现在我已经有了两个奇怪的图。您可以使用此示例看到此“缺乏适合度”:

x=c(9222,187720,42162,7005,3121,7534,21957,272901,109667,1394312,12230,69607471,79183,6389,64859,32479,3535,9414098,2464,67917,59178,2278,33064,357535,11876,21036,11018,12499632,5160,84574)
y=c(0,4,1,0,1,0,0,1,5,13,0,322,0,0,1,1,1,32,0,0,0,0,0,0,0,0,0,33,1,1)
lin=lm(y~x)
plot(x, y, log="xy")
abline(lin, col="blue", untf=TRUE)

这是我使用真实数据生成的图(左边是log-log,右边是normal):

freaky slope

我并不太关心缺失的0值,因为我认为lin仍会考虑这些因素,但是正如您在日志图中看到的那样,即使在(1,1)附近也没有开始。从它现在的样子看,我希望看到大约(1000,10)点。

任何人都知道发生了什么事吗?手动绘制lin的系数会有帮助吗?如果是这样,任何人都可以向我解释我将如何做到这一点?

1 个答案:

答案 0 :(得分:5)

首先让我们看一下线性模型的杠杆图:

plot(lin,which=5)

leverage plot of linear model

如您所见,第12点(y = 322)和第28点(y = 33)是最有影响力的。此外,随着x值的增加,拟合线周围的散射变得更大。因此,加权回归似乎是合适的:

lin2 <- lm(y~x,weights=1/x)
summary(lin2)

Call:
lm(formula = y ~ x, weights = 1/x)

Weighted Residuals:
      Min        1Q    Median        3Q       Max 
-0.006699 -0.003383 -0.002407  0.002521  0.012733 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3.099e-01  1.092e-01   2.838  0.00835 ** 
x           4.317e-06  5.850e-07   7.381 4.89e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.005674 on 28 degrees of freedom
Multiple R-squared: 0.6605, Adjusted R-squared: 0.6484 
F-statistic: 54.47 on 1 and 28 DF,  p-value: 4.888e-08 


plot(lin2,which=5)

leverage plot of weighted linear model

这已经更好了。

plot(x, y, log="xy",ylim=c(0.1,350))
abline(lin, col="blue", untf=TRUE)
abline(lin2, col="green", untf=TRUE)

results (请记住,这里没有绘制0值)

根据您的数据实际描述的内容,您可以考虑使用广义线性模型。