基于R语言3组以上倾向评分逆概率加权(IPTW)

2023-11-05

基于 PS (倾向评分)的IPTW 法首先由Rosenbaum作为一种以模型为基础的直接标准化法提出,属于边际结构模型。简单来说,就是把许多协变量和混杂因素打包成一个概率并进行加权,这样的话,我只用计算它的权重就可以了,方便了许多。那么,如何将多个协变量的影响用一个倾向评分值来表示呢? 即如何估计倾向评分值呢? 根据 Rosen-baum 和 Rubin 的定义:倾向评分值为在给定一组协变量(X i )条件下,研究对象 i(i =1,2,…N)被分配到某处理组或接受某暴露因素(Z i =1)的条件概率。理论上,所有可计算得到该条件概率的方法均可用于估计倾向评分值。
在这里插入图片描述
采用 logistic 回归模型估计倾向评分值具有模型
简单、容易实现、可直接得到倾向评分值、结果易于解释等显著优势。
我们拿logistic 回归做例子:
logistic 回归是最早提出的估计倾向评分值的方法,由于其原理为人们所熟悉且容易实现,也是目前最常用的估计方法。logistic 回归模型如下:
在这里插入图片描述
假设为二元logistic 回归,右边一系列混杂因素的方程会生成一个0-1之间的目标事件时间发生的概率,概率越大代表事件发生的可能性越大,这样就等于把多个混杂因素做成了一个综合评分来表示。用1除以这个概率就会得到一个权重,所以就叫做逆概率加权,逆概率加权(IPTW)是利用倾向性评分的倒数来处理数据间混杂的一种方法。Robins等给出的加权系数(形)计算方法是:处理组观察单位的权数Wt=1/PS,对照组观察单位的权数Wc=1/(1一PS)。PS为观察单位的倾向评分值。但此方法得到的人群往往与原来人群的数量不同,因此虚拟人群各变量的方差大小可有变化,而且有较低 PS 的处理组对象与有较高 PS 的非处理组对象将会获得很大的权重。由于非常大的权重会诱导不稳定性。Heman等人对计算方法进行调整,将整个研究人群的处理率和非处理率加入公式调整后得到稳定权数(stabilized weights)。具方法是:处理组观察单位的权数Wt=Pt/PS,对照组观察单位的权数Wc=(1–Pt)/(1–PS)。 目前蛮多文章使用稳定权重。
综上所述:倾向评分加权法首先将多个主要混杂变量的信息综合为一个变量倾向评分 ,然后将倾向评分作为需要平衡的混杂因素 ,通过标准化法的原理加权,使各对比组中倾向评分分布一致 ,则达到使各混杂因素在各比较组分布一致的目的。
下图所示,经过处理后,各项数据的分布基本上被配平了,更有利于做时候比较分析,有点起到RCT的效果。
在这里插入图片描述
在这里插入图片描述
既往我们已经演示了R语言进行倾向评分逆概率加权(IPTW)。后台有粉丝问,怎么使用R进行3组以上的倾向评分逆概率加权(IPTW),看了上面内容我们就明白,只要知道每组数据的倾向评分(也就是概率),根据公式转成权重数就可以了,和做两组的步骤基本一样。
1.导入数据,整理好数据
2.把需要比较的变量拿出来做结果变量,其他的变量做协变量,组成logistic回归方程
3.通过R包计算出拟概率权重
4.建立回归方程,加入权重
我们先导入数据和R包

bc<-read.csv("E:/r/test/zaochan.csv",sep=',',header=TRUE)
bc <- na.omit(bc)

在这里插入图片描述
这是一个关于早产低体重儿的数据(公众号回复:早产数据,可以获得该数据),低于2500g被认为是低体重儿。数据解释如下:low 是否是小于2500g早产儿,age 母亲的年龄,lwt 末次月经体重,race 种族,smoke 孕期抽烟,ptl 早产史(计数),ht 有高血压病史,ui 子宫过敏,ftv 早孕时看医生的次数
bwt 新生儿体重数值。
先把分类变量转成因子

