在R中的图形上绘制对数曲线
Draw a logarithmic curve on graph in R
我有以下一组数据,绘制时具有曲线关系
Fish.species.richness Habitat.Complexity log.habitat
17 0.6376 -0.1954858
13 0.2335 -0.6317131
30 0.2866 -0.5427238
20 0.3231 -0.4906630
22 0.1073 -0.9694003
25 0.2818 -0.5500590
2 0.2182 -0.6612448
4 0.0189 -1.7246886
19 0.2960 -0.5287083
25 0.5507 -0.2590849
29 0.2689 -0.5704900
21 0.6286 -0.2016602
18 0.1557 -0.8078509
24 0.6851 -0.1642460
30 0.5059 -0.2959353
32 0.4434 -0.3532043
29 0.3585 -0.4455108
32 0.5920 -0.2276783
当我记录 x 轴并进行线性回归以找到截距和斜率时,我可以添加一条适合数据的线:
summary(lm(Fish.species.richness~log.habitat,data=three))
plot(three$log.habitat,
three$Fish.species.richness,
xlab='Log Habitat Complexity',
ylab='Fish Species Richness')
abline(29.178,13.843)
然而,当我进行曲线回归并尝试绘制曲线时,它与数据不符,我哪里出错了?
mod.log<-lm(Fish.species.richness~log(Habitat.Complexity),data=three)
plot(three$Habitat.Complexity,
three$Fish.species.richness)
abline(mod.log)
abline
只能画直线,形式为y = a + bx。可以使用 curve
函数添加其他曲线。
plot(Fish.species.richness ~ Habitat.Complexity, three)
curve(coef(mod.log)[1] + coef(mod.log)[2]*log(x), add=TRUE)
为了其他模型类型的清晰度和灵活性,您可能需要使用 predict
函数来计算预测变量范围内的预测值:
mod.log<-lm(Fish.species.richness~log(Habitat.Complexity), data=three)
# predict along predictor variable range
newdat <- data.frame(Habitat.Complexity=seq(min(three$Habitat.Complexity), max(three$Habitat.Complexity),,100))
newdat$Fish.species.richness <- predict(mod.log, newdat, type="response")
# plot
plot(Fish.species.richness ~ Habitat.Complexity, data=three)
lines(Fish.species.richness ~ Habitat.Complexity, data=newdat)
使用ggplot2
:
ggplot(three, aes(Habitat.Complexity, Fish.species.richness))+
geom_point(shape = 1) + stat_smooth(method = "lm", formula = y ~ log(x))
我有以下一组数据,绘制时具有曲线关系
Fish.species.richness Habitat.Complexity log.habitat
17 0.6376 -0.1954858
13 0.2335 -0.6317131
30 0.2866 -0.5427238
20 0.3231 -0.4906630
22 0.1073 -0.9694003
25 0.2818 -0.5500590
2 0.2182 -0.6612448
4 0.0189 -1.7246886
19 0.2960 -0.5287083
25 0.5507 -0.2590849
29 0.2689 -0.5704900
21 0.6286 -0.2016602
18 0.1557 -0.8078509
24 0.6851 -0.1642460
30 0.5059 -0.2959353
32 0.4434 -0.3532043
29 0.3585 -0.4455108
32 0.5920 -0.2276783
当我记录 x 轴并进行线性回归以找到截距和斜率时,我可以添加一条适合数据的线:
summary(lm(Fish.species.richness~log.habitat,data=three))
plot(three$log.habitat,
three$Fish.species.richness,
xlab='Log Habitat Complexity',
ylab='Fish Species Richness')
abline(29.178,13.843)
然而,当我进行曲线回归并尝试绘制曲线时,它与数据不符,我哪里出错了?
mod.log<-lm(Fish.species.richness~log(Habitat.Complexity),data=three)
plot(three$Habitat.Complexity,
three$Fish.species.richness)
abline(mod.log)
abline
只能画直线,形式为y = a + bx。可以使用 curve
函数添加其他曲线。
plot(Fish.species.richness ~ Habitat.Complexity, three)
curve(coef(mod.log)[1] + coef(mod.log)[2]*log(x), add=TRUE)
为了其他模型类型的清晰度和灵活性,您可能需要使用 predict
函数来计算预测变量范围内的预测值:
mod.log<-lm(Fish.species.richness~log(Habitat.Complexity), data=three)
# predict along predictor variable range
newdat <- data.frame(Habitat.Complexity=seq(min(three$Habitat.Complexity), max(three$Habitat.Complexity),,100))
newdat$Fish.species.richness <- predict(mod.log, newdat, type="response")
# plot
plot(Fish.species.richness ~ Habitat.Complexity, data=three)
lines(Fish.species.richness ~ Habitat.Complexity, data=newdat)
使用ggplot2
:
ggplot(three, aes(Habitat.Complexity, Fish.species.richness))+
geom_point(shape = 1) + stat_smooth(method = "lm", formula = y ~ log(x))