2013-06-12 6 views
6

私は(8.00ギガバイトのRAMを搭載したインテル®Core™i5-2400 3GHzのプロセッサ)は、Windows 7 Ultimateを使用してPC上でRのバージョン2.14.0を実行していてなされていない可能性があります。他の仕様が必要な場合は教えてください。全精度は「qbeta」

相関ベータ分布データをシミュレートしようとしています。私が使っている方法は、この論文に書かれているものの拡張である:

http://onlinelibrary.wiley.com/doi/10.1002/asmb.901/pdf

  1. 基本的に、私は(MASSからmvrnorm()機能を使用して)多変量正規データをシミュレートすることから始めます。
  2. は、その後、私は私の新しいデータベクトル(s)は(0,1)に住んでいるようなプロビットは、これらのデータに変換を適用するためにpnorm()を使用しています。そして、前の声明によれば、依然として相関があります。
  3. は、その後、特定の平均及び分散特性を有するバック相関ベータデータを取得するために、私は特定のshape1とshape2パラメータでqbeta()関数を適用し、これらのプロビット変換されたデータを指定されました。

Iは、データが存在する相関ベータを生成するための他の方法を知っています。私はなぜqbeta()がこのメソッドを特定の "シード"に対して失敗させるのかに興味があります。以下は私が得るエラーメッセージです。

Warning message: 
In qbeta(probit_y0, shape1 = a0, shape2 = b0) : 
    full precision may not have been achieved in 'qbeta' 

これはどういう意味ですか?どのように避けることができますか?大規模なシミュレーションのコンテキスト内で発生した場合、この問題がソースコード全体を終了させないようにする最良の方法は何ですか?

私は1から整数種子、次のコードを実行しました:1000。シード= 899は私に問題をもたらした唯一の価値でした。ここに問題があるとしても、必然的に他の種も問題になります。

library(MASS) 
set.seed(899) 
n0 <- 25 
n1 <- 25  
a0 <- 0.25  
b0 <- 4.75  
a1 <- 0.25  
b1 <- 4.75  
varcov_mat <- matrix(rep(0.25,n0*n0),ncol=n0) 
diag(varcov_mat) <- 1 
y0 <- mvrnorm(1,mu=rep(0,n0),Sigma=varcov_mat) 
y1 <- mvrnorm(1,mu=rep(0,n1),Sigma=varcov_mat) 
probit_y0 <- pnorm(y0) 
probit_y1 <- pnorm(y1) 
beta_y0 <- qbeta(probit_y0, shape1=a0, shape2=b0) 
beta_y1 <- qbeta(probit_y1, shape1=a1, shape2=b1) 

上記のコードは、より大きなシミュレーションプロジェクトの一部です。しかし、qbeta()の警告メッセージは、今私に頭痛を与えているものです。

グループが提供できる助けがあれば、非常に感謝しています。

乾杯 クリス

+0

R 3.0.1で警告が表示されません。 Rを更新することを検討してください – Roland

+0

R 2.15.1に関する警告はありません – eddi

+0

ありがとう@Roland。私はR 3.0.1(32ビット)の最新バージョンをダウンロードしました。上記の... set.seed(216)と同じコードを実行し、同じエラーが発生しました:警告メッセージ: qbeta(probit_y1、shape1 = a1、shape2 = b1): 完全精度が ' qbeta ' – Chris

答えて

2

エラーの理由はqbetaを計算するために使用されるアルゴリズムは、パラメータのそれらの値のために収束しなかったということです。備考AS R19およびアルゴリズムAS109、Applied Statistics、26,111-114およびその後の発言(AS83および訂正)は、qbetaを計算するためにAS109を使用する(Cran、GW、KJ MartinおよびGE Thomas(1977) )。 Rは1000回の反復で値を計算しようとします。それが1000回の反復でできない場合は、あなたが見たエラーメッセージが表示されます。ここで

qbetaためのコードです。