Как извлечь модельный коэф из списка и составить графики? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть фрейм данных DF со столбцами TrainStation, timeofday, Date и NumberOfPassenger .

Сначала вы видите код, затем файл для регрессии и, наконец, список с регрессией

TrainStation<-c("East","North","East","North","North","Central","North",
                "Central","East","North","East","North","Central","North",
                "Central","North","Central","North","Central","North","Central",
                "North","Central","East","North","East","North","Central","North",
                "Central","East","North","East","North","Central","East")

TimeOfday<-c(12,12,8,16,10,6,0,7,1,3,23,15,12,8,16,10,1,3,5,7,9,10,12,11,17,2,4,5,
             13,14,18,19,20,21,22,23)

Date<-sample(seq(as.Date('2019/01/01'), as.Date('2019/02/28'), by="day"), 36)
Date<-as.character(Date)

DF<-cbind(TrainStation,TimeOfday,Date)
DF<-as.data.frame(DF)

#Weekdays
DF$Date<-as.Date(DF$Date)
DF$Date<-weekdays(DF$Date)
#TimeOfday
DF$TimeOfday<-strptime(DF$TimeOfday,format = "%H")
DF$TimeOfday<-hour(DF$TimeOfday)

DF$TrainStation<-as.character(DF$TrainStation)
DF$TimeOfday<-as.factor(DF$TimeOfday)
DF$Date<-as.factor(DF$Date)

И мои данные для регрессии таковы:

library(tidyverse)
DF2<-DF%>%
  group_by(TrainStation,Date,TimeOfday)%>%
  summarize(NumberOfPassenger = n_distinct(TrainStation))

затем я делаю список с моими данными, за которым следует регрессия (glm)

#List and glm
l_DF2<-split(DF2,DF2$TrainStation)
lapply(l_DF2, function(x) glm(formula = NumberOfPassenger~TimeOfday+Date,family = poisson(link = "log"), data = x))

Вопрос:

Теперь я хотел бы взглянуть на коэффициенты и сделать несколько Сюжеты .Но как я могу получить коэффициенты из списка?

Пример графика для другой модели:

mod<-glm(formula = NumberOfPassenger~TrainStation+TimeOfday+Date,family = poisson(link = "log"), data = DF2)

я мог бы показать коэффициенты TimeOfday на графикес этим:

barplot(coef(mod)[grep("TimeOfday",names(coef(mod)))]) 

Как я могу построить в моем случае?

1 Ответ

1 голос
/ 17 мая 2019

А как же

res <- lapply(l_DF2,
  function(x) {
    glm(formula = NumberOfPassenger ~ TimeOfday + Date,
        family = poisson(link = "log"), data = x)
  }
)
lapply(res, coef)

Чтобы извлечь коэффициенты модели, вы можете использовать stats::coef(). Теперь вам нужно только перебрать свой список, что вы можете сделать, используя lapply(), как вы уже сделали, чтобы соответствовать моделям.

Если у вас нет stats::coef(), вы можете просто извлечь coefficients записи из списка, используя что-то вроде

lapply(res, `[[`, "coefficients")
# or slightly more verbose
lapply(res, function(x) x[["coefficients"]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...