কোনও প্রদত্ত প্রান্তিক বিতরণ সহ পারস্পরিক সম্পর্কযুক্ত র্যান্ডম ভেরিয়েবল উত্পন্ন করার জন্য আমি সর্বজনীন পদ্ধতি সম্পর্কে অবগত নই। সুতরাং, আমি একটি প্রদত্ত (পিয়ারসন) পারস্পরিক সম্পর্কের সাথে একত্রে বিতরণ এলোমেলো ভেরিয়েবলগুলির জোড়া উত্পন্ন করার জন্য একটি অ্যাডহক পদ্ধতির প্রস্তাব করব। সাধারণতার ক্ষতি ছাড়াই, আমি ধরে নিই যে পছন্দসই প্রান্তিক বিতরণটি স্ট্যান্ডার্ড ইউনিফর্ম (অর্থাত্ সমর্থনটি [0,1] )।
প্রস্তাবিত পদ্ধতির নিম্নলিখিত উপর নির্ভর:
ক) মান অভিন্ন র্যান্ডম ভেরিয়েবল জন্য এবং ইউ 2 নিজ নিজ বন্টন ফাংশন সঙ্গে এফ 1 ও এফ 2 , আমরা এফ আমি ( ইউ আমি ) = ইউ আমি , জন্য আমি = 1 , 2 । সুতরাং, সংজ্ঞা অনুসারে স্পিয়ারম্যানের rho হ'ল
ρ S ( U 1 , U 2 ) = c o r r ( FU1ইউ2এফ1এফ2Fi(Ui)=Uii=1,2
সুতরাং, স্পিয়ারম্যান এর rho এবং পিয়ারসন এর পারস্পরিক সম্পর্ক সহগ সমান (নমুনা সংস্করণ তবে পৃথক হতে পারে)।
ρS(U1,U2)=corr(F1(U1),F2(U2))=corr(U1,U2).
খ) যদি অবিচ্ছিন্ন মার্জিন এবং গাউসিয়ান কপুলার সাথে (পিয়ারসন) পারস্পরিক সম্পর্ক সহগ ρ সহ র্যান্ডম ভেরিয়েবল হয় তবে স্পিয়ারম্যানের rho
ho S ( এক্স 1 , এক্স 2 ) = 6X1,X2ρ
এটি স্পিয়ারম্যানের rho এর একটি পছন্দসই মান রয়েছে এমন এলোমেলো পরিবর্তনগুলি উত্পন্ন করা সহজ করে তোলে।
ρS(X1,X2)=6πarcsin(ρ2).
পদ্ধতিটি হ'ল গাউসিয়ান কপুলা থেকে একটি উপযুক্ত পারস্পরিক সহগ সহ ডেটা উত্পন্ন করা যেমন স্পিয়ারম্যানের আরএইচ অভিন্ন র্যান্ডম ভেরিয়েবলের জন্য কাঙ্ক্ষিত পারস্পরিক সম্পর্ক।ρ
সিমুলেশন অ্যালগরিদম
আসুন পারস্পরিক সম্পর্কের সন্তুষ্টির পর্যায়ে বোঝাতে, এবং এন জোড়া সংখ্যা উত্পন্ন করা হবে। অ্যালগরিদমটি হ'ল:rn
- গণনা ।ρ=2sin(rπ/6)
- গাউসিয়ান কপুলা থেকে এক জোড়া এলোমেলো ভেরিয়েবল তৈরি করুন (উদাহরণস্বরূপ, এই পদ্ধতির সাথে )
- পদক্ষেপটি 2 বার পুনরাবৃত্তি করুন ।n
উদাহরণ
নীচের কোডটি একটি টার্গেট রিলেশনশিপ এবং 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
Constuction দ্বারা, র্যান্ডম ভেরিয়েবল অভিন্ন মার্জিন এবং পারস্পরিক সম্পর্কের সহগের (পাসে) থাকতে । স্যাম্পলিংয়ের প্রভাবের কারণে, সিমুলেটেড তথ্যের পারস্পরিক সম্পর্ক সহগ আর এর সমান নয় ।rr
cor(U)[1, 2]
# [1] 0.5337697
নোট করুন যে gen.gauss.cop
ফাংশনটি কেবল বৃহত্তর পারস্পরিক সম্পর্কের ম্যাট্রিক্স নির্দিষ্ট করে দুটিরও বেশি ভেরিয়েবলের সাথে কাজ করা উচিত।
সিমুলেশন অধ্যয়ন
নীচের সিমুলেশন অধ্যয়নটি টার্গেট রিলেশনের জন্য পুনরাবৃত্তি পরামর্শ দেয় যে পারস্পরিক সম্পর্কের সহগের বন্টন নমুনার আকার n বাড়ার সাথে সাথে কাঙ্ক্ষিত সম্পর্কের দিকে রূপান্তরিত হয় ।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")