2016-09-13 48 views
3

私は2つの回帰直線を同じプロットに入れようとしています。ggplotを使って回帰直線をプロットする方法は?

model1 <- glm(species~logarea, family=poisson, data=fish) 
model2 <- glm.nb(species~logarea, data=fish) 

plot(species~logarea,data=fish) 
lines(fitted(model1)[order(logarea)]~sort(logarea),data=fish) 
lines(fitted(model2)[order(logarea)]~sort(logarea),data=fish) 

私は別の色と異なるラインを表示することができますので、プロットの上に複製するggplotを使用することを考えています:私は以下のコードを使用してではなく、ラインの同じ色でそれを行うことができます。しかし、私はそれを行う方法を理解できませんでした。

私は唯一の散布図を描いている最初のステップを終えたが、それに行を追加する方法を知りません。

ggplot(fish,aes(fish$logarea,fish$SPECIES))+geom_point() 

は、私はいくつかの検索を行なったし、私は回帰直線を生成するgeom_smooth(メソッド=「GLM」)を使用することができることを理解しています。しかし、それは私が構築したモデルに基づいていないようです。

誰もがこれにいくつかの光を当てることができますか?

多くのありがとうございます。

答えて

3

ただ、このような場合のために、geom_line(aes(y=fitted_datas))を追加します。

data("mtcars") 
library(ggplot2) 
model <- glm(mpg~hp, family=poisson, data=mtcars) 
ggplot(mtcars,aes(hp,mpg))+geom_point()+geom_line(aes(y=fitted(model))) 

結果:

enter image description here

+0

おかげで多くのことを。それは私のコードでうまく動作します。 – Peter

2

をあなたはgeom_smoothで直接モデルを収めることができます。この場合、glmのファミリを定義するには、method.args引数を使用してフィッティングメソッドに余分な引数を渡す必要があります。ここ

は機種ごとに異なる色を追加すること、一例です。私はse = FALSEを使って信頼区間を削除します。お返事、Araultため

ggplot(fish,aes(logarea, SPECIES)) + 
    geom_point() + 
    geom_smooth(method = "glm", method.args = list(family = poisson), aes(color = "poisson"), se = FALSE) + 
    geom_smooth(method = MASS::glm.nb, aes(color = "NB"), se = FALSE) 
関連する問題