[英]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.