bc$race<-ifelse(bc$race=="black",1,ifelse(bc$race=="white",2,3))
bc$smoke<-ifelse(bc$smoke=="nonsmoker",0,1)
bc$low<-factor(bc$low)
bc$race<-factor(bc$race)
bc$ht<-factor(bc$ht)
bc$ui<-factor(bc$ui)

在这里插入图片描述
假设我们想比较不同种族对生早产低体重儿有无影响,我们先建立没有加权的模型看看,在这里设定种族中1是黑人,2是白人,3是其他人种。

fit<-glm(low ~ age + lwt + race + smoke + ptl + ht + ui + ftv,
         family = binomial("logit"),
         data = bc)
summary(fit)
exp(confint(fit))
exp(coef(fit))

在这里插入图片描述
在这里插入图片描述
可以看到白人和黑人比较是有意义的,白人生出低体重而几率比黑人小约75%。
下面我们要来进行逆概率加权,以种族为结局变量,其他为分类变量,这里要说一下,R自带的glm函数不能算出每个多分类变量的概率,它只能算出总的概率。
涉及3分类的我们这里可以使用ipw包进行加权,这是一个功能很强大的R包,ipwpoint函数除了可以给2分类,多分类变量加权,也可以给连续变量加权。Ipwtm函数可以加权带有时间点的数据。

library(ipw)
w1 <- ipwpoint(
  exposure = race,
  family = "multinomial",
  numerator = ~ 1,
  denominator = ~age + lwt+ smoke + ptl + ht + ui + ftv,
  data = bc)

exposure这里放入结局变量,也就是你要分组的变量。3分组的话对应的family是multinomial,如果二分组对应的family是binomial,如果是连续数据对应的family是gaussian。Numerator这里填入权重的分子,如果按照Robins的算法这里填入1,属于不稳定权重,denominator这里吧需要调整的变量填入就可以了。
生存权重后我们把它提到数据里

bc$w1<-w1$ipw.weights

在这里插入图片描述
获得权重后我们就可以直接加权了

fit1.IPTW<-glm(low ~ age + lwt + race + smoke + ptl + ht + ui + ftv,family = binomial("logit"),data = bc,weights = w1)
summary(fit1.IPTW)
exp(confint(fit1.IPTW))
exp(coef(fit1.IPTW))

在这里插入图片描述
在这里插入图片描述
我们可以看到,经过逆概率加权后,白人和黑人生出低体重儿仍然存在差异,白人低于黑人差不多70%的概率。

