Rによる大規模なCox回帰(ビッグデータ)


8

Rのみを使用して、サンプルの2,000,000行のデータセットで次のようにCox回帰を実行しようとしています。これは、SASのPHREGの直接変換です。サンプルは、元のデータセットの構造を表しています。

##
library(survival)

### Replace 100000 by 2,000,000

test <- data.frame(start=runif(100000,1,100), stop=runif(100000,101,300), censor=round(runif(100000,0,1)), testfactor=round(runif(100000,1,11)))

test$testfactorf <- as.factor(test$testfactor)
summ <- coxph(Surv(start,stop,censor) ~ relevel(testfactorf, 2), test)

# summary(summ)
##

user  system elapsed 
9.400   0.090   9.481 

主な課題は、元のデータセット(2m行)の計算時間です。私が理解している限り、SASではこれに最大で1日かかる可能性がありますが、少なくとも終了します。

  • わずか100,000の観測で例を実行すると、わずか9秒しかかかりません。その後、観測数が100,000増加するごとに、時間はほぼ二次関数的に増加します。

  • 私は操作を並列化する手段を見つけていません(たとえば、可能であれば48コアマシンを活用できます)

  • どちらbiglmも革命Analyticsのすべてのパッケージには、Cox回帰のために利用可能である、と私はそれらを活用することはできません。

これをロジスティック回帰(Revolutionにパッケージがある)の観点から、またはこの問題に対する他の代替手段があるかどうかを表す手段はありますか?それらは根本的に異なることは知っていますが、状況に応じて可能性として私が推測できる最も近いものです。


2
条件付きロジスティック回帰とCox回帰は厳密に関連しています。stayconsistent.wordpress.com/2009/01/25/...
boscovich

これに対するエレガントな解決策に到達できましたか?複数のデータで何千もの遺伝子のからHRを計算していますが、はボトルネックです。現在、私はループオーバー遺伝子にを使用してい。私は新しいユーザーなので、PSスタックでコメントできません。c o x p h a p p l ycoバツphcoバツphapply
Arshi Arora

回答:


2

Rを使用して7'000'000の観測データセットでcox回帰を実行しましたが、これは問題ではありません。実際、2変量モデルでは、52秒で推定値が得られます。これは、Rと同様に、使用可能なRAMに関連する問題であることをお勧めします。モデルをスムーズに実行するには、少なくとも12GBが必要になる場合があります。


1

私はハードコアフィット関数(agreg.fit)に直接行きました。

n <- nrow(test)
y <- as.matrix(test[, 1:3])
attr(y, "type") <- "right"
x <- matrix(1:11, n, 11, byrow=TRUE)
colnames(x) <- paste("level", 1:11, sep="")
x <- x[, -2] == test$testfactor
mode(x) = "numeric"

fit2 <- agreg.fit(x, y, strata=NULL, control=coxph.control(), method="efron", 
                  init=rep(0, 10), rownames=1:n)

ただし、サンプルサイズを2倍にした場合の経過時間は、先ほど述べたように2次になります。また、coxph.controlのイプシロンを 小さくしても効果はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.