2017-08-30 4 views
0

Rでは、個別レベルのデータにGLM(logit)を二項従属変数で当てはめています。集計レベルで個別レベルglm-fitをプロットする

しかし、私は、集計レベル(つまり、y軸の成功率%)でフィットをプロットしたいと考えています。実現されたデータ(集計)と回帰直線の散布をプロットする最も簡単な方法は何でしょうか? 私はすでにstat_smooth()でggplotを試しましたが、集計レベルで分散を作成すると、glmもこの集約レベルに適合します。

library(datasets) 
data(mtcars) 
fit <- glm(vs ~ mpg + cyl + mpg:cyl + disp + drat, family=binomial(link='logit'), data=mtcars) 

mtcars_agg <- mtcars %>% 
    group_by(carb) %>% 
    summarise_each(funs(mean)) 

form <- formula("mtcars$vs ~ mtcars$mpg + mtcars$cyl + mtcars$mpg:mtcars$cyl + mtcars$disp + mtcars$drat") 

ggplot(mtcars_agg, aes(x=mpg, y=vs)) + geom_point() + 
    stat_smooth(data=mtcars, method="glm", formula = form, method.args=list(family="binomial"), se=FALSE) 

誰もこれに対処する方法を知っていますか?

  1. それはちょうど式としてy ~ xを取ります 私はstat_smooth呼び出しで式を指定しない場合、私はそれを見たいかではない2つのものがあります。しかし、私は相互作用変数も含めたいと思います。
  2. 集計レベルのデータではなく、個別レベルのデータに合わせたいと思います。式を指定せずに

は、プロットは次のようになります。

enter image description here

+0

まず、あなたが必要とプロットのいずれかの例を提供することができますか?第二に、なぜあなたの 'ggplot' _carb_が独立変数で、' glm() 'で_carb_が変数に含まれていないのですか? 'ggplot'の – MikolajM

+0

は、xが_mpg_であったはずです。これを今編集しました。さらに、私は必要なプロットを挿入しましたが、そのプロットはちょうどy〜xに基づいていますが、xよりも多くのリスクドライバーを指定したいと思います。 – Z117

+0

'stat_summary()'では、1つのプレディクタ/ 1つのxしか指定できないと思います。さらに、5つの異なるプレディクタを持つglmの式を視覚化したい場合は、不可能な5次元のプロットが必要です。私の解決策は '_()'を使って、_mpg_の_vs_値を予測し、他の変数は定数です – MikolajM

答えて

1

私はコメントに書いたように、私はあなたが5次元プロットを報いると同じようなGLMを視覚化することは不可能だと思います。しかし、他の変数が一定である間に、異なるmpg(または他の変数)に対する確率を視覚化することが可能である。ここで

は私の例である:

library(datasets) 
data(mtcars) 

fit <- glm(vs ~ mpg + cyl + mpg:cyl + disp + drat, family=binomial(link='logit'), data=mtcars) 

to.visualize <- expand.grid(mpg=c(10:35), cyl=4, disp=300, drat=4) 
to.visualize$vs <- predict.glm(fit, newdata = to.visualize, type="response") 

library(ggplot2) 
ggplot(data=to.visualize, aes(x=mpg, y=vs))+ 
    geom_point()+ 
    geom_path()+ 
    ggtitle("Probability of vs for different mpg while cyl=4, disp=300, drat=4") 

次のようになりますプロット与えるもの:

Prob. of vs for different mpg

関連する問題