2015-08-26 4 views
0

У меня есть следующий набор данных, и при построении графика имеет криволинейные отношенияDraw логарифмической кривой на графике в 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 

При входе оси х и сделать линейную регрессию, чтобы найти точку пересечения и наклон I могут добавить строку, которая соответствует данным:

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) 

ответ

1

Использование ggplot2:

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

enter image description here

1

abline может рисовать только прямые линии, на форме у = а + Ьх. Другие кривые могут быть добавлены с помощью функции curve.

plot(Fish.species.richness ~ Habitat.Complexity, three) 
curve(coef(mod.log)[1] + coef(mod.log)[2]*log(x), add=TRUE) 

Logarithmic curve fit

0

Для ясности и гибкости для других типов моделей, вы можете использовать функцию 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) 

enter image description here

Смежные вопросы