在 logit 模型中包括星期几

机器算法验证 r 物流 分类数据
2022-04-04 07:20:50

假设我正在建立一个逻辑回归模型,在该模型中我根据星期几预测某些东西 (y)。但是,该模型需要考虑每一天。

因此,而不是:

y = B0 + B1*(day)

其中 day 是一个具有 7 个级别的分类变量。

这将是:

y = B0 + B1*(monday) + B2*(tuesday) + B3*(wednesday) + ... + B7*(sunday)

我基本上认为每天都需要一个单独的系数,因为每个系数对 y 都有不同的影响。但是,我认为每个都需要是一个虚拟变量,以便星期一,1 代表星期一,0 代表不星期一,依此类推。

我只是好奇是否有统计逻辑可以在不同的日子里以第二种方式进行?最好的方法是什么?

1个回答

以天为分类变量的模型具有七个级别,确实考虑了每一天。可以这么说,您不需要“手动”进行操作。

例如:

library(MASS)

# Construct sample data: 700 observations, 100 on each of 7 days of week
Day <- factor(rep(c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"), 100),
              levels=c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"),
              ordered=TRUE)
Day.effect <- rep(rnorm(7), 100)
y <- rbinom(700, 1, 1/(1+exp(-Day.effect)))

# Estimate logit model without intercept (captures each day's effect)
foo <- summary(glm(y~Day-1, family=binomial))

# compare actuals to estimates
coefs <- foo$coefficients
coefs <- cbind(Day.effect, coefs)
colnames(coefs)[1] <- "Actual"
options(digits=3)

> coefs
             Actual Estimate Std. Error z value Pr(>|z|)
DayMonday     0.520    0.490      0.206   2.376 1.75e-02
DayTuesday   -0.230   -0.323      0.203  -1.593 1.11e-01
DayWednesday -0.247   -0.447      0.205  -2.182 2.91e-02
DayThursday  -1.156   -1.266      0.241  -5.243 1.58e-07
DayFriday     0.282    0.160      0.201   0.799 4.24e-01
DaySaturday  -0.383   -0.405      0.204  -1.986 4.70e-02
DaySunday    -0.357   -0.447      0.205  -2.182 2.91e-02

这似乎只是你想要的。