簡體   English   中英

如何從列表中提取模型系數並制作圖?

[英]How to extract model coeff from a list and make Plots?

我有一個數據框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)))]) 

我該如何繪圖?

關於什么

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

要提取模型的系數,可以使用stats::coef() 現在,您只需要遍歷列表,就可以像使用lapply()一樣使用lapply()進行操作。

如果您沒有stats::coef() ,則可以使用類似以下的方法從列表中提取coefficients條目

lapply(res, `[[`, "coefficients")
# or slightly more verbose
lapply(res, function(x) x[["coefficients"]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM