それぞれが定義された確率を持つ相関アイテムの数に基づいて、二項ベクトルを生成したいと考えています。たとえばを使用するとrbinom(1e3, size = 4, prob = c(p.x1, p.x2, p.x3, p.x4))
、次のようなものが得られます3 3 0 0 2 4 1 0 4 4 0 1 4...
。現在、これらの x_i には定義済みの確率がありますが、相関していません。
5 年前、 Josh O'Brienは相関二項データを生成する優れたアプローチに貢献しました。私のニーズに近いと思いますが、ペア用に設計されており、1.、単一のベクトルと 2.、より多くの変数pが必要です。より多くの変数を生成するように関数を変更しようとしましたが、これまでのところ成功しておらず、頻繁に直面しています
Error in commonprob2sigma(commonprob, simulvals) :
Matrix commonprob not admissible.
これは、インポートされたbindata
パッケージによって送信されます。
私の考えは、Josh の関数で4 つ (またはより良い任意の数) の確率とrhosを次のように定義することです。
rmvBinomial3 <- function(n, size, p1, p2, p3, p4, rho) {
X <- replicate(n, {
colSums(rmvbin(size, c(p1,p2,p3,p4), bincorr=(1-rho)*diag(4)+rho))
})
t(X)
}
確かに--より多くのローbindata
が必要であり、パッケージで実行できるため、確率マトリックスを何らかの方法で含める必要があると思います。含める方法がわかりません。
rho1 <- -0.89; rho2 <- -0.75; rho3 <- -0.62; rho4 <- -0.59
m <- matrix(c(1, rho1, rho2, rho3,
rho1, 1, rho4, rho2,
rho2, rho4, 1, rho1,
rho3, rho2, rho1, 1), ncol = 4)
# [,1] [,2] [,3] [,4]
# [1,] 1.00 -0.89 -0.75 -0.62
# [2,] -0.89 1.00 -0.59 -0.75
# [3,] -0.75 -0.59 1.00 -0.89
# [4,] -0.62 -0.75 -0.89 1.00
bindata
残念ながら、各マトリックスは、 I check withの条件に適合するために、bindata::check.commonprob(m)
上記と同じエラーをスローします。によって作成されたマトリックスを取得することもできませんでしたbindata::commonprob2sigma()
。
私にとっての他の欠点は Josh の範囲ですrmvBinomial()
。p.X_i= 0.2--0.8 の値の間でのみ機能するようで、0.01--0.1 などのより小さな値も必要です。
どんな助けでも大歓迎です。
編集:明確にするために、最初に示したように、予想される結果は確かに 1 つのベクトルにすぎ3 3 0 0 2 4 1 0 4 4 0 1 4...
ませんが、それが派生した項目は定義可能な程度に相関する必要があります (つまり、項目の 1 つがまったく相関しない可能性があります)。