将回归线拟合到具有R中的对数轴的图形

时间:2016-09-22 18:17:31

标签: r regression transformation logarithm

我试图用对数轴制作一个简单的体型/体重回归图,但我似乎无法在图中拟合直线回归线。

我尝试过使用untf功能,但没有生成任何行。

以下是我尝试的简化示例:

config/routes.rb

我已经查看了之前有关同一问题的问题,但无法找到适合我的任何解决方案。

Example of graph generated

3 个答案:

答案 0 :(得分:2)

在对数刻度中绘制原始变量不同于在原始刻度中绘制(拟合的回归线)对数变换后的变量,我们应该做后者以获得所需的结果(绘制拟合的回归线与原始比例中的对数转换变量),mtcars数据集的示例:

plot(log(mtcars$mpg)~log(mtcars$wt)) # plot the log-transformed variables, not in log-scale  
reg=lm(log(mtcars$mpg)~log(mtcars$wt))
abline(reg, untf=F)

enter image description here

另一种选择是以对数比例绘制所有内容,但在原始比例中拟合回归线。

plot(mtcars$mpg~mtcars$wt, log="xy") 
reg=lm(mtcars$mpg~mtcars$wt)
abline(reg, untf=T)

enter image description here

当我们想要将对数刻度图与回归拟合与log-tranformed结合使用时,用OLS计算的截距不是对数刻度的,所以我想我们需要用它进行一些对数转换,但它会产生下面的图,具有正确的线斜率,但偏移量不正确。

plot(mtcars$mpg~mtcars$wt, log="xy") 
reg=lm(log(mtcars$mpg)~log(mtcars$wt))
abline(log(reg$coefficients[1]), reg$coefficients[2], untf=F)

enter image description here

答案 1 :(得分:0)

我发现如果我按如下方式生成对数转换数据的线性回归:

plot(logWet.weight~logAverageBL, data=mtrosslog)
reg<-lm(logWet.weight~logAverageBL, data=mtrosslog)

Call:
lm(formula = logWet.weight ~ logAverageBL, data = mtrosslog)

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -3.73798    0.11997  -31.16   <2e-16 ***
logAverageBL  2.86705    0.09002   31.85   <2e-16 ***

然后用log-log轴生成一个图,我可以将从对数转换数据(reg)生成的回归拟合到这个未转换数据图中:

plot(Wet.weight~Average.BL, data = mtross, log = 'xy')
ablineclip(reg)

Regression line generated from log transformed data plotted on graph of untransformed data with log-log axes

答案 2 :(得分:0)

您仍然可以将回归线直接绘制到对数-对数图上。您只需要使用以10为底的对数(因为这就是对数-对数图所使用的)。

plot(mtcars$mpg~mtcars$wt, log="xy") 
reg=lm(log(mtcars$mpg,base=10)~log(mtcars$wt,base=10))
abline(reg, untf=F)

resulting figure