2016-04-13 11 views
1

Rに問題があります データのベクトルが6つあります。各ベクトルには重みがあります。 考えられる各シナリオの分位数を計算する必要があります。たとえば :expand.grid非常に大きなベクトルがメモリ制限を超えています

v1=c(1,2) 
v2=c(0,5) 
weights=c(1/3,2/3) 

は私が通常使用する:

scenarios=data.matrix(expand.grid(v1,v2)) 
results=scenarios %*% weights 

そして最後に100%まで1%からすべての分位数を取得するには:

quantiles=quantile(results,seq(0.01,1,0.01),names=FALSE) 

問題は、私が持っているということです6つのベクトル:51,236,234,71,7および8 obsそれぞれ、私に11G obsのベクトルを与える...

私はRから、私が47 Gbのベクトルでメモリの限界を超えたというエラーを取得します。

私はこの大きなマトリックスをバイパスするために使用できるいくつかの選択肢がありますか?私はそれぞれの値1つのベクトル内のループのように考えて、結果を文書に書きます。 しかし、私はこれらの別々のファイルのパーセンタイルをどのように計算するのか分かりません...

+0

あなたの人口のサイズは本当に巨大です。あなたの人口pdfを見積もるためにサンプリングを実行することを検討しますか? – chinsoon12

答えて

1

人口全体を生成するのではなく、

N <- 1e6 
scenarios <- unique(matrix(c(sample(1:51, N, replace=T), 
    sample(1:236, N, replace=T), 
    sample(1:234, N, replace=T),  
    sample(1:71, N, replace=T), 
    sample(1:7, N, replace=T), 
    sample(1:8, N, replace=T)), nrow=N)) 
N <- nrow(scenarios) 
weights <- matrix(rep(1/6, 6)) 
quantiles <- quantile(scenarios %*% weights, seq(0.01,1,0.01), names=FALSE) 

OPは厳密には、全体の人口を望んでいるならば、私はダウン

+0

こんにちはChinson12!どのように私のベクトルの分布は何か知ることができますか?私のベクトルは(1,2,3 ... 51)、(1,2、...、251)ではありません...(0.0714,0.02156,0.0068、...)私のベクトルでサンプル関数を使用しますか?私のニーズに合わせて変えることができるものを見て、あなたのソリューションを詳しく見ていきましょう。しかし、私は初めからここでサンプリングが必要であるとはかなり確信していました! – stlows

1

さて、この記事がかかります!助けてくれてありがとう! サンプリングのように見えました。

最後にchinson12の助けを借りてコードを使用しています。 サンプリングが適切な値に収束するかどうかを確認するためにブートストラップを実行しました。

N=1e6 
B=2 
results = c(1:100) 
for (i in 1:B){ 
    scenarios=unique(matrix(c(sample(v1,N,replace=T),sample(v2,N,replace=T),sample(v3,N,replace=T), 
         sample(v4,N,replace=T),sample(v5,N,replace=T),sample(v6,N,replace=T)),nrow = N)) 
    weightedSum = round(scenarios %*% weights,4) 
    results=cbind(results,quantile(weightedSum ,seq(0.01,1,0.01),names=FALSE)) 
} 
write(t(results),"ouput.txt",ncolumns = B + 1) 

出力ファイルは素晴らしいです! 4桁の場所に、私のパーセンタイルはすべて同じです!だから彼らは少なくとも値に収束します!

これは、私の人口パーセンタイルに対して偏っているパーセンテージであると言われていますか?

ありがとう

+0

最後の質問は、あなたが検索や統計交換に投稿する必要があります:) – chinsoon12

関連する問題