广义线性模型
广义线性模型使用glm()函数进行拟合。glm函数的形式是
glm(formula ,family = familytype (link = linkfunction ),data =)
家庭 | 默认链接功能 |
二项式 | (link =“logit”) |
高斯 | (link =“身份”) |
伽玛 | (link =“inverse”) |
inverse.gaussian分布 | (链接=“1 / mu ^ 2”) |
泊松 | (link =“log”) |
准 | (link =“identity”,variance =“constant”) |
quasibinomial | (link =“logit”) |
quasipoisson | (link =“log”) |
查看帮助(glm)了解其他建模选项。查看每个家庭的其他允许链接功能的帮助(家庭)。这里将介绍三种广义线性模型的亚型:逻辑回归,泊松回归和生存分析。
Logistic回归
当您从一组连续预测变量中预测二元结果时,Logistic回归很有用。由于其限制性较小的假设,它通常优于判别函数分析。
# Logistic Regression
# where F is a binary factor and
# x1-x3 are continuous predictors
fit <- glm(F~x1+x2+x3,data=mydata,family=binomial())
summary(fit) # display results
confint(fit) # 95% CI for the coefficients
exp(coef(fit)) # exponentiated coefficients
exp(confint(fit)) # 95% CI for exponentiated coefficients
predict(fit, type="response") # predicted values
residuals(fit, type="deviance") # residuals
您可以使用anova (fit1 ,fit2 ,test =“Chisq”)来比较嵌套模型。此外,cdplot(˚F 〜X ,数据= MYDATA )将显示二元结果的条件密度情节˚F在连续X变量。
泊松回归
当预测表示来自一组连续预测变量的计数的结果变量时,泊松回归很有用。
# Poisson Regression
# where count is a count and
# x1-x3 are continuous predictors
fit <- glm(count ~ x1+x2+x3, data=mydata, family=poisson())
summary(fit) display results
如果你有过度分散(看剩余偏差是否比自由度大得多),你可能想用quasipoisson()而不是poisson()。
生存分析
生存分析(也称为事件历史分析或可靠性分析)涵盖了用于对事件时间建模的一组技术。数据可能被正确审查 – 该事件可能在研究结束时未发生,或者我们可能对观察信息的信息不完整,但知道在某段时间内没有发生事件(例如,参与者在一周内辍学10但当时还活着)。
虽然广义线性模型通常使用glm()函数进行分析,但生存分析通常是使用生存包中的函数进行的。生存包可以处理一个和两个样本问题,参数加速故障模型和Cox比例风险模型。
通常以格式开始时间,停止时间和状态输入数据(1 =发生事件,0 =事件未发生)。或者,数据格式可以是事件和状态的时间(1 =发生事件,0 =事件未发生)。状态= 0表示观察结果正确。在进一步分析之前,数据通过Surv()函数绑定到Surv对象中。
survfit()用于估计一个或多个组的生存分布。
survdiff()测试两个或更多组之间生存分布的差异。
coxph()模拟一组预测变量的危险函数。
# Mayo Clinic Lung Cancer Data
library(survival)
# learn about the dataset
help(lung)
# create a Surv object
survobj <- with(lung, Surv(time,status))
# Plot survival distribution of the total sample
# Kaplan-Meier estimator
fit0 <- survfit(survobj~1, data=lung)
summary(fit0)
plot(fit0, xlab="Survival Time in Days",
ylab="% Surviving", yscale=100,
main="Survival Distribution (Overall)")
# Compare the survival distributions of men and women
fit1 <- survfit(survobj~sex,data=lung)
# plot the survival distributions by sex
plot(fit1, xlab="Survival Time in Days",
ylab="% Surviving", yscale=100, col=c("red","blue"),
main="Survival Distributions by Gender")
legend("topright", title="Gender", c("Male", "Female"),
fill=c("red", "blue"))
# test for difference between male and female
# survival curves (logrank test)
survdiff(survobj~sex, data=lung)
# predict male survival from age and medical scores
MaleMod <- coxph(survobj~age+ph.ecog+ph.karno+pat.karno,
data=lung, subset=sex==1)
# display results
MaleMod
# evaluate the proportional hazards assumption
cox.zph(MaleMod)
有关更多信息,请参阅Thomas Lumley 关于生存包的 R新闻文章。其他很好的资源包括麦周的使用R软件进行生存分析和模拟以及MJ克劳利关于生存分析的章节。
来练习
使用年龄作为信用风险的预测指标,尝试使用R进行基本逻辑回归的交互式练习。