1.简介
对于许多高通量基因组研究,要预测的表型是有序的。有序反应的一些例子包括最近提倡的评估靶肿瘤病变治疗反应的方法,即实体肿瘤反应评估标准(RECIST)方法,有序结果定义为完全反应>部分反应>稳定疾病>进展性疾病。此外,大多数组织病理学测量是有序的,例如慢性肝炎患者肝活检标本的评分方法,包括Knodell肝活动指数、Ishak评分和METAVIR评分。统计方法,如相邻类别、比例优势和连续比率模型(Agresti 2002年)传统上用于对顺序反应建模,但当协变量的数量,第页,超过了观察次数,n个.
另一种类别预测方法,分类树(CT)能够预测响应,当n个<<第页(布雷曼等。1984). 假设n个待分类的独立观测值的特征是第页-预测因子的维数向量x个我= (x个我1,x个我2, . . . ,x个知识产权)和每次观察x个我落入其中之一J型类。让ω用表示类ω=ω1代表第1类中的观察结果,ω=ω2代表类别2。,和ω=ωJ型代表类J型导出CT时,所有观察都从根节点开始,t吨然后,对于预测因子1、2,第页,确定最佳分裂,其中最优性被定义为导致节点杂质最大减少的分裂。
对于节点t吨,最优分割将观测值分为左右后代节点,t吨L(左)和t吨R(右)以及每个J型这些节点中的类被称为节点比例,第页(ωj个|t吨)的j个= 1, . . . ,J型这样的话第页(ω1|t吨) +第页(ω2|t吨) + . . .+第页(ωJ型|t吨) = 1. 对于标称响应分类,节点内杂质测量最常用的是基尼准则(布雷曼等。1984),定义为
这是R编程环境中的默认杂质函数(R开发核心团队2009)rpart公司包装(塞尔诺和阿特金森1997)用于预测标称类响应。然而,当响应是有序的时,使用这个杂质函数并没有利用额外的信息。为此,广义基尼杂质函数(布雷曼等。1984),
哪些因素在C类(ωk个|ω我),错误分类一个类的成本我观察属于课堂k个已提出用于顺序响应预测。
另一种提出的有序杂质函数,用于基于名义有序关联度量导出有序响应分类树(Piccareta 2001年)不需要分配误分类成本
哪里(Piccareta 2008年).
顺序反应预测的一种非基于杂质的分裂方法是有序二分法(布雷曼等。1984). 尽管这本开创性的书中描述了这种方法布雷曼等。(1984)并已由Salford Systems在CART软件中实现(斯坦伯格和科拉1997;斯坦伯格和戈洛夫尼亚2006),它还没有在R中实现。有序二分法通过将有序响应重新定义为二分响应向量进行,其中对于每个观察我,的j个-第二种两分反应被认为是
对于节点t吨和二分反应C类j个,分裂秒最大化
超过第页协变量被认为是这种二分法反应的最佳分割C类j个随后,拆分秒与二分反应相关
然后选择用于拆分节点t吨在本文中,我们描述了r零件序号R包,它实现了有序双峰、广义基尼和有序杂质分裂方法。在推导顺序响应分类树时,应考虑使用这些拆分方法。
对于标称响应预测,错误分类率通常被检查为评估分类器性能的一种手段。对于序数响应预测问题,估计伽马统计量作为观察到的响应和预测响应之间关联的序数度量,作为衡量序数分类成功与否的一种手段,可能更有意义。简单地说,两个序数变量之间的关联X(X)和Y(Y)可以通过伽马统计进行估计(Agresti 2002年),其中给出了交叉制表矩阵T型属于X(X)和Y(Y)有第页行和c(c)列,单元格(1,1)的协调对数(第页–1,c(c)–1)由给出
类似地,单元格(1,2)到(第页– 1,c(c))由提供
然后我们让和这样有序关联的伽玛统计量定义为
R包,r零件序号,它实现了所描述的顺序分割方法,以及一个用于估计γ统计量的函数,作为关联的顺序度量,可从综合R档案网络下载,网址为http://CRAN.R-project.org/package=rpartOrdinal.
3.实施
这个r零件序号包是在R编程环境中编写的(R开发核心团队2009)并且取决于rpart公司包装(塞尔诺和阿特金森1997). 目前,rpart公司包括导出回归树、分类树和存活树的方法。由于中的方法=选项rpart公司,用户可以定义自己的拆分方法,以便与rpart函数一起使用。传递给method=选项的用户定义方法必须是由三个名为eval、split和init的函数组成的列表。由于之前的研究将序数分裂方法与传统方法相比较,用于单树和bootstrap聚合分类树,已经证明,当要预测的响应是序数时,通常首选序数分裂法(Piccareta 2008年;Archer和Mas 2009),我们实现了三种有序分裂方法,即有序二分法、有序杂质法和广义基尼法,用于与rpart公司.
3.1. 订购双人套餐
中的有序二重分裂准则方程式5已在中实现为可调用方法rpart公司这里,我们通过额外指定method=twoing,导出了一个序数分类树,用于预测低出生体重数据集Category中的序数响应。这种CT可能有助于探索与新生儿预后不良相关的因素。
R> 库(“rpartOrdinal”)R> 数据(“低bwt”)R> 低bwt$Category<–factor(ifelse(低bwt$bwt<=2500,3,+ifelse(低bwt$bwt<=3000,2,+ifelse(低bwt$bwt<=3500,1,0)),有序=TRUE)R> otwoing.rpart<–rpart(类别~年龄+lwt+种族+烟雾+ptl++ht+ui+ftv,数据=lowbwt,方法=twoing)
可以使用plot()和text()函数以图形方式显示安装的CT。在使用这些函数创建的树状拓扑图中,符合给定节点上显示的标准的观测值将转至左侧子节点,而不符合给定节点处显示的标准,则转至右侧子节点。
R> 绘图(otwoing.rpart)R> 文本(otwoing.rpart,pretty=TRUE)
文本函数的附加pretty=TRUE参数不会将出现在树中的因子缩写为字母数字字符。或者,post()函数可以用于生成包含树拓扑的postscript文件,该树拓扑更广泛地标记每个节点的拆分和预测类。
R> post(otwoing.rpart,filename=“TwoingLowbwt.ps”,使用.n=FALSE,+title=“”,水平=假)
3.2. 有序杂质函数
与twoing函数一样方程式3已在中实现为可调用方法rpart公司也就是说,在rpart函数中,用户应该指定method=ordinal,以便使用方程式3.
R> ordinal.rpart<–rpart(类别~年龄+lwt+race+smoke+ptl++ht+ui+ftv,数据=低bwt,方法=序号)R> 绘图(序数.rpart)R> 文本(ordinal.rpart,pretty=TRUE)
有序二叉树和有序树的拓扑结构非常相似,例外是节点38在有序树中按lwt分割,而同一节点在有序二叉树中按年龄分割,子节点77的分割变量也不同。
3.3. 广义基尼杂质
中的广义Gini杂质函数方程式2已通过允许用户在rpart调用的可选parms参数中指定loss.matrix参数在该包中实现。loss.marix参数接受“线性”或“二次”,分别用于使用线性或二次损失。使用线性损失的低出生体重示例的具体语法如下。
R> linear.loss.rpart<–rpart(类别~年龄+lwt+race+smoke+ptl++ht+ui+ftv,数据=lowbwt,方法=“class”,+parms=list(损失=loss.matrix(方法=“线性”,lowbwt$Category))R> 绘图(linear.loss.rpart)R> 文本(linear.loss.part,pretty=TRUE)
使用二次损失函数的低出生体重示例的具体语法为
R> quad.loss.rpart<–rpart(类别~年龄+lwt+race+smoke+ptl++ht+ui+ftv,数据=lowbwt,方法=“class”,+parms=list(loss=loss.matrix(method=“quad”,lowbwt$Category))R> 绘图(quad.loss.rpart)R> 文本(quad.loss.rpart,pretty=TRUE)
使用广义基尼准则导出的两个CT使用lwt>=109.5分割根节点,并使用ui=0分割节点2。然而,线性和二次损失函数之间的其他分裂不同。
3.4. 伽马统计
序数伽玛函数估计伽玛统计量,这是两个序数变量交叉制表关联强度的度量。以下示例复制了中的表2.8阿格雷斯蒂(2002).
R> 库(“rpartOrdinal”)R> 作业统计<–系数(c(1,代表(2,3),代表(3,10),代表,代表(4,6),代表,+代表(2,3),代表(3,10),代表,+2,重复(3,9),重复(4,11)),有序=真,+labels=c(“非常不满意”,“有点不满意”,+“中等满意”、“满意”)R> 收入<-系数(c(代表(1,20),代表(2,22),代表性(3,33)和代表性(4,21)),+有序=真,标签=c(“<15000”,“15000–25000”,“25000–40000”,+ “>40,000”))R> 表(工作统计、收入)
| 收入 |
---|
作业统计 | <15000 | 15,000–25,000 | 25,000–40,000 | >40,000 |
---|
非常不满意 | 1 | 2 | 1 | 0 |
有点不满意 | 三 | 三 | 6 | 1 |
中等满意 | 10 | 10 | 14 | 9 |
满意的 | 6 | 7 | 12 | 11 |
R> 序数γ(工作、统计、收入)[1] 0.2211009
回到低出生体重数据集的有序分类树,估计伽马统计量作为观察到的有序反应和预测的有序反应之间关联的有序度量可能是有趣的。然而,估计伽马统计量作为训练数据关联的序数度量,并不能提供有用的信息,说明当出现新数据时,预测器的泛化程度。因此,可以使用交叉验证方法。以下代码用于执行五重交叉验证,其中观察结果包含在V(V)-第个折叠存储在V(V)-组的第个组件。出租ℒ 表示完整的数据集,每种方法(有序、有序二分法、线性损失的广义基尼系数和二次损失的广义基尼系数)都使用ℒ∖ℒv(v)然后根据中的观测值获得预测的类别ℒv(v).
R> V<-5R> n<–长度(低bwt$类别)R> 离开<–trunc(n/V)R> o<–样本(1:n)R> 组<–矢量(“列表”,V)R> 对于(1中的j:(V-1)){+jj<–(1+(j–1)*leave.out)+组[[j]]<–(o[jj:(jj+leave.out–1)])+ }R> 组[[V]]<–o[(1+(V-1)*leave.out):n]R> 线性拟合<–rep(NA,n)R> 四边形配合<–rep(NA,n)R> 序号fit<–rep(NA,n)R> 两件套头<–rep(NA,n)R> 对于(1:V中的j){+ordinal.rpart<–rpart(类别~年龄+lwt+种族+吸烟++ptl+ht+ui+ftv,数据=lowbwt,子集=-groups[[j]],+方法=序号)+序数拟合[组[[j]]<-预测(序数rpart,+newdata=lowbwt[组[[j]],])+twoing.rpart<–rpart(类别~年龄+体重+种族+吸烟++ptl+ht+ui+ftv,数据=lowbwt,子集=-groups[[j]],+方法=两次)+twoing.fit[组[[j]]<-预测(twoing.rpart,+newdata=lowbwt[组[[j]],])+linear.rpart<–rpart(类别~年龄+lwt+种族+吸烟++ptl+ht+ui+ftv,数据=低bwt,子集=–组[[j]],+parms=list(损失=loss.matrix(方法=“线性”,lowbwt$Category))+phat<–预测(linear.rpart,newdata=lowbwt[组[[j]],])+线性拟合[组[[j]]<-适用(phat,1,which.max)+quadratic.rpart<–rpart(类别~年龄+lwt+种族+吸烟++ptl+ht+ui+ftv,数据=低bwt,子集=–组[[j]],+parms=list(loss=loss.matrix(method=“quad”,lowbwt$Category))+phat<–predict(quadratic.rpart,newdata=lowbwt[组[[j]],])+quad.fit[组[[j]]]<–apply(phat,1,which.max)+}R> 序号.gama(lowbwt$Category,twoing.fit)R> ordinal.gamma(lowbwt$Category,ordinal.fit)R> ordinal.gamma(lowbwt$Category,linear.fit)R> ordinal.gamma(lowbwt$Category,quad.fit)
对于低bwt数据集的这种随机划分,有序和有序两种方法具有相似的性能,并且无论是二次损失还是线性损失,都优于广义基尼(). 如果样本量较大,可以使用分割样本方法,其中rpart函数将应用于列车数据集,预测函数使用newdata=test。或者,可以很容易地构建引导程序,并使用带外观测值估计误差,如Archer和Mas(2009).
表3
低出生体重数据集观察到的顺序反应和预测的顺序反应之间γ顺序关联测度的五倍交叉验证估计。
有序杂质 | 0.446 |
订购双人套餐 | 0.436 |
具有线性误分类代价的广义基尼系数 | 0.345 |
具有二次误分类代价的广义基尼系数 | 0.402 |
3.5. B-ALL中的基因表达
在这里,我们演示了序贯分类方法在预测B-ALL分期中的应用。
R> 库(“rpartOrdinal”)R> 库(“ALL”)R> 数据(“ALL”)
类对象ALL是一个ExpressionSet,由生物导体项目(绅士等。2004)作为高通量基因组数据集的容器。此对象包括g×n矩阵基因表达数据,其中克表示高通量分析所查询的探针(即基因)数量,以及n个表示处理的样本数,以及n×p表型数据的数据框架,这里再次n个表示样本数和第页表示表型变量的数量。可以使用exprs()提取器函数从ALL对象中提取基因表达矩阵,而可以使用pData()提提器函数访问表型数据。如第2.2节所述,ALL对象包括128名患者、95名B细胞白血病患者和33名T细胞白血病患者的基因表达和表型数据。在本例中,我们将只关注那些同时分期为B1、B2、B3或B4的B细胞白血病患者。pData(ALL)对象包括一个向量BT,它存储疾病的类型(B或T)和阶段(1、2、3或4),并可用于子设置ALL对象。以下代码行用于将数据集限制为B1、B2、B3或B4级患者。有关ALL对象中存储的表型变量的更多信息,可以通过发出?所有。
R> BALL<–ALL[,即元素(pData(ALL)$BT,c(“B1”、“B2”、“B3”、”B4“)]
接下来,我们构造一个有序因子阶段,将B-ALL阶段表示为我们的序数结果。
R> 阶段<–因子(pData(BALL)$BT,级别=c(“B1”、“B2”、“B3”、”B4“),+有序=真)
序贯CT预测疾病阶段可能有助于探索导致B-ALL进展的遗传机制。在拟合CT之前,数据框架由序数结果阶段和转置的g×n必须构建基因表达矩阵。
R> Bcell<–数据帧(t(表达式(BALL)),阶段)
一旦构建了数据帧,就可以使用类似于lowbwt示例的语法来拟合有序分类树。以下语法分别用于使用有序二分法、序数法、带线性损失的广义基尼法和带二次损失的广义基尼法拟合CT。
R> otwoing.rpart<–rpart(阶段~.,数据=Bcell,方法=twoing)R> 绘图(otwoing.rpart)R> 文本(otwoing.rpart)R> ord.rpart<–rpart(阶段~.,数据=Bcell,方法=序号)R> 绘图(ord.rpart)R> 文本(ord.rpart)R> linear.loss.rpart<–rpart(阶段~数据=Bcell,+parms=列表(损失=损失矩阵(方法=“线性”,Bcell$stage))R> 绘图(linear.loss.rpart)R> 文本(linear.loss.rpart)R> 四边形损失零件<–rpart(阶段~.,数据=B单元,+parms=list(loss=loss.matrix(method=“quad”,Bcell$stage))R> 绘图(quad.loss.rpart)R> 文本(quad.loss.rpart)
有趣的是,所有四种方法都使用相同的变量和切点分割根节点。对于序数分类,使用五倍交叉验证来估计伽马统计量,作为观察到的和预测到的序数响应之间关联的序数度量,可能很有意义。以下代码用于执行五次交叉验证。
R> V<-5R> n<–长度(Bcell$阶段)R> 离开<–trunc(n/V)R> o<–样本(1:n)R> 组<–矢量(“列表”,V)R> 对于(1中的j:(V–1)){+jj<–(1+(j–1)*leave.out)+组[[j]]<–(o[jj:(jj+leave.out–1)])+ }R> 组[[V]]<–o[(1+(V-1)*leave.out):n]R> 线性拟合<–rep(NA,n)R> 四边形配合<–rep(NA,n)R> 序号fit<–rep(NA,n)R> 两件套头<–rep(NA,n)R> 对于(1:V中的j){+列车<–Bcell[–组[[j]],]+序号.rpart<–rpart(阶段~.,数据=序列,方法=序号)+twoing.rpart<–rpart(舞台~.,数据=列车,方法=双人)+linear.rpart<–rpart(阶段~.,data=列车,+parms=列表(loss=loss.matrix(方法=“线性”,训练$stage))+quad.rpart<–rpart(阶段~.,data=列车,+parms=list(loss=loss.matrix(方法=“quad”,train$stage))+rm(列车)+测试<–Bcell[组[[j]],]+ordinal.fit[组[[j]]]<–预测(ordinal.rpart,newdata=测试)+twoing.fit[组[[j]]]<–预测(twoing.rpart,newdata=test)+phat<–预测(linear.rpart,newdata=测试)+线性拟合[组[[j]]<-适用(phat,1,which.max)+rm(相位)+phat<–预测(四部分,新数据=测试)+quad.fit[组[[j]]]<–apply(phat,1,which.max)+rm(序号.rpart,两个.rpart、线性.rpart和四个.rparts、phat和test)+ }R> ordinal.gamma(Bcell$stage,ordinal.fit)R> 序号.gamma(Bcell$stage,twoing.fit)R> 序数.gama(Bcell$stage,linear.fit)R> 序号.gamma(Bcell$stage,quad.fit)
B-ALL基因表达数据集的四种分裂方法中的每一种的伽马顺序关联度量列在.
表4
B-ALL数据集的观测和预测序数响应之间伽马序数关联测度的五倍交叉验证估计。
有序杂质 | 0.762 |
订购双人套餐 | 0.562 |
具有线性误分类代价的广义基尼系数 | 0.736 |
具有二次误分类代价的广义基尼系数 | 0.687 |