将回归线添加到对数x标度

时间:2017-08-02 18:53:04

标签: r excel ggplot2 regression logarithm

我在非常宽的x范围内有一些数据,我使用R中的对数x轴进行绘图。当我使用MS Excel绘制数据并添加线性趋势线时,得到的输出是我希望的给出我的数据集和预期结果(见下图)。

Excel scatterplot

我想用R来实现这一点。我可以将数据绘制好,然后运行回归模型,但R似乎并不想添加回归线/曲线。

这是我的数据:

data <-
  data.frame(
    x = c(
      6.37E-05,
      0.000584271,
      0.001044085,
      0.00011272,
      3.95E-05,
      6.05E-05,
      0.000277963,
      0.001800305,
      3.70E-05,
      0.002588335,
      0.000710123,
      0.000148309,
      0.001069184,
      0.001877917,
      0.01086776,
      0.043686462,
      0.000276426
    ),
    y = c(
      -0.3375,
      -0.35,
      -0.35,
      -0.35,
      -0.3,
      -0.35,
      -0.3625,
      -0.375,
      -0.3,
      -0.3625,
      -0.3,
      -0.3375,
      -0.29,
      -0.34,
      -0.4,
      -0.48,
      -0.3375
    )
  )

这是我迄今为止尝试过的代码。

attach(data)
    plot(data$x,data$y,log="x",xlab="independent variable",
     ylab="dependent variable")
model<-lm(data$y~data$x)
abline(model) # THIS STEP DOESN'T WORK

我有三个问题:

1)。如何在基本R?

的y~logx图上显示回归线

2)。我该如何重复1)。使用ggplot?

3)。当回归线/曲线开始“&#39; dip&#39;?

时,如何找到(log)x值?

谢谢。

2 个答案:

答案 0 :(得分:0)

你能让这个例子重现吗? 我认为这可能有用。

dataframe %>%
ggplot(aes(x = log(x), y = y) +
 geom_point() +
 geom_smooth(method = "loess") +
 xlab("independent variable")

这使用dplyr和ggplot2。

答案 1 :(得分:0)

ggplot(data, aes(x, y)) + geom_point() + stat_smooth(method = "lm")

enter image description here

ggplot(data, aes(x, y)) + geom_point() + stat_smooth(method = "lm") +
  coord_trans(x = "log10")

enter image description here

正如您所看到的,回归线开始“倾斜”并没有任何意义。 &#34;

更新

如果在绘制之前对x值进行对数转换,最终得到如下图:

enter image description here

如果您真正感兴趣的是变更点分析,那么您可以适应它。

data.fit <- nls(100*y ~ pmin(plat, intx + slx*log(x)), 
                  data = data,
                  start = list(plat = -32, intx = -60, slx = -4), 
                  control = nls.control(warnOnly = T))
summary(data.fit)
coef(data.fit)

enter image description here