参考文献:
[1]李智文, 刘建蒙, 任爱国. 基于个体的标准化法——倾向评分加权[J]. 中华流行病学杂志, 2010(2):4.
[2] Robins J M , MN Hernán, Brumback B . Marginal Structural Models and Causal Inference in Epidemiology[J]. Epidemiology, 2000, 11.
[3]吴美京, 吴骋, 王睿,等. 倾向性评分法中评分值的估计方法及比较[J]. 中国卫生统计, 2013, 30(3):5.
[4]涂娇, 陈卉, 倪平,等. 倾向评分逆处理概率加权在生存分析中的应用及SAS宏实现[J]. 中国临床药理学与治疗学, 2015, 50(9):9.
[5]冯士雍. 加权回归分析的适用场合,加权回归方程效果的比较及权的估计[J]. 数理统计与管理, 1983(6):8.
[6] 辩证看待倾向性评分法 https://blog.csdn.net/fjsd155
[7]ipw包解释文件
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于R语言3组以上倾向评分逆概率加权(IPTW) 的相关文章

  • 看书标记【R语言数据分析与挖掘实战】4

    第四章 数据预处理 4 1 数据清洗 缺失值处理 使用is na 判断缺失值是否存在 complete cases 可以识别样本数据是否完整从而判断缺失情况 删除法 na omit 函数移除所有含有缺失数据的行 data p 删除p列 替换
  • R语言系列教程-----一起来学shiny吧(1)

    什么是shiny Shiny是一个R包 可让您轻松地直接从 R 构建交互式 Web 应用程序 应用程序 本系列是个长教程 带你由浅入深学习shiny 我们先使用系统自带的一个例子来介绍一下shiny 我们先导入shiny包 library
  • R语言 数据处理(一)

    数据合并 提取及降维处理 install packages dplyr 数据处理包dplyr library dplyr name1 lt c Bob Mary Jane Kim name2 lt c Bob Mary Kim Jane w
  • R语言作图:坐标轴设置

    R语言作图 坐标轴设置 偷闲阁 2018 02 04 20 51 24 209654 收藏 359 分类专栏 R语言 可视化 文章标签 R 坐标轴 刻度 可视化 版权声明 本文为博主原创文章 遵循 C
  • R语言与机器学习中的回归方法学习笔记

    来源 http blog sina com cn s blog 62b37bfe0101hom5 html key word lars rpart randomForest cp svm data diabetes prune boosti
  • 生信技能树R语言学习

    一 数据类型和向量 1 数据类型 1 1 判断数据类型class 1 2 按Tab键自动补全 1 3 数据类型的判断和转换 1 is 族函数 判断 返回值为TRUE或FALSE is numeric 123 is character a i
  • 第六章课后习题及答案

    第六章习题答案 转载于 https www cnblogs com hhdn archive 2007 05 27 761356 html
  • ggplot2作图之系统发育树

    library ape tree lt read tree text A B C D E F G H I J K L M N O P library ggtree ggtree tree branch length none ladderi
  • 使用R语言中的survival包进行生存分析是一种常见的统计方法

    使用R语言中的survival包进行生存分析是一种常见的统计方法 在生存分析中 我们经常需要创建一个生存对象来存储事件发生时间和事件状态 在本文中 我们将介绍如何使用survival包中的Surv函数来创建生存对象 并解读其结果 Surv函
  • R语言基础——缺失数据

    R语言基础 缺失数据 缺失数据的分类 统计学家通常将缺失数据分为三类 它们都用概率术语进行描述 但思想都非常直观 我们将用sleep研究中对做梦时长的测量 有12个动物有缺失值 来依次阐述三种类型 1 完全随机缺失 若某变量的缺失数据与其他
  • R语言绘图:实现数据点的线性拟合,进行显著性分析(R-squared、p-value)、添加公式到图像

    最近在做关于数据点线性拟合相关的研究 感觉R语言在这方面很方便 而且生成的图片很漂亮 所以在这里和大家分享一下代码 这是别人所绘制的拟合图像 很漂亮 自己也用iris鸢尾花数据集进行一个线性拟合看看 拟合线性模型最基本的函数就是lm 格式为
  • R语言实现文本情感分析

    在本博客中 我们将介绍如何使用R语言进行文本情感分析 我们将介绍如何处理文本数据 构建模型 训练模型并进行情感预测 这里我们将使用IMDb电影评论数据集进行示例分析 数据准备 首先 我们需要下载并加载IMDb电影评论数据集 可以从这里下载数
  • R语言GGPLOT2绘制圆环图雷达图/星形图/极坐标图/径向图Polar Chart可视化分析汽车性能数据

    最近我们被客户要求撰写关于可视化的研究报告 包括一些图形和统计输出 漂亮的圆形图 我不确定对数据分析师本身是否有额外的好处 但如果能吸引决策者的注意 那对我来说就是额外的价值 然而 用coord polar 或偶尔发现的ggplot2中的c
  • r如何让新增加的列出现在第一列 r如何调整新增加的列的位置

    https www cnblogs com liujiaxin2018 p 16211983 html 1 任意位置插入列 复制代码 gt a lt letters 1 5 gt b lt LETTERS 1 5 gt c lt sampl
  • 计算机科学丛书(2014-2018.Q1)

    ISBN 名称 作者 出版时间 978 7 111 53451 8 数学设计和计算机体系结构 原书第2版 美 戴维 莫尼 哈里斯 莎拉 L 哈里斯著 978 7 111 44075 8 嵌入式计算系统设计原理 美 Marilyn Wolf著
  • R语言实现RMF模型

    RMF模型说明 RMF模型是客户管理中 常被用来衡量客户价值和客户创利能力的重要方法 它主要考量三个指标 最近一次消费 Recency 近期购买的客户倾向于再度购买 消费频率 Frequency 经常购买的客户再次购买概率高 消费金额 Mo
  • 主成分分析R语言实现

    主成分分析是一种常见的降维统计方法 它通过适当的变量替换 使得新变量成为原变量的线性组合 并且新变量间彼此独立 从而可从错综复杂的关系中寻求主要成分信息 揭示变量内在关系 本次主要分享的是该方法的R语言实现 目录 数据集展示 一 计算相关系
  • R语言——基本操作(一)

    目录 一 基本操作 二 R包的安装及使用 三 获取帮助 四 内置数据集 五 数据结构 六 向量索引 七 向量运算 参考 Rstudio 控制台常用快捷键 Ctrl 查看所有历史记录 比直接使用 查找更方便 Esc 中断操作 可中断未完成的操
  • R语言采集获取58商铺出租转让信息

    前两篇文章给我一个朋友分析出店铺商品以及地址房源信息 后来去看了下店铺房租有点贵 还是毛坯房 要自己装修 本着节约成本的原则 熬了个通宵 给他采集了一些转租商铺数据 因为数据比较多 过于先进不方便展示 我就将我爬虫程序的模版展示给大家观看
  • R语言——基本操作(二)

    目录 一 矩阵与数组 二 列表 三 数据框 四 因子 五 缺失数据 六 字符串 七 日期和时间 参考 一 矩阵与数组 matrix 创建矩阵 nrow 和 ncol 可以省略 但其值必须满足分配条件 否则会报错 只写一个值则自动分配 默认按

