R语言 logistic回归图中结局的不同量表(y轴)

4szc88ey  于 2021-06-03  发布在  其他
关注(0)|答案(1)|浏览(85)

对于使用多个预测因子绘制逻辑回归,我使用了R中的库(ggeffects)。为了为所有变量绘制逻辑回归图,我编写了以下代码,其中glm.fitglm()函数的输出:
plts = lapply(names(coefficients(glm.fit))[-1],function(i){ return(plot(ggpredict(glm.fit,i))) })
最后,我使用了下面的函数wrap_plots(plts,ncol = 2,nrow = 4)
我得到了7个预测变量

的下图
如你所见,WBC的Y轴在0和100%之间,但RBC的Y轴在0和60%之间。如果有人能向我解释我所有预测因子的Y轴如何在0和100%之间,我将不胜感激。
顺祝商祺,

svgewumm

svgewumm1#

下面是我所理解的代码中包含的内容的摘要:

  • 您正在使用stats包中的函数glm来适应模型。stats是一个基础R包。
  • 您正在使用ggeffects包中的函数ggpredict来构造预测。
  • ggpredict的输出上调用plot意味着您正在使用ggeffects包中的plot方法。
  • 最后,您将使用patchwork包中的函数wrap_plots来组装最终的图形。
plts = lapply(names(coefficients(glm.fit))[-1],function(i){
   return(plot(ggpredict(glm.fit,i))) 
})

wrap_plots(plts ,ncol = 2, nrow = 4)

字符串
我对你的问题的理解是,你(1)想知道为什么你的图上的y轴会变化,(2)问如何生成具有0- 100%的相同y轴比例的图。
1.这些图是由这个函数https://strengejacke.github.io/ggeffects/reference/plot.html生成的。在你的代码中,它为每个系数生成一个图,这意味着每个图的y轴比例独立于该图中的数据范围。
1.要使用当前的绘图方法生成具有相同y轴比例的图,您需要将limits=c(0,1)添加到plot函数。

plts = lapply(names(coefficients(glm.fit))[-1],function(i){
   return(plot(ggpredict(glm.fit,i),limits = c(0,1))) 
})

wrap_plots(plts ,ncol = 2, nrow = 4)


这里是一个具有2个预测因子的GLM的可重复示例。首先,这里是压缩y轴尺度的示例。

# load libraries
library(ggeffects)
library(patchwork)

# read data from
# https://environmentalcomputing.net/statistics/glms/glm-1/
crabs <- read.csv("https://environmentalcomputing.net/datasets/Crabs.csv")

# fit model
glm.fit <- glm(CrabPres ~ Time + Dist, family = binomial, data = crabs)

# predict the response for each coefficient
# then plot the predictions 
plts = lapply(names(coefficients(glm.fit))[-1],function(i){
  return(plot(ggpredict(glm.fit,i))) 
})

# use patchwork to arrange plots
wrap_plots(plts ,ncol = 2, nrow = 1)


x1c 0d1x的数据
下面是新的示例,0-100% y轴比例:

# load libraries
library(ggeffects)
library(patchwork)

# read data from
# https://environmentalcomputing.net/statistics/glms/glm-1/
crabs <- read.csv("https://environmentalcomputing.net/datasets/Crabs.csv")

# fit model
glm.fit <- glm(CrabPres ~ Time + Dist, family = binomial, data = crabs)

# predict the response for each coefficient
# then plot the predictions 
plts = lapply(names(coefficients(glm.fit))[-1],function(i){
  return(plot(ggpredict(glm.fit,i),limits=c(0,1)) 
})

# use patchwork to arrange plots
wrap_plots(plts ,ncol = 2, nrow = 1)


相关问题