• 登录
Skip to content

一起大数据-技术文章心得

一起大数据网由数据爱好者发起并维护,专注数据分析、挖掘、大数据相关领域的技术分享、交流。不定期组织爱好者聚会,期待通过跨行业的交流和碰撞,更好的推进各领域数据的价值落地。

Menu
  • 首页
  • 大数据案例
  • 数据&电子书
  • 视频
    • Excel视频
    • VBA视频
    • Mysql视频
    • 统计学视频
    • SPSS视频
    • R视频
    • SAS视频
    • Python视频
    • 数据挖掘视频
    • 龙星计划-数据挖掘
    • 大数据视频
    • Machine Learning with Python
  • 理论
    • 统计学
    • 数据分析
    • 机器学习
    • 大数据
  • 软件
    • Excel
    • Modeler
    • Python
    • R
    • SAS
    • SPSS
    • SQL
    • PostgreSQL
    • KNIME
  • 技术教程
    • SQL教程
    • SPSS简明教程
    • SAS教程
    • The Little SAS Book
    • SAS EG教程
    • R语言教程
    • Python3教程
    • IT 技术速查手册
    • Data Mining With Python and R
    • SAS Enterprise Miner
  • 问答社区
  • 我要提问
Menu

趋势性检验 Cochran-Armitage检验

Posted on 2022年8月4日

基本概念

Cochran-Armitage检验,是一种线性趋势检验,指经过logistic变换后呈现线性变化趋势。适用于处理分组变量为有序分类变量(K≥3),结局变量为二分类变量,即K×2列联表资料,因此又称趋势卡方检验。

例:研究者想分析偏头痛药物的剂量与药物眩晕副作用是否存在线性关系。

无效假设

H0:P1=P2=……=Pk

备择假设

单侧(上升趋势):H1:P1<P2<……<Pk

单侧(下降趋势):H1:P1>P2>……>Pk

双侧:H1:P1<P2<……<Pk或H1:P1>P2>……>Pk

在线性趋势检验中,需要用到变量在卡方检验中没有用到的顺序信息,这就面临着如何对变量进行赋值的问题,不同的赋值方法得到的检验结果显然不同。

《Cochran-Armitage趋势检验不同赋值的模拟研究》一文对Cochran-Armitage趋势检验中的三种赋值方法,即等距赋值、均秩赋值、MERT法赋值,通过计算机模拟进行比较,发现三种方法的检验效能非常接近,但Ⅰ类错误率以等距赋值方法最低。综合模拟结果和应用的便利性,有序分类数据的Cochran-Armitage趋势检验采用等距赋值更值得提倡。

等距赋值:指相邻两个等级赋值的差为一个不等于0的常数。如本例的五个等级可以赋值为1、2、3、4、5,也可以赋值为1、3、5、7、9,也可以赋值为50、100、150、200、250,这些赋值最终的分析结果都是一样的。

均秩赋值:即按照每个等级的平均秩次进行赋值赋值。如本例的五个等级可以赋值为x1=(1+149)/2=75、x2=149+(1+142)/2=220.5、x3=149+142+(1+120)/2=351.5、x4=149+142+120+(1+181)/2=502、x5=149+142+120+181+(1+54)/2=619.5

MERT法:采用极大极小效率原理进行赋值。

R语言

1. Cochran-Armitage检验

CochranArmitageTest(),默认等距赋值

CAT <- matrix(c(13, 136, 17, 125, 16, 104, 32, 149, 9, 45), nrow = 5, byrow = T)
dimnames(CAT) <- list("Dose" = c("50", "100", "200", "300", "500"),
                       "Dizziness" = c("Yes", "No"))
CAT
library(DescTools)
CochranArmitageTest(CAT)

2. Logistic回归(将Dose作为连续型变量)

H0:β=0

library(rstatix)
CAT_df <- counts_to_cases(CAT)

CAT_df$DoseC <- NA
CAT_df$DoseC[CAT_df$Dose == "50"] <- 1
CAT_df$DoseC[CAT_df$Dose == "100"] <- 2
CAT_df$DoseC[CAT_df$Dose == "200"] <- 3
CAT_df$DoseC[CAT_df$Dose == "300"] <- 4
CAT_df$DoseC[CAT_df$Dose == "500"] <- 5

fit <- glm(Dizziness ~ DoseC, family = binomial(link = "logit"), CAT_df)
summary(fit)

3. CMH检验(Correlation统计量)

library(vcdExtra)
CMHtest(CAT, types = "cor")

SAS

1. Cochran-Armitage检验

默认原始数值,不另外赋值

