#svyglm
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
fitsvy=svyglm(api00~ell+meals+mobility, design=dstrat)
or_svy<- exp(coef(fitsvy))[2]# OR值
lci_svy<-exp(confint(fitsvy))[2]#95%可信区间下限
uci_svy <- exp(confint(fitsvy))[6] # 95%可信区间上限
c(lci_svy, or_svy, uci_svy)
#glm
data(api)
fit_glm<-glm(api00~ell+meals+mobility, data=apistrat,weights=pw)
#使用sandwich进行调整
library(sandwich)
se<-sqrt(diag(vcovHC(fit_glm,type="HC0")))
#计算95%CI
or_glm <- exp(coef(fit_glm))[2] # OR值
beta_glm <- coef(fit_glm)
lci_glm <- exp(beta_glm[2]-1.96*se[2])
uci_glm <- exp(beta_glm[2]+1.96*se[2])
c(lci_glm,or_glm,uci_glm)
#lrm
library(rms)
data=apistrat[,setdiff(colnames(apistrat),"flag")]
ddist <- datadist(data)
options(datadist='ddist')
fit_lrm<-lrm(api00~ell+meals+mobility,
data=data,weights=pw,normwt=T,scale=F) %>% summary
svyglm的结果:
glm的结果:
lrm的结果:
可以看出来结果不相同