Две различные множественные регрессии модели Пуассона GLM, средние точки и доверительный интервал - PullRequest
0 голосов
/ 19 марта 2019

Я хотел бы создать график в ggplot2, который бы совмещал две разные множественные модели Пуассона GLM, отрегулированные, средние точки и доверительный интервал (IC 95%). Но мое представление средней точки не работает.

#Artificial data set
Consumption <- c(501, 502, 503, 504, 26, 27, 55, 56, 68, 69, 72, 93)
Gender <- gl(n = 2, k = 6, length = 2*6, labels = c("Male", "Female"), ordered = FALSE)
Income <- c(5010, 5020, 5030, 5040, 260, 270, 550, 560, 680, 690, 720, 930)
df3 <- data.frame(Consumption, Gender, Income)
df3

# GLM Regression 
fm1 <- glm(Consumption~Gender+Income, data=df3, family=poisson)
summary(fm1)

# ANOVA
anova(fm1,test="Chi")

#Genders are different than I ajusted one model for male and another for Female

#Male model
df4<-df3[df3$Gender=="Male",]
fm2 <- glm(Consumption~Income, data=df4, family=poisson)
summary(fm2)

#Female model
df5<-df3[df3$Gender=="Female",]
fm3 <- glm(Consumption~Income, data=df5, family=poisson)
summary(fm3)

#Create preditions amd confidence interval
Predictions <- c(predict(fm2, type="link", se.fit = TRUE),
                 predict(fm3, type="link", se.fit = TRUE))
df3_combined <- cbind(df3, Predictions)
df3_combined$UCL<-df3_combined$fit + 1.96*df3_combined$se.fit
df3_combined$LCL<-df3_combined$fit - 1.96*df3_combined$se.fit
df3_combined<-df3_combined[,-(6:9)]
df3_combined<-as.data.frame(df3_combined)



#Create mean values for plot this values
library(dplyr)
df<-df3_combined %>%
  group_by(Income, Gender) %>%
  summarize(Consumption = mean(Consumption, na.rm = TRUE))
df<-as.data.frame(df)

#Plot
library(tidyverse)
library(ggplot2)
df3_combined %>%
  gather(type, value, Consumption) %>%
  ggplot(mapping=aes(x=Income, y=Consumption, color = Gender)) + 
  geom_point(df,mapping=aes(x=Income, y=Consumption, color = Gender)) +  
  geom_line(mapping=aes(x=Income, y=exp(fit))) +
  geom_smooth(mapping=aes(ymin = exp(LCL), ymax = exp(UCL)), stat="identity") 
#

test

Я не вижу средних значений, созданных в df объекте, в моем выходном графике, и я не знаю почему. Спасибо заранее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...