从这边开始,由于每天学习量比较大,除了学习R语言,还要同时查阅文献,准备接下来的试验设计,再加上等到疫情结束以后需要马上投入试验,还有几个本科生的毕业论文,所有接下去的学习记录主要以一节一节的形式记录下来。
1. glm()函数
glm(formula, family=family(link=function), data=) 可拟合多种模型,如Logistic回归、泊松回归等。
| 分 布 族 | 默认的连接函数 |
| binomial | (link = 'logit') |
| gaussian | (link = 'identity') |
| gamma | (link = 'inverse') |
| inverse.guassian | (link = 'l/mu^2') |
| poisson | (link = 'log') |
| quasi | (link = 'identity', variance = 'constant') |
| quasibinomial | (link = 'logit') |
| quasipoisson | (link = 'log') |
2. Logistic回归
数据结果和书中有些不一致,但是方法是不会错的,毕竟数据只是学习的一部分,最后再为自己的数据服务。
install.packages('AER')
# 婚外情数据 即 著名的 “Fair's Affairs”
library(AER)
data(Affairs, package = 'AER')
summary(Affairs)
table(Affairs$affairs)
# 分为有过一次婚外情/没有过婚外情
Affairs$ynaffair[Affairs$affairs > 0] <- 1
Affairs$ynaffair[Affairs$affairs == 0] <- 0
Affairs$ynaffair <- factor(Affairs$affair,
levels = c(0, 1),
labels = c('No', 'Yes'))
table(Affairs$ynaffair)
# 该二值型因子现可作为Logistic回归的结果变量
fit.full <-
glm(
ynaffair ~ gender + age + yearsmarried + children + religiousness + education + occupation + rating,
data = Affairs,
family = binomial()
)
summary(fit.full)
# 去除不显著的假设 我的数据结果和原书不同
fit.reduced <- glm(ynaffair ~ gender + children, data = Affairs, family = binomial())
summary(fit.reduced)
# 卡方检验
anova(fit.reduced, fit.full, test = 'Chisq')
# 解释模型参数
coef(fit.reduced)
# 对结果进行指数化
exp(coef(fit.reduced))
3. 泊松回归
本人的文档都是自我记录,以便日后查看。
浙公网安备 33010602011771号