簡體   English   中英

使用 R 創建完全對立的繪圖

[英]Create fully antithetic draws using R

假設我有矩陣d ,它是二維(列)中采樣過程的兩種不同實現(行)的結果。 我想開發一個 function 從這個原始矩陣創建完全對立的繪圖。

c1 <- c(0.1, 0.6);c2 <- c(0.3, 0.8);d <- rbind(c1,c2)
#    [,1] [,2]
# c1  0.1  0.6
# c2  0.3  0.8

也就是說,例如,對於第一個實現( c(0.1, 0.6) ),我想獲得這個隨機抽取的二維鏡像,它生成了 4 (2^2)種可能的組合,如下所示:

d1_anthi = matrix( 
  c(   d[1,1] ,   d[1,2],
    1 - d[1,1],   d[1,2],
       d[1,1] , 1 - d[1,2],
    1 - d[1,1], 1 - d[1,2]), nrow=2,ncol=4)
t(d1_anthi)
#      [,1] [,2]
# [1,]  0.1  0.6
# [2,]  0.9  0.6
# [3,]  0.1  0.4
# [4,]  0.9  0.4

類似地,對於第二個,實現結果如下:

d2_anthi = matrix( 
  c(   d[2,1] ,   d[2,2],
       1 - d[2,1],   d[2,2],
       d[2,1] , 1 - d[2,2],
       1 - d[2,1], 1 - d[2,2]), nrow=2, ncol=4)
t(d2_anthi)
#       [,1] [,2]
# [1,]  0.3  0.8
# [2,]  0.7  0.8
# [3,]  0.3  0.2
# [4,]  0.7  0.2

因此,我想要的 object 將鎖定是這樣的:

anthi_draws <- rbind(t(d1_anthi),t(d2_anthi))
     # [,1] [,2]
# [1,]  0.1  0.6  <- original first realization
# [2,]  0.9  0.6
# [3,]  0.1  0.4
# [4,]  0.9  0.4
# [5,]  0.3  0.8  <- original second realization
# [6,]  0.7  0.8
# [7,]  0.3  0.2
# [8,]  0.7  0.2

最后,我想創建一個 function,給定一個隨機數矩陣,它能夠創建這個擴展的對立畫矩陣。 比如下圖中我有一個三個維度的采樣,那么每次原始抽獎的總抽獎次數是 2^3 = 8。

在此處輸入圖像描述

特別是,我在創建取決於原始采樣尺寸(矩陣列)的完整組合時遇到問題。 我計划使用expand.grid()但我無法使用它創建完整的組合。 歡迎任何有關創建此類 function 的提示或幫助。 先感謝您。

你可以試試這個

do.call(
  rbind,
  apply(
    d,
    1,
    function(x) {
      expand.grid(data.frame(rbind(x, 1 - x)))
    }
  )
)

這使

      X1  X2
c1.1 0.1 0.6
c1.2 0.9 0.6
c1.3 0.1 0.4
c1.4 0.9 0.4
c2.1 0.3 0.8
c2.2 0.7 0.8
c2.3 0.3 0.2
c2.4 0.7 0.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM