Vì câu hỏi là
"cách sử dụng phân phối Thống nhất để tạo các số ngẫu nhiên tương quan từ các phân phối biên khác nhau trong "R
và không chỉ các biến thiên ngẫu nhiên bình thường, câu trả lời trên không tạo ra các mô phỏng với tương quan dự định cho một cặp phân phối biên tùy ý trong .R
Lý do là vì, đối với hầu hết các cdf và , khi trong đó biểu thị cdf chuẩn thông thường.G Y cor ( X , Y ) ≠ cor ( G - 1 X ( Φ ( X ) , G - 1 Y ( Φ ( Y ) ) , ( X , Y ) ~ N 2 ( 0 , Σ ) , ΦGXGY
cor(X,Y)≠cor(G−1X(Φ(X),G−1Y(Φ(Y)),
(X,Y)∼N2(0,Σ),
Φ
Nói một cách dí dỏm, đây là một ví dụ ngược với Exp (1) và Gamma (.2,1) là cặp phân phối biên của tôi trong .R
library(mvtnorm)
#correlated normals with correlation 0.7
x=rmvnorm(1e4,mean=c(0,0),sigma=matrix(c(1,.7,.7,1),ncol=2),meth="chol")
cor(x[,1],x[,2])
[1] 0.704503
y=pnorm(x) #correlated uniforms
cor(y[,1],y[,2])
[1] 0.6860069
#correlated Exp(1) and Ga(.2,1)
cor(-log(1-y[,1]),qgamma(y[,2],shape=.2))
[1] 0.5840085
Một ví dụ ngược lại rõ ràng khác là khi là cdf Cauchy, trong trường hợp đó, mối tương quan không được xác định.GX
Để đưa ra một bức tranh rộng hơn, đây là một mã R trong đó cả và đều tùy ý:G YGXGY
etacor=function(rho=0,nsim=1e4,fx=qnorm,fy=qnorm){
#generate a bivariate correlated normal sample
x1=rnorm(nsim);x2=rnorm(nsim)
if (length(rho)==1){
y=pnorm(cbind(x1,rho*x1+sqrt((1-rho^2))*x2))
return(cor(fx(y[,1]),fy(y[,2])))
}
coeur=rho
rho2=sqrt(1-rho^2)
for (t in 1:length(rho)){
y=pnorm(cbind(x1,rho[t]*x1+rho2[t]*x2))
coeur[t]=cor(fx(y[,1]),fy(y[,2]))}
return(coeur)
}
Chơi xung quanh với các cdf khác nhau đã khiến tôi phát hiện ra trường hợp đặc biệt này của phân phối cho và phân phối log-Normal cho : G X G Yχ23GXGY
rhos=seq(-1,1,by=.01)
trancor=etacor(rho=rhos,fx=function(x){qchisq(x,df=3)},fy=qlnorm)
plot(rhos,trancor,ty="l",ylim=c(-1,1))
abline(a=0,b=1,lty=2)
trong đó cho thấy khoảng cách từ đường chéo tương quan có thể được.
Cảnh báo cuối cùng Đưa ra hai phân phối tùy ý và , phạm vi giá trị có thể có của không nhất thiết
. Vấn đề có thể không có giải pháp.G Y cor ( X , Y ) ( - 1 , 1 )GXGYcor(X,Y)(−1,1)