1 列から始まるマトリックスの値のサンプルを取得するシミュレーションを実行しています。次に、それらを選択基準に通してから、マトリックスの各行から、出力から値をランダムに選択し、そのランダムな選択を保存します。何らかの理由sample
で、実数と a を持つ行の行列に適用すると、NA
サンプリングすることさえできない数値が返されます。関数に何か問題がある可能性がありますsample
が、この未知の値がどこから来ているのかわかりません。
コード例:
theta <- c(30, 84, 159, 32, 60, 97)
omega <- 0.01
k <- 1
xn <- matrix(c(30, 84, 159, 32, 60, 97), ncol=1)
dup <- xn * 2
set.seed(1)
z <- matrix(rbinom(n=rep(1,length(dup)),size = as.vector(dup),prob = 0.5),nrow = nrow(dup))
z1 <- dup - z
xn <- cbind(z, z1) # put both in a matrix
W <- exp( -(1/2)*( ( ( xn - theta ) / theta ) ^2 / omega ) )
set.seed(1)
Z <- matrix(rbinom(nrow(W) * ncol(W), 1, W), nrow=nrow(W), ncol=ncol(W) )
xn <- ifelse ( Z == 0, 0, xn )
xn
[,1] [,2]
[1,] 32 0
[2,] 78 0
[3,] 144 0
[4,] 0 30
[5,] 60 60
[6,] 92 102
0 の値を含めたくないので、値を変更してから、各行に関数をNA
適用して単一の値を返します。sample
xn[which(xn==0)] <- NA
set.seed(1)
xn2 <- matrix(apply(xn, 1, function(x){sample(x[!is.na(x)], size = k)}), ncol = k)
私が得るべきものは
xn
[,1]
[1,] 32
[2,] 78
[3,] 144
[4,] 30
[5,] 60
[6,] 102
しかし、私が得るものは:
xn
[,1]
[1,] 9
[2,] 30
[3,] 83
[4,] 24
[5,] 60
[6,] 102
具体的には、この例では、値 9、23、55、および 24 がどこからともなく出てきています。
このサンプルを取得するときに、私がどのような間違いを犯しているのか誰か知っていますか?