r - 如何识别 logit GLM 中的截止值
问题描述
为逻辑 GLM 生成一些数据:
set.seed(123)
x1 = rnorm(2000)
z = 1 + 3*x1 + 3*exp(x1)
pr = 1/(1+exp(-z))
y = rbinom(2000,1,pr)
df = data.frame(y=y,x1=x1)
运行模型:
mod <- glm(y ~ x1,data=df,family=binomial(link=logit))
逻辑图:
library(visreg)
library(ggplot2)
visreg(mod, 'x1', scale='response', rug=2, gg=TRUE)+
theme_bw(18)
我需要计算 x1 的截止值,它定义了 y=1 的 50% 概率。我想我需要这个predict
功能:
pred <- predict(mod, type = "response")
编辑
如下所示,我找到了截止点;但是,我想进行 ROC 分析以验证其特异性和敏感性。运行此代码是否足够?
prob=predict(mod,type=c("response"))
df$prob=prob
library(pROC)
g <- roc(y ~ prob, data = df)
plot(g)
g
解决方案
您可以使用dose.p
来自MASS
. 试用:
library(MASS)
dose.p(mod, p = 0.5)
# Dose SE
#p = 0.5: -0.8457261 0.02039277
使用predict
,x1[as.numeric(names(pred[round(pred, 2) == 0.5]))]
提供x1
离截止点很近(最接近的百分之一)的点
[1] -0.8497043 -0.8490611 -0.8445834 -0.8468964 -0.8491746
推荐阅读
- python - Python - 无法在 Visual Studio 代码中执行正确的 selenium 语法
- flutter - FutureBuilder 没有从数据库中获取更新的数据
- sql - SQL - 客户满意度影响(需要子查询?)
- powershell - 在 NLog 配置文件中为 FileTarget 使用相对路径
- python-3.x - 在 pandas 中查找长度不等的数据框的值
- python - MLP with Scikitlearn:用于预测的人工神经网络应用
- python-3.x - Tkinter - 你如何在 LabelFrame 上居中文本?
- arrays - C 混淆中的存储、语义和字符串文字
- python-3.8 - 检查文件中是否出现特定单词,如果没有打印文件中没有单词
- javascript - 通过用 Electron/React/TS 编写的应用程序发送电子邮件