data CAT;
input Dose Dizziness Count;
cards;
50 1 13
50 0 136
100 1 17
100 0 125
200 1 16
200 0 104
300 1 32
300 0 149
500 1 9
500 0 45
run;

proc freq data = CAT;
table Dose * Dizziness / trend nocol nopercent scores = table;
weight Count;
run;

等距赋值

data CAT2;
set CAT;
if Dose = 50 then DoseC = 1;
if Dose = 100 then DoseC = 2;
if Dose = 200 then DoseC = 3;
if Dose = 300 then DoseC = 4;
if Dose = 500 then DoseC = 5;
run;

proc freq data = CAT2;
table DoseC * Dizziness / trend nocol nopercent scores = table;
weight Count;
run;

2. Logistic回归(将Dose作为连续型变量)

Score检验的结果等价于Cochran-Armitage检验的结果

proc logistic data = CAT2;
Model Dizziness = DoseC / cl rl;
weight Count;
run;

SPSS

SPSS不直接提供Cochran-Armitage Trend Test,可用Linear-by-Linear Association (LLA) test代替进行线性趋势检验。

N为样本量,r为两个变量之间的Pearson相关系数

1. Linear-by-Linear Association (LLA) Test

2. Logistic回归(将Dose作为连续型变量)

Block0为空模型,即只有截距,没有其他协变量。Variables not in the Equation为每一个协变量单独加入模型中时的contribution。

手动计算

N为样本量,Y为事件数,ni为各等级的样本量,yi为各等级的事件数,xi为有序分类变量的赋值

1. 正态近似法

采用等距赋值(1、2、3、4、5)

不另外赋值(50、100、200、300、500)

2. 构建卡方统计量

采用等距赋值(1、2、3、4、5)

不另外赋值(50、100、200、300、500)

其它

1. 卡方检验 vs 单因素logistic回归

单因素logistic回归的结果和卡方检验的结果是等价的。在logistic回归中,对于整个模型和回归系数的检验采用的是似然比检验(LR)、Wald检验以及Score检验,三者输出的统计量均服从卡方分布。Score检验的 值等于卡方检验的Pearson 值,同样似然比检验的 值等于卡方检验的似然比 值。

2. 在回归分析中,对于分类变量, SPSS和SAS默认Last作为Reference,R语言默认First作为Reference。我个人比较习惯以First作为Reference,SPSS和SAS改为First Reference的操作如下:

SPSS

SAS

proc logistic data = CAT;
class Dose (param = ref ref = first);
Model Dizziness = Dose / cl rl;
weight Count;
run;

R

CAT_df$Dizziness <- factor(CAT_df$Dizziness)
CAT_df$Dose <- factor(CAT_df$Dose)

fit2 <- glm(Dizziness ~ Dose, family = binomial(link = "logit"), CAT_df)
summary(fit2)

参考文献

Cochran-Armitage趋势检验不同赋值的模拟研究《中国卫生统计》

Cochran-Armitage Trend Test Using SAS

https://www.lexjansen.com/pharmasug/2007/sp/SP05.pdf

Cochran-Armitage test for trend for 2xI tables

https://www.ibm.com/support/pages/cochran-armitage-test-trend-2xi-tables

搞懂传统单因素分析和单因素回归分析的纠葛,有这篇文章

https://www.sohu.com/a/205111806_48931

推荐访问


数据分析交流:数据分析交流
Excel学习: Excel学习交流
Python交流:一起学习Python(数据分
SQL交流:一起学习SQL(数据分析
微博:一起大数据

最新提问

  • SQL Chat
  • sql server 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了”阻止保存要求重新创建表的更改”选项。
  • 偏相关分析
  • 复相关系数
  • 【R语言】熵权法确定权重
  • 如何破解Excel VBA密码
  • 解决 vba 报错:要在64位系统上使用,请检查并更新Declare 语句
  • 基于 HuggingFace Transformer 的统一综合自然语言处理库
  • sqlserver分区表索引
  • Navicat连接数据库后不显示库、表、数据

文章标签

ARIMA CBC Excel GBDT KNN Modeler Mysql pandas PostgreSQL python python数据可视化 R SAS sklearn SPSS SQL SVM Tableau TensorFlow VBA 主成分分析 关联规则 决策树 协同过滤 可视化 因子分析 大数据 大数据分析 推荐系统 数据分析 数据可视化 数据挖掘 数据透视表 文本挖掘 时间序列 机器学习 深度学习 神经网络 结构方程 统计学 联合分析 聚类 聚类分析 逻辑回归 随机森林
©2023 一起大数据-技术文章心得 | Design: Newspaperly WordPress Theme