一般回归中使用的模型主要是线性模型,它通过一系列连续和/或分类预测变量来预测正态分布的响应变量。 但在很多情况下,假设因变量呈正态分布(甚至是连续变量)是不合理的,例如:
广义线性模型就是为了解决这个问题,在因变量不服从正态分布的情况下进行回归模型分析。 常用的广义线性模型包括回归、泊松回归等。
1. 返回
适用于因变量为01型的回归(例如是否流产、是否流产、是否生病等)。假设因变量(即 Y) 服从二项式分布
二项分布是伯努利提出的概念,是指重复n次独立的伯努利实验。 每次试验只有两种可能的结果,两种结果是否发生是相反且相互独立的。 它们与其他试验的结果无关。 在每次独立试验中,事件发生或不发生的概率保持不变。 ,那么这一系列实验统称为n次伯努利实验。 当实验数为1时,二项式分布服从0-1分布。
二项分布_百度百科
这时候我们就可以利用回归来拟合和预测模型。 也可以使用 SPSS 进行回归。 参考:
//af3a.html
但在这里,我们将使用 R 进行回归分析。
#使用AER包的Affairs数据集,若没有AER包,可先进行安装和调用
aff <- Affairs
head(aff)
affairs gender age yearsmarried children religiousness education occupation rating
4 0 male 37 10.00 no 3 18 7 4
5 0 female 27 4.00 no 4 14 6 4
11 0 female 32 15.00 yes 1 12 1 4
16 0 male 57 15.00 yes 5 18 6 5
23 0 male 22 0.75 no 2 17 6 3
29 0 female 32 1.50 no 2 17 5 5
###构造因变量是01型的affair01变量
aff_data <- Affairs
aff_data$affair01[aff_data$affairs > 0] <- 1
aff_data$affair01[aff_data$affairs == 0] <- 0
aff_data$affair01 <- factor(aff_data$affair01, levels = c(0, 1), labels = c("no", "yes"))
head(aff_data)
##拟合模型
fitmod <- glm(affair01 ~ yearsmarried + religiousness+ rating,
data = aff_data, family = binomial())
#构造预测数据集
testing <- data.frame(rating = 1:5, age = mean(aff_data$age), yearsmarried = mean(aff_data$yearsmarried),
religiousness = mean(aff_data$religiousness))
#将x带入,预测
m2 <- predict(fitmod, newdata = testing, type = "response")
m2
也就是说,当年龄、 等协变量不变时,从 1 变化到 5 时, 的概率。 模型,如线性模型等,预测某个自变量的变化(如从分位数浓度1变为分位数浓度3时因变量的变化)
2. 泊松回归和其他回归
一起使用的功能
参考:R语言实践