मैं किसी भी सीमांत वितरण के साथ सहसंबद्ध यादृच्छिक चर उत्पन्न करने के लिए एक सार्वभौमिक विधि के बारे में नहीं जानता। इसलिए, मैं एक दिए गए (पियर्सन) सहसंबंध के साथ समान रूप से वितरित यादृच्छिक चर के जोड़े उत्पन्न करने के लिए एक तदर्थ विधि का प्रस्ताव दूँगा। सामान्यता के नुकसान के बिना, मैं मानता हूं कि वांछित सीमांत वितरण मानक वर्दी है (यानी, समर्थन ) है।[0,1]
प्रस्तावित दृष्टिकोण निम्न पर निर्भर करता है:
ए) संबंधित वितरण कार्यों एफ 1 और एफ 2 के साथ मानक वर्दी यादृच्छिक चर और यू 2 के लिए , हमारे पास आई = 1 , 2 के लिए एफ आई ( यू आई ) = यू आई है । इस प्रकार, परिभाषा के द्वारा स्पीयरमैन की रो है
ρ एस ( यू 1 , यू 2 ) = सी ओ आर आर ( एफU1U2F1F2Fi(Ui)=Uii=1,2
तो, स्पीयरमैन के आरएचओ और पीयरसन के सहसंबंध गुणांक समान हैं (नमूना संस्करण हालांकि भिन्न हो सकते हैं)।
ρS(U1,U2)=corr(F1(U1),F2(U2))=corr(U1,U2).
ख) यदि निरंतर मार्जिन और साथ यादृच्छिक परिवर्तनीय हैं गाऊसी योजक के साथ (पियर्सन) सहसंबंध गुणांक ρ , तो स्पीयरमैन की रो है
ρ एस ( एक्स 1 , एक्स 2 ) = 6X1,X2ρ
इससे यादृच्छिक चर उत्पन्न करना आसान हो जाता है जिसमें स्पीयरमैन के आरएचओ का वांछित मूल्य होता है।
ρS(X1,X2)=6πarcsin(ρ2).
दृष्टिकोण एक उचित सहसंबंध गुणांक के साथ गाऊसी योजक से डेटा उत्पन्न करने के लिए है ऐसी है कि स्पीयरमैन की वर्दी यादृच्छिक चर के लिए वांछित सह-संबंध के लिए रो मेल खाती है।ρ
सिमुलेशन एल्गोरिथ्म
Let सहसंबंध के वांछित स्तर निरूपित, और n जोड़े की संख्या उत्पन्न किया जा करने के लिए। एल्गोरिथ्म है:rn
- गणना ।ρ=2sin(rπ/6)
- गाऊसी कोपला से यादृच्छिक चर की एक जोड़ी उत्पन्न करें (जैसे, इस दृष्टिकोण के साथ )
- दोहराएँ चरण 2 बार।n
उदाहरण
निम्नलिखित कोड एक लक्ष्य सहसंबंध और एन = 500 जोड़े के साथ आर का उपयोग करके इस एल्गोरिथ्म के कार्यान्वयन का एक उदाहरण है ।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))})
नीचे दिए गए चित्र में, विकर्ण भूखंडों को और यू 2 के हिस्टोग्राम दिखाए जाते हैं , और ऑफ-विकर्ण भूखंड यू 1 और यू 2 के तितर बितर भूखंड दिखाते हैं ।
U1U2U1U2
कब्ज द्वारा, यादृच्छिक चर में एक समान मार्जिन और एक सहसंबंध गुणांक होता है (करीब) । लेकिन नमूने के प्रभाव के कारण, सिम्युलेटेड डेटा का सहसंबंध गुणांक आर के बराबर नहीं है।rr
cor(U)[1, 2]
# [1] 0.5337697
ध्यान दें कि gen.gauss.cop
फ़ंक्शन को एक बड़े सहसंबंध मैट्रिक्स को निर्दिष्ट करके केवल दो से अधिक चर के साथ काम करना चाहिए।
सिमुलेशन अध्ययन
लक्ष्य सहसंबंध के लिए दोहराया निम्नलिखित सिमुलेशन अध्ययन से पता चलता है कि नमूने का आकार के रूप में वांछित सह-संबंध के लिए सहसंबंध गुणांक और converges के वितरण एन बढ़ जाती है।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")