我在非常宽的x范围内有一些数据,我使用R中的对数x轴进行绘图。当我使用MS Excel绘制数据并添加线性趋势线时,得到的输出是我希望的给出我的数据集和预期结果(见下图)。
我想用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值?谢谢。
答案 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")
ggplot(data, aes(x, y)) + geom_point() + stat_smooth(method = "lm") +
coord_trans(x = "log10")
正如您所看到的,回归线开始“倾斜”并没有任何意义。 &#34;
如果在绘制之前对x值进行对数转换,最终得到如下图:
如果您真正感兴趣的是变更点分析,那么您可以适应它。
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)