2017-08-30 69 views
0

在R中我使用二項因變量擬合個人級別數據的GLM(logit)。在R中彙總個體級別的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) 

有沒有人知道如何處理這個? 如果我不指定在stat_smooth調用公式,有兩件事情,又不是我想怎麼看呢:

  1. 它只是需要y ~ x的公式。不過,我也想包含交互變量。
  2. 我想適合個人層面的數據,而不是聚合層面的數據。

不指定公式,劇情是這樣的:

enter image description here

+0

首先,可以爲您提供您所需要的情節任何的例子嗎?其次,爲什麼在你的'ggplot'中_carb_是獨立變量,而在你的'glm()中_carb_沒有被包含作爲變量? ggplot中的 – MikolajM

+0

x應該是_mpg_,現在已經編輯過了。此外,我插入了我需要的情節,雖然這個情節只是基於y〜x,而我想指定更多的風險驅動程序而不僅僅是x。 – Z117

+0

我認爲''stat_summary()'你只能指定一個預測變量/只有一個x。此外,如果你想要顯示你的glm的方程,那你有5個不同的預測器,那麼你需要有一個5維的情節,什麼是不可能的。我的解決方案是使用'predict()'預測不同_mpg_的_vs_值,而其他變量是常量 – MikolajM

回答

1

正如我在評論中寫道,我認爲這是不可能想象這樣的GLM,你會報答一個5維的情節。然而,有可能在不同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