r 此函数接受glm和geeglm / gee对象。它输出变量名称,变量级别,然后是比值比,置信度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r 此函数接受glm和geeglm / gee对象。它输出变量名称,变量级别,然后是比值比,置信度相关的知识,希望对你有一定的参考价值。
# please break this function so I know what to fix. Also recommend edits to the function. Thanks!
model_output <- function(mod_obj){
# libraries
require(geepack); require(tibble); require(dplyr)
xvar <- names(lm_object$model)[-1]
yvar <- names(lm_object$model)[1] # idky i need this but just in case
data <- lm_object$data
# xvar levels
xvar_levels <- sapply(data[, xvar], levels)
xvar_levels_unlist <- unlist(lapply(seq_along(xvar_levels),
function(x) paste(names(xvar_levels)[[x]], xvar_levels[[x]], sep = "")))
xvar_levels_df <- data.frame(vec_levels = xvar_levels_unlist)
# odds ratio, confidence interval, and pvalues
# first, determine if object is geeglm/gee object or not
if("geeglm" %in% class(lm_object) | "gee" %in% class(lm_object)){
confint.geeglm <- function(object, parm, level = 0.95, ...) {
cc <- coef(summary(object))
mult <- qnorm((1+level)/2)
citab <- with(as.data.frame(cc),
cbind(lwr=Estimate-mult*Std.err,
upr=Estimate+mult*Std.err))
rownames(citab) <- rownames(cc)
citab[parm,]
}
confint_obj <- confint.geeglm(lm_object)
} else {
confint_obj <- confint(lm_object)
colnames(confint_obj) <- c("lwr", "upr")
}
or_ci_obj <- as.data.frame(round(cbind(exp(coef(lm_object)), exp(confint_obj)), 2))
or_ci_obj1 <- rownames_to_column(or_ci_obj, var = "variable") # surprisingly, it works
or_ci_obj1$ci <- sprintf("%.2f %s %.2f", or_ci_obj1$lwr, "-", or_ci_obj1$upr)
pval_obj <- as.data.frame(round(summary(lm_object)$coef, 3))
pval_obj1 <- rownames_to_column(pval_obj, var = "variable")
colnames(pval_obj1)[5] <- "pvalue"
mod_df <- data.frame(or_ci_obj1[, c("variable", "V1", "ci")], pval_obj1[, c("pvalue")])
colnames(mod_df) <- c("variable", "or", "ci", "pvalue")
# merge xvar_levels_df with mod_df to create REF categories
# left_join doesn't need standard evaluation...strange...is it just 5 dplyr verbs? must be
suppressWarnings(merged_df <- left_join(xvar_levels_df, mod_df, by = c("vec_levels" = "variable")))
merged_df$pvalue1 <- sprintf("%.3f", merged_df$pvalue)
merged_df1 <- replace(merged_df, is.na(merged_df) == TRUE | merged_df == "NA", "Ref")
merged_df2 <- select_(merged_df1, ~vec_levels, ~or, ~ci, ~pvalue1) #standard evaluation
# insert function
insertRow <- function(existingDF, newrows) {
new_idx <- as.integer(newrows[,1]) # get indices of the new rows
new_idx <- sort(new_idx) + seq(0, length(new_idx) - 1) # adjust for rows shifting due to other insertions
old_idx <- seq(nrow(existingDF) + length(new_idx))[-new_idx] # ge indices for the old rows
existingDF[old_idx,] <- existingDF # assign old rows
existingDF[new_idx,] <- newrows[,-1] # assign new rows
existingDF
}
# insert row names into model
list_length <- unlist(lapply(seq_along(xvar_levels), function(x) length(xvar_levels[[x]])))
merged_df3 <- insertRow(merged_df2, newrows = cbind(cumsum(list_length) - list_length + 1,
xvar, "", "", "")) # ugly but gets the job done
return(merged_df3)
}
以上是关于r 此函数接受glm和geeglm / gee对象。它输出变量名称,变量级别,然后是比值比,置信度的主要内容,如果未能解决你的问题,请参考以下文章
广义线性模型GLMGLMMLMMMLMGMMGEE广义线性模型GLM和广义线性混合模型的GLMM区别
如何绘制新数据的预测与 R 中的 gee、lme、glmer 和 gamm4 相匹配?
r语言的函数 "glm"里的"负二项分布"参数 "family=啥?
R语言广义线性模型函数GLM广义线性模型(Generalized linear models)glm函数构建逻辑回归模型(Logistic regression)
R语言广义线性模型函数GLM广义线性模型(Generalized linear models)GLM函数的语法形式glm模型常用函数常用连接函数逻辑回归泊松回归系数解读过散度分析
更改R中逻辑回归(glm)中使用的参考等位基因[重复]