Tạo các cặp số ngẫu nhiên phân bố đồng đều và tương quan


14

Tôi muốn tạo các cặp số ngẫu nhiên với mối tương quan nhất định. Tuy nhiên, cách tiếp cận thông thường của việc sử dụng kết hợp tuyến tính của hai biến thông thường không hợp lệ ở đây, bởi vì sự kết hợp tuyến tính của các biến thống nhất không còn là biến phân phối đồng đều nữa. Tôi cần hai biến để được thống nhất.

Bất kỳ ý tưởng về cách tạo các cặp biến thống nhất với một mối tương quan nhất định?


6
Liên quan chặt chẽ: stats.stackexchange.com/questions/30526 . Bạn cũng muốn kiểm tra thẻ copula - chỉ cần nhấp vào liên kết ở đây. Một kỹ thuật nhanh và bẩn là để X đồng nhất [0,1]Y=X khi XαY=1+αX nếu không. Mối tương quan là ρ=2(α1)3+1 , từ đâu α=1((1ρ)/2)1/3 hiện các trick. Nhưng các công thức sẽ giúp bạn kiểm soát nhiều hơn ....
whuber

Cảm ơn vì nhận xét, nhưng đúng vậy, tôi nghĩ rằng phương pháp này thực sự "bẩn"
Onurenio

1
Tôi hy vọng rằng khi xem phương pháp này, bạn sẽ nhận ra rằng bạn có thể (và nên) cung cấp các tiêu chí bổ sung liên quan đến các thuộc tính của các cặp số ngẫu nhiên của bạn. Nếu điều này là "bẩn", thì chính xác thì có gì sai với giải pháp? Hãy cho chúng tôi để chúng tôi có thể cung cấp câu trả lời phù hợp hơn cho tình huống của bạn.
whuber

Câu hỏi này đã được trả lời một cách tình cờ khi trả lời một câu hỏi liên quan chặt chẽ: làm thế nào để tạo ra các cặp RV với mối quan hệ hồi quy tuyến tính. Bởi vì độ dốc của hồi quy tuyến tính có liên quan theo cách dễ dàng tính toán với hệ số tương quan, và tất cả các độ dốc có thể có thể được tạo ra, nó tạo ra một cách để tạo ra chính xác những gì bạn muốn. Xem số liệu thống kê.stackexchange.com/questions / 257779 / .
whuber

1
Ngoài ra, vui lòng xem stats.stackexchange.com/questions/31771 , trong đó trả lời khái quát hóa cho ba đồng phục ngẫu nhiên.
whuber

Câu trả lời:


16

Tôi không biết về một phương pháp phổ quát để tạo các biến ngẫu nhiên tương quan với bất kỳ phân phối biên nào. Vì vậy, tôi sẽ đề xuất một phương pháp đặc biệt để tạo ra các cặp biến ngẫu nhiên được phân phối đồng đều với mối tương quan (Pearson) nhất định. Không mất tính tổng quát, tôi giả định rằng phân phối biên mong muốn là thống nhất tiêu chuẩn (nghĩa là hỗ trợ là ).[0,1]

Phương pháp đề xuất dựa trên các yếu tố sau:
a) Đối với các biến ngẫu nhiên đồng nhất tiêu chuẩn U 2 với các hàm phân phối tương ứng F 1F 2 , chúng ta có F i ( U i ) = U i , với i = 1 , 2 . Do đó, theo định nghĩa , rho của Spearmanρ S ( U 1 , U 2 ) = c o r r ( FU1U2F1F2Fi(Ui)=Uii=1,2 Vì vậy, hệ số tương quan của Spearman rho và Pearson là bằng nhau (tuy nhiên các phiên bản mẫu có thể khác nhau).

ρS(U1,U2)=corr(F1(U1),F2(U2))=corr(U1,U2).

b) Nếu là các biến ngẫu nhiên có lề liên tục và copula Gaussian với hệ số tương quan (Pearson) ρ , thì rho của Spearman là ρ S ( X 1 , X 2 ) = 6X1,X2ρ Điều này giúp dễ dàng tạo các biến ngẫu nhiên có giá trị mong muốn của rear Spearman.

ρS(X1,X2)=6πarcsin(ρ2).

Cách tiếp cận là tạo dữ liệu từ copula Gaussian với hệ số tương quan phù hợp sao cho rho của Spearman tương ứng với tương quan mong muốn cho các biến ngẫu nhiên thống nhất.ρ

Thuật toán mô phỏng
Gọi biểu thị mức độ tương quan mong muốn và n số lượng cặp được tạo. Thuật toán là:rn

  1. Tính .ρ=2sin(rπ/6)
  2. Tạo một cặp biến ngẫu nhiên từ copula Gaussian (ví dụ, với cách tiếp cận này )
  3. Lặp lại bước 2 lần.n

Ví dụ
Đoạn mã sau đây là một ví dụ về việc triển khai thuật toán này bằng R với tương quan đích n = 500 cặp.r=0.6n=500

## Initialization and parameters 
set.seed(123)
r <- 0.6                            # Target (Spearman) correlation
n <- 500                            # Number of samples

