如何在R语言中计算C-index

如何在R语言中计算C-index,第1张

利用Hmisc包中的rcorr.cens函数 局限: - 只能处理一个预测变量 - 对超过2分类的分类变量处理粗糙

# 加载包及生成数据框,这里生成数据框主要是为了方便大家理解,因为大家通常都是将Excel的数据读进R,存储为数据框格式

library(survival)

library(Hmisc)

age <- rnorm(200, 50, 10)

bp <- rnorm(200,120, 15)

d.time <- rexp(200)

cens <- runif(200,.5,2)

death <- d.time <= cens

os <- pmin(d.time, cens)

sample.data <- data.frame(age = age,bp = bp,os = os,death = death)

#让我们看一下生成的例子数据的前6行

head(sample.data)

##age bp os death

## 1 33.18822 114.6965 1.106501 FALSE

## 2 41.86970 123.2265 1.365944 FALSE

## 3 50.41484 124.9522 0.867119 FALSE

## 4 45.66936 127.3237 1.155765 TRUE

## 5 39.79024 134.8846 1.257501 TRUE

## 6 31.89088 140.9382 1.125504 FALSE

rcorr.cens的代码及结果,第一个值就是C指数,同时也有Dxy的值

rcorr.cens(sample.data$age, Surv(sample.data$os, sample.data$death))

##C IndexDxy S.D. nmissing

## 4.528492e-01 -9.430156e-02 5.565299e-02 2.000000e+02 0.000000e+00

## uncensored Relevant Pairs Concordant Uncertain

## 1.290000e+02 3.172800e+04 1.436800e+04 8.072000e+03

rcorrcens的代码及结果,注意rcorrcens的写法是写成formula(公式)的形式,较为方便;而rcorr.cens的 写法是只能在前面写上一个自变量,并且不支持data = ...的写法,有点繁琐。较为遗憾的是这两种方法得到的C指数的标准误需要通过S.D./2间接得到。

r <- rcorrcens(Surv(os, death) ~ age + bp,data = sample.data)

r

## Somers' Rank Correlation for Censored DataResponse variable:Surv(os, death)

##

## CDxy aDxySDZ P n

## age 0.453 -0.094 0.094 0.056 1.69 0.0902 200

## bp 0.498 -0.003 0.003 0.054 0.06 0.9517 200

比如 Horticulture Research 中的论文 Comparative analysis of long noncoding RNAs in angiosperms and characterization of long noncoding RNAs in response to heat stress in Chinese cabbage 方法部分写道

这里相当于是计算两个数据集中的变量之间的相关性,之前发现 correlation 这个R包里的函数 correlation() 可以做

但是这里遇到了一个问题

关掉这个报错界面以后就会提示

暂时还不知道如何解决,自己搜索了一下暂时还没有找到解决办法

只能把输入法切换成中文,然后一次性把函数名输入完

计算相关系数和P值

结果如下

但是mRNA的表达量有上万个,用这个函数计算的时候是非常慢的

找到了另外一个函数是 Hmisc 这个包中的 rcorr() 函数

这个速度快很多,但是他不能计算两个数据集之间变量的相关性,

这样的话可以先计算,然后再筛选

这个函数要求的输入数据是矩阵格式

自定义函数将这个结果转换成一个四列的数据框格式

最后用变量名去匹配

两个矩阵之间的相关性热图这么容易画的吗?零基础学习R语言之相关性分析2_哔哩哔哩_bilibili

psych 这个包里的 corr.test() 函数也是可以直接计算两个数据集变量之间的相关性的,这个结果了也有显著性检验的p值

但是这个如果数量量比较大的话速度也很慢

小明的数据分析笔记本

通常情况下,我们会在excel中对数据进行预处理,然后将处理好的数据导入R中进行分析、作图。但随着数据源和数据格式的多样化,将多种数据源和数据格式导入R中进行分析、作图显得尤为必要,因为这对于数据分析、作图是最基础的。

R可导入键盘(利用键盘输入)、文本文件、excel、access、spss、sas等各类数据格式。

利用R中的edit()函数手动输入数据的文本编辑器:

(1)创建一个空数据框(或矩阵),其中变量名和变量的模式需与理想中的最终数据集一致;

(2)针对这个数据对象调用文本编辑器,输入你的数据,并将结果保存回此数据对象中。

函数edit()事实上是在对象的一个副本上进行 *** 作的。若不将其赋值到一个目标,则所有修改将会全部丢失!

用read.table()从带分隔符的文本文件中导入数据。此函数可读入一个表格格式的文件并将其保存为一个数据框。

参数sep允许你导入那些使用逗号以外的符号来分隔行内数据的文件。你可以使用sep="\t"读取以制表符分隔的文件。此参数的默认值为sep="",即表示分隔符可为一个或多个空格、制表符、换行符或回车符。

我习惯用readxl包的read_excel()函数进行导入:

SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc包中的spss.get()函数。

use.value.labels=TRUE表示让函数将带有值标签的变量导入为R中水平对应相同的因子。

R中设计了若干用来导入SAS数据集的函数,包括foreign包中的read.ssd()和Hmisc包中的sas.get()。这里我们使用sas7bdat包的read.sas7bdat()函数进行导入sas数据。

Robert I. Kabacoff (著). R语言实战(高涛/肖楠/陈钢 译). 北京: 人民邮电出版社.


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11320071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存