R语言绘制逆概率加权后的基线表

这篇具有很好参考价值的文章主要介绍了R语言绘制逆概率加权后的基线表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于 PS (倾向评分)的逆概率加权(IPTW )法首先由Rosenbaum作为一种以模型为基础的直接标准化法提出,属于边际结构模型。简单来说,就是把许多协变量和混杂因素打包成一个概率并进行加权,这样的话,我只用计算它的权重就可以了,方便了许多。那么,如何将多个协变量的影响用一个倾向评分值来表示呢? 即如何估计倾向评分值呢? 根据 Rosen-baum 和 Rubin 的定义:倾向评分值为在给定一组协变量(X i )条件下,研究对象 i(i =1,2,…N)被分配到某处理组或接受某暴露因素(Z i =1)的条件概率。
svydesign函数,R语言,线性代数,算法,矩阵
采用 logistic 回归模型估计倾向评分值具有模型
简单、容易实现、可直接得到倾向评分值、结果易于解释等显著优势。
我们拿logistic 回归做例子:
logistic 回归是最早提出的估计倾向评分值的方法,由于其原理为人们所熟悉且容易实现,
也是目前最常用的估计方法。logistic 回归模型如下:
svydesign函数,R语言,线性代数,算法,矩阵
假设为二元logistic 回归,右边一系列混杂因素的方程会生成一个0-1之间的目标事件时间发生的概率,概率越大代表事件发生的可能性越大,这样就等于把多个混杂因素做成了一个综合评分来表示。逆概率加权(IPTW)是利用倾向性评分的倒数来处理数据间混杂的一种方法。Robins等给出的加权系数(形)计算方法是:处理组观察单位的权数Wt=1/PS,对照组观察单位的权数Wc=1/(1一PS)。PS为观察单位的倾向评分值。此方法得到的
人群往往与原来人群的数量不同,因此虚拟人群各变量的方差大小可有变化,而且有较低 PS 的处理组对象与有较高 PS 的非处理组对象将会获得很大的权重。由于非常大的权重会诱导不稳定性。Heman等人对计算方法进行调整,将整个研究人群的处理率和非处理率加入公式调整后得到稳定权数(stabilized weights)。具方法是:处理组观察单位的权数Wt=Pt/PS,对照组观察单位的权数Wc=(1–Pt)/(1–PS)。 目前蛮多文章使用稳定权重。
在既往文章中,我们已经介绍了怎么使用R和SPSS进行逆概率加权分析,后台有粉丝问,如何绘制加权后的基线表,如下图,加权后基线资料基本上被配平
svydesign函数,R语言,线性代数,算法,矩阵
今天我们通过R来演示一下如何绘制加权后的基线表,继续使用我们的早产数据(公众号回复:早产数据,可以获得该数据),我们先导入R包和数据

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

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

bc <- na.omit(bc)
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)

假设我们研究的是有无高血压(ht)对生出低体重儿(low)的影响,我们先绘制一个还没有加权的患者基线表

dput(names(bc))##输出变量名
allVars <-c("age", "lwt", "race", "smoke", "ptl", "ht", "ui", 
            "ftv", "bwt")###所有变量名
fvars<-c("race", "smoke","ht","ui")#分类变量定义为fvars
tab2 <- CreateTableOne(vars = allVars, strata = "low" , data = bc, factorVars=fvars,
                       addOverall = TRUE )###绘制基线表
print(tab2)#输出表格

svydesign函数,R语言,线性代数,算法,矩阵
我们注意到,上图中有3个指标P是小于0.05的,bwt属于结局指标,lwt体重属于基线指标。
我们先建立回归方程生成预测值

pr<- glm(ht ~age + lwt + race + smoke + ptl + ui + ftv, data=bc,
         family=binomial(link = "logit"))
pr1<-predict(pr,type = "response")
summary(bc$ht)

svydesign函数,R语言,线性代数,算法,矩阵
上图显示有高血压12人,没有高血压177人,下面我们来分别生成两种权重一种是Robins等给出的加权系数(形)计算方法,

w<- (bc$ht==1) * (1/pr1) + (bc$ht==0) * (1)/(1-pr1)

另外的是Heman等人对计算方法,计算稳定权重要先生成概率(发生高血压的概率)

pt<-12/(177+12)
w1 <- (bc$ht==1) * (pt/pr1) + (bc$ht==0) * (1-pt)/(1-pr1)

svydesign函数,R语言,线性代数,算法,矩阵
生成权重后就可以绘制加权后的基线表格,这里就需要使用到survey包的svydesign函数,这是一个强大的R包,可以生成各种权重的基线表格。

bcSvy1<- svydesign(ids = ~ id, strata = ~ low, weights = ~ w,
                   nest = TRUE, data = bc)

生成后就可以使用TableOne包绘制加权表格

Svytab1<- svyCreateTableOne(vars = c( "age", "lwt", "race", "smoke", "ptl","ui", 
                                      "ftv", "bwt"),
                            strata = "low", data =bcSvy1 ,
                            factorVars = c("race", "smoke","ht","ui"))
Svytab1

