Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的图上画一条对数曲线_R_Ggplot2_Regression_Curve Fitting - Fatal编程技术网

在R中的图上画一条对数曲线

在R中的图上画一条对数曲线,r,ggplot2,regression,curve-fitting,R,Ggplot2,Regression,Curve Fitting,我有以下一组数据,绘制时有一个曲线关系 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 -

我有以下一组数据,绘制时有一个曲线关系

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)

mod.log
abline
只能以y=a+bx的形式绘制直线。可以使用
曲线
功能添加其他曲线

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)

mod.log使用
ggplot2

ggplot(three, aes(Habitat.Complexity, Fish.species.richness))+
  geom_point(shape = 1) + stat_smooth(method = "lm", formula = y ~ log(x))