## Functions
gen.gauss.cop <- function(r, n){
    rho <- 2 * sin(r * pi/6)        # Pearson correlation
    P <- toeplitz(c(1, rho))        # Correlation matrix
    d <- nrow(P)                    # Dimension
    ## Generate sample
    U <- pnorm(matrix(rnorm(n*d), ncol = d) %*% chol(P))
    return(U)
}

## Data generation and visualization
U <- gen.gauss.cop(r = r, n = n)
pairs(U, diag.panel = function(x){
          h <- hist(x, plot = FALSE)
          rect(head(h$breaks, -1), 0, tail(h$breaks, -1), h$counts/max(h$counts))})

Trong hình bên dưới, các ô chéo hiển thị biểu đồ của các biến U 2 và các ô ngoài đường chéo hiển thị các sơ đồ phân tán của U 1U 2 . U1U2U1U2nhập mô tả hình ảnh ở đây

Bằng cách xây dựng, các biến ngẫu nhiên có lề đồng nhất và hệ số tương quan (gần với) . Nhưng do ảnh hưởng của việc lấy mẫu, hệ số tương quan của dữ liệu mô phỏng không chính xác bằng r .rr

cor(U)[1, 2]
# [1] 0.5337697

Lưu ý rằng gen.gauss.cophàm nên hoạt động với nhiều hơn hai biến chỉ bằng cách chỉ định ma trận tương quan lớn hơn.

Nghiên cứu
mô phỏng Nghiên cứu mô phỏng sau đây lặp lại cho tương quan mục tiêu cho thấy rằng sự phân bố của hệ số tương quan hội tụ đến tương quan mong muốn khi kích thước mẫu n tăng.r=0.5,0.1,0.6n

## Simulation
set.seed(921)
r <- 0.6                                                # Target correlation
n <- c(10, 50, 100, 500, 1000, 5000); names(n) <- n     # Number of samples
S <- 1000                                               # Number of simulations

res <- sapply(n,
              function(n, r, S){
                   replicate(S, cor(gen.gauss.cop(r, n))[1, 2])
               }, 
               r = r, S = S)
boxplot(res, xlab = "Sample size", ylab = "Correlation")
abline(h = r, col = "red")

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


3
Phương pháp chung để tạo ra các phân phối đa biến tương quan với các phân phối biên đã cho được gọi là copula .
whuber

@whuber, việc sử dụng copula cho phép chỉ định cấu trúc phụ thuộc giữa các biến ngẫu nhiên. Vấn đề là mối tương quan (Người) bị ảnh hưởng bởi cả cấu trúc phụ thuộc và tỷ suất lợi nhuận. Vì vậy, mỗi lựa chọn lề sẽ yêu cầu lựa chọn tham số copula tương ứng, chưa kể rằng một số mức độ tương quan đơn giản là không thể đạt được đối với các lề đã cho (ví dụ: xem tại đây ). Nếu bạn biết về một phương pháp cho phép 'kiểm soát' mức độ tương quan cho bất kỳ lựa chọn lề nào, tôi rất muốn biết về nó.
QuantIbex

Cảm ơn @QuantIbex. Nhưng tôi không hiểu tại sao "a) ngụ ý rằng hệ số tương quan của Spearman rho và (Pearson's) cho các biến ngẫu nhiên có lề thống nhất tiêu chuẩn xấp xỉ bằng nhau trong mẫu lớn"
Onurenio

2
[1,1]

1
@Quantibex Tôi đã tự do thêm một câu chỉ ra gen.gauss.copchức năng của bạn sẽ hoạt động cho hơn hai biến với một điều chỉnh (tầm thường). Nếu bạn không thích sự bổ sung hoặc muốn đặt nó một cách khác biệt, vui lòng hoàn nguyên hoặc thay đổi khi cần thiết.
Glen_b -Reinstate Monica

0

u1U(0,1)u1w1U(0,1)I=1u1w2U(0,1)I=0u1U(0,1)u2

E(u1u2)=E[Iw1+(1I)w2][Iw1+(1I)w3]

Expanding this, note first that I(I1)=0, I2=I, and (1I)2=(1I) because I is always either 0 or 1. Note also that I is independent of the w's, which are also independent of each other. So:

E(u1u2)=E(I)E(w12)+E(1I)E(w2)E(w3) =pE(w12)+(1p)/4

From the fact that V(w1)=1/12, we get E(w12)=1/3, so E(u1u2)=p/12+1/4, that is: cov(u1u2)=p/12. Since V(u1)=V(u2)=1/12, we get finally that cor(u1,u2)=p.


0

Here is one easy method for positive correlation: Let (u1,u2)=Iw1+(1I)(w2,w3), where w1,w2, and w3 are independent U(0,1) and I is Bernoulli(p). u1 and u2 will then have U(0,1) distributions with correlation p. This extends immediately to k-tuples of uniforms with compound symmetric variance matrix.

If you want pairs with negative correlation, use (u1,u2)=I(w1,1w1)+(1I)(w2,w3), and the correlation will be p.


Can you add a short proof of why this works?
The Laconic

if your want to be computationally efficient, u1=w1 also produces the same correlation (both positive and negative cases)
Anvit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.