随机推荐

  • 【运维篇】四、服务日志控制

    文章目录 1 日志基础 2 记录日志 3 快速创建日志对象 4 日志级别更改 5 日志输出格式控制 6 日志记录到文件 1 日志基础 日志的作用 编程期调试代码 记录日常运营重要信息 峰值流量 平均响应时长 记录应用报错信息 错误堆栈 运营
  • 游戏开发jenkins杂谈系列:使用Extended Choice Parameter参数化构建

    可以查看 https blog csdn net qq1105273619 article details 91352562
  • IDEA打包jar包详尽流程

    打包流程 1 打开菜单栏File Project Structure 2 点击Artifacts 3 点击 JAR From module with depenencies 4 后弹出如下界面 自此开始 各种问题就来了 首先Module中
  • 基于CC2530的Zstack协议栈的SX1278调试记录

    SX1278Lora模块串口调试记录 串口调试代码 串口获取调试信息 SPI驱动IO口模拟 加深理解用 SX1278的通讯时序 SX1278 SPI通讯间隔要求 SX1278 寄存器设置 实例 实际调试 LORA信道划分建议 关于带宽 只是
  • [Elasticsearch]源码解析:ES如何避免脚本中的危险操作

    一 简述 在我们使用ES进行脚本操作的时候 可以在脚本中使用painless等脚本语言 但我们是否有想过在脚本中进行危险操作类似System exit 0 的时候 ES是怎么规避这种风险的 不废话 上例子 POST trick search
  • (二十八)admin-boot项目之基于MDC的全局日志追踪

    二十八 基于MDC的全局日志追踪 项目地址 https gitee com springzb admin boot 如果觉得不错 给个 star 简介 这是一个基础的企业级基础后端脚手架项目 主要由springboot为基础搭建 后期整合一
  • 服务器怎样创建多台虚拟主机,服务器是如何实现多台虚拟主机

    服务器是如何实现多台虚拟主机 内容精选 换一换 弹性云服务器 Elastic Cloud Server 是一种可随时自动获取 计算能力可弹性伸缩的云服务器 可帮助您打造可靠 安全 灵活 高效的应用环境 确保服务持久稳定运行 提升运维效率 通
  • 调用VSPD的DLL进行二次开发异常解决的解决方法。

    最近在学习 设想做一个实现虚拟串口的C 程序 因为我不会写驱动 于是参考老哥的方法 调用VSPD的DLL开放接口进行实现 从VSPD虚拟COM口安装包解出独立的驱动安装包 虚拟串口开发和EXE程序反解压 http blog csdn net
  • 开机f8修复电脑步骤_只要按一个键,可以修复很多电脑小故障

    经常遇到 客户的电脑开机进不了系统 卡在修复界面 半天没反应 有的开机在检测界面 一直没反应 还有的因为运行的程序太多 开个机要耐着性子 等10多分钟 才能使用电脑 还一直很慢 很卡 要重装系统 又担心很多程序找不到安装程序 只能一直忍 很
  • Python无法打开excel文档解决办法

    问题 无法打开excel文档 解决办法 安装xlrd模块 在cmd命令行下执行 pip install pyexcel xls 如果以上方法无法解决 继续报以下问题 pandas无法打开 xlsx文件 xlrd biffh XLRDErro
  • QQ js_sdk第三方授权登录 自定义登录按钮

    STEP 1 QQ放置页面添加 img src qq png function qqLogin QC Login showPopup 替换APPID和回调页面即可 STEP 2
  • 获取百度翻译内容

    import requests url https fanyi baidu com sug s input 请输入你要翻译的英文单词 dic kw s resp requests post url data dic print resp j
  • 【Unity】常见的角色移动旋转

    在Unity 3D游戏引擎中 可以使用不同的方式对物体进行旋转 以下是几种常见的旋转方式 欧拉角 Euler Angles 欧拉角是一种常用的旋转表示方法 通过绕物体的 X Y 和 Z 轴的旋转角度来描述物体的旋转 在Unity中 可以通过
  • mysql 报错 your password has expired.To log in you must change itusing a client that supports expired

    学习java少不了和数据库打交道 在使用 Navicat 连接 mysql 的时候 出现了这个错误 这表示你设置的密码过期了 这里我们重新设置一下密码即可 1 打开 cmd 窗口 进入 mysql 的 bin 目录下 2 连接mysql m
  • C++游戏制作入门小游戏(迷宫)此篇只适用于新手

    最近有些无聊 于是翻了翻以前的代码 找到了之前第一次编的游戏 想起以前学完C 无从下手的感觉 就把它加了点备注 当做一篇入门教程发出来了 这是用DevC 写的 参考自一位大佬写的贪吃蛇 下面上图 PS 开始界面我现在看来是相当的丑 好吧菜单
  • linux开机自动挂载硬盘命令,linux添加新磁盘分区开机自动挂载(随记)

    1 首先先添加一块新的磁盘 ps 虚拟机测试 2 添加好一个磁盘后 10GB 执行reboot命令 重启系统生效 reboot 3 执行fidsk l 则出现了新添加的磁盘 为sdb 4 执行分区命令 fdisk dev sdb n 为新建
  • 软件测试--bug的等级划分

    bug的严重级别 致命的软件缺陷 Blocker 一级bug 1 造成系统或应用程序崩溃 死机 数据丢失 系统挂起 如代码错误 死循环 数据库发生死锁 一直锁在一个地方不解锁 2 与数据库连接错误或数据通讯错误 未考虑异常操作 功能错误等
  • Markdown 技能树(4):链接

    Markdown 技能树 4 链接 Markdown 支持两种形式的链接语法 行内和参考两种形式 不管是哪一种 链接的文字都是用 方括号 来标记 行内形式链接 行内形式的链接是在方块括号后面接括号并插入网址链接即可 如果你还想要加上链接的
  • Visual Studio 2005集成开发环境图解

    摘要 本文探讨其中的一些功能 并且阐述开发人员如何使用它们以更快 更准确地编写代码 正文 Microsoft Visual Studio 2005 包含许多对开发环境新的增强 创新和提高 其目的在于使 Visual Basic NET 开发
  • 基于R语言3组以上倾向评分逆概率加权(IPTW)

    基于 PS 倾向评分 的IPTW 法首先由 osenbaum作为一种以模型为基础的直接标准化法提出 属于边际结构模型 简单来说 就是把许多协变量和混杂因素打包成一个概率并进行加权 这样的话 我只用计算它的权重就可以了 方便了许多 那么 如何