seqdist() にメモリのボトルネックがある可能性はありますか?
私は、64 GB の RAM を搭載した Windows x64 コンピュータでレジスタ データを扱う研究者です。私たちのデータは 60,000 人で構成されており、現在 SPELL 形式で約 220 万行のデータに取り組んでいます。seqdist を実行できません (method="OM", indel=1, sm="TRATE", with.missing=TRUE, full.matrix=FALSE)。エラー メッセージはここと同じです。一部は、メモリが十分に大きくないことを示しているようです:「負の長さのベクトルは許可されていません」。
わかりましたが、seqdist() は RAM 全体を使用していないようです。現在、私は 40,000 人のサンプルで実行しており、うまくいっているように見えますが、R は 2 GB 未満の RAM しか使用していません。60,000 人に対して seqdist() を実行すると、エラーが発生します。
どこかに 2^31-1 のサイズ制限があるのでしょうか?
病棟クラスターを計算すると、利用可能なすべての RAM が容易に利用されます。最大 40 GB の RAM を使用しましたが、これは少なくとも R が大量の RAM を利用できることを証明しています。
編集: ケースの最大数は正確に 46341 です。警告ですが、サイズが 46341 以下の場合はメモリを消費します。例:
library(TraMineR)
id <- seq(from=1, to=46342, by=1)
set.seed(234324)
time1 <- sample(seq(from=1, to=3, by=1), size=46342, replace=TRUE)
time2 <- sample(seq(from=1, to=3, by=1), size=46342, replace=TRUE)
time3 <- sample(seq(from=1, to=3, by=1), size=46342, replace=TRUE)
testdata <- data.frame(id, time1, time2, time3)
testseq <- seqdef(testdata, 2:4)
testdist <- seqdist(testseq, method="OM", indel=1, sm="TRATE", full.matrix=FALSE)