svydesign函数,R语言,线性代数,算法,矩阵
由上图可知经过加权后,每组病例数已经发生了改变,lwt这个基线治疗已经被配平,使得两组患者的比较更加具有可比性,下面我们使用Heman等人对计算方法生成权重生成基线表格

bcSvy2<- svydesign(ids = ~ id, strata = ~ low, weights = ~ w1,
                   nest = TRUE, data = bc)
Svytab2<- svyCreateTableOne(vars = c( "age", "lwt", "race", "smoke", "ptl", "ui", 
                                      "ftv", "bwt"),
                            strata = "low", data =bcSvy2 ,
                            factorVars = c("race", "smoke","ht","ui"))
Svytab2

svydesign函数,R语言,线性代数,算法,矩阵
我们可以看出,针对本文章中的数据,Heman方法生成的基线表格,病例数没有Robins方法的病例数变化那么大,但是在配平基线资料上没有Robins方法配得好。并不是说Robins方法比Heman方法更好,估计在不同的数据中,两种方法各有优势。
文章来源地址https://www.toymoban.com/news/detail-615495.html

到了这里,关于R语言绘制逆概率加权后的基线表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用spss拆分文件功能轻松绘制论文数据基线表(sci表一)

    我们的论文分析时经常需要进行一个一般人群的数据基线表的统计分析,一般来说就是SCI论文中的表一,如下图 表中Q1-Q4为4个亚组,分别描述了每个亚组的均值和标准差,分类变量使用计数和百分比表示,最后还得出组间比较的P值,既往我们已经介绍了使用R语言多个R包绘制

    2024年02月15日
    浏览(40)
  • 自动编码器的数学基础:概率论与线性代数

    自动编码器(Autoencoders)是一种深度学习模型,它通过学习压缩输入数据的低维表示,然后再将其重新解码为原始数据形式。自动编码器的主要目的是学习数据的特征表示,从而可以用于降维、生成新数据、数据压缩等应用。在这篇文章中,我们将讨论自动编码器的数学基础,

    2024年02月20日
    浏览(48)
  • 【算法小记】——机器学习中的概率论和线性代数,附线性回归matlab例程

    内容包含笔者个人理解,如果错误欢迎评论私信告诉我 线性回归matlab部分参考了up主DR_CAN博士的课程 在回归拟合数据时,根据拟合对象,可以把分类问题视为一种简答的逻辑回归。在逻辑回归中算法不去拟合一段数据而是判断输入的数据是哪一个种类。有很多算法既可以实现

    2024年01月24日
    浏览(45)
  • GPS网的基线计算以及平差处理(使用Python绘制误差椭圆,C++处理数据并输出Qxx矩阵)

      如下图所示为一简单GPS网,用两台GPS接收机观测,测得5条基线向量,每一条基线向量中三个坐标差观测值相关,由于只用两台GPS接收机观测,所以各观测基线向量互相独立。观测基线向量信息见表1。假定1号点为起算点坐标信息表2。  表1 GPS网平差观测数据及已知方差阵

    2024年02月03日
    浏览(43)
  • 目标检测后的图像上绘制边界框和标签

    效果如图所示,有个遗憾就是CV2在图像上显示中文有点难,也不想用别的了,所以改成了英文,代码在下面了,一定要注意一点,就是标注文件的读取一定要根据自己的实际情况改一下,我的所有图像的标注文件是一个XML文件。

    2024年02月10日
    浏览(33)
  • 实践讲解强化学习之梯度策略、添加基线、优势函数、动作分配合适的分数

    摘要: 本文将从实践案例角度为大家解读强化学习中的梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)。 本文分享自华为云社区《强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)》,

    2024年02月11日
    浏览(38)
  • python中利用seaborn绘制概率分布直方图以及密度图

    当我们想要弄清楚变量的统计特性时,往往想知道它是服从什么分布的,这时候就需要绘制概率分布直方图 在python中我们可以使用 seaborn 库来进行绘制: Seaborn是一个基于matplotlib的Python数据可视化库。它为绘制有吸引力和信息丰富的统计图形提供了高级界面。 首先需要导入

    2024年02月16日
    浏览(58)
  • <2>【深度学习 × PyTorch】pandas | 数据预处理 | 处理缺失值:插值法 | networkx模块绘制知识图谱 | 线性代数初步

      你永远不可能真正的去了解一个人,除非你穿过ta的鞋子,走过ta走过的路,站在ta的角度思考问题,可当你真正走过ta走过的路时,你连路过都会觉得难过。有时候你所看到的,并非事实真相,你了解的,不过是浮在水面上的冰山一角。—————《杀死一只知更鸟》   🎯

    2024年02月01日
    浏览(49)
  • 概率密度函数,概率分布函数

    概率密度函数:描述信号的取值在某个确定的取值点附近的概率的函数;概率分布函数的导数。 以幅值大小为横坐标,以每个幅值间隔内出现的概率为纵坐标进行统计分析。 反映了信号落在不同幅值强度区域内的概率情况。 直方图:对每个幅值间隔内出现的频次为纵坐标进

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包