ল্যাভানডোস্কি, কুরোভিকা এবং জো (এলকেজে), ২০০৯ দ্বারা দ্রাক্ষালতা এবং বর্ধিত পেঁয়াজ পদ্ধতির উপর ভিত্তি করে একটি কাগজ উত্সাহিত এলোমেলো পারস্পরিক সম্পর্ক ম্যাট্রিক্স, এলোমেলো পারস্পরিক সম্পর্ক ম্যাট্রিক্স উত্পন্ন করার দুটি দক্ষ পদ্ধতির একীভূত চিকিত্সা এবং প্রদর্শনী সরবরাহ করে provides উভয় পদ্ধতিই নীচে সংজ্ঞায়িত নির্দিষ্ট সুনির্দিষ্ট অর্থে ইউনিফর্ম বিতরণ থেকে ম্যাট্রিক্স তৈরি করতে দেয় , কার্যকর করা সহজ, দ্রুত এবং মজাদার নাম থাকার একটি অতিরিক্ত সুবিধা রয়েছে।
ডায়গোনালের উপরের সাথে আকারের একটি বাস্তব প্রতিসাম্য ম্যাট্রিক্সের অনন্য অফ-ডায়াগোনাল উপাদান রয়েছে এবং তাই পয়েন্ট হিসাবে প্যারাম্যাট্রাইজ করা যেতে পারে । এই স্পেসের প্রতিটি পয়েন্ট একটি প্রতিসম ম্যাট্রিক্সের সাথে মিলে যায় তবে এগুলির সবগুলিই ইতিবাচক-নির্দিষ্ট নয় (যেহেতু পারস্পরিক সম্পর্ক ম্যাট্রিক্স থাকতে হবে)। সম্পর্কযুক্ত ম্যাট্রিকগুলি অতএব actually (আসলে একটি সংযুক্ত উত্তল উপসেট) এর উপসেট গঠন করে এবং উভয় পদ্ধতিই এই উপসেটের উপর একটি অভিন্ন বিতরণ থেকে পয়েন্ট উত্পন্ন করতে পারে।d ( d - 1 ) / 2 R d ( d - 1 ) / 2 R d ( d - 1 ) / 2d×dd(d−1)/2Rd(d−1)/2Rd(d−1)/2
আমি প্রতিটি পদ্ধতির নিজস্ব ম্যাটল্যাব বাস্তবায়ন সরবরাহ করব এবং তাদেরকে দিয়ে চিত্রিত করব ।d=100
পেঁয়াজ পদ্ধতি
পেঁয়াজ পদ্ধতিটি অন্য একটি কাগজ থেকে এসেছে (এল কেজেতে রেফ # 3) এবং এর নামটির মালিকানা এই সত্যটির সাথে আছে যে সম্পর্কের ম্যাট্রিকগুলি ম্যাট্রিক্স দিয়ে শুরু হয় এবং এটি কলাম এবং এক সারি কলাম দ্বারা কলাম বৃদ্ধি করে। ফলাফল বিতরণ অভিন্ন। আমি পদ্ধতির পিছনে গণিতটি সত্যই বুঝতে পারি না (এবং যাইহোক দ্বিতীয় পদ্ধতিটি পছন্দ করি), তবে ফলাফল এখানে:1×1
এখানে এবং প্রতিটি সাবপ্লোটের শিরোনামের নীচে সবচেয়ে ছোট এবং বৃহত্তম ইগেনভ্যালু এবং নির্ধারক (সমস্ত ইগেনভ্যালুগুলির পণ্য) দেখায়। কোডটি এখানে:
%// ONION METHOD to generate random correlation matrices distributed randomly
function S = onion(d)
S = 1;
for k = 2:d
y = betarnd((k-1)/2, (d-k)/2); %// sampling from beta distribution
r = sqrt(y);
theta = randn(k-1,1);
theta = theta/norm(theta);
w = r*theta;
[U,E] = eig(S);
R = U*E.^(1/2)*U'; %// R is a square root of S
q = R*w;
S = [S q; q' 1]; %// increasing the matrix size
end
end
বর্ধিত পেঁয়াজ পদ্ধতি
LKJ এই পদ্ধতি একটু সংশোধন, যাতে নমুনা পারস্পরিক সম্পর্ক ম্যাট্রিক্স পাবে করার জন্য একটি বিতরণ সমানুপাতিক থেকে । বৃহত্তর , বৃহত্তর নির্ধারক হতে হবে, যার অর্থ উত্পন্ন পারস্পরিক সম্পর্ক ম্যাট্রিক্স আরো এবং আরো কাছে করবে পরিচয় ম্যাট্রিক্স। মান ইউনিফর্ম বিতরণের সাথে সমান। উপর ম্যাট্রিক্স নীচের চিত্রে সঙ্গে তৈরি হয় । [ ডি ই টিC[detC]η−1ηη=1η=1,10,100,1000,10000,100000
কিছু কারণে ভ্যানিলা পেঁয়াজ পদ্ধতি হিসেবে মাত্রার একই আদেশের নির্ধারক পেতে জন্য, আমি রাখতে হবে এবং (যেমন LKJ দাবিকৃত)। ভুল কোথায় হয়েছে তা নিশ্চিত নয়।η=0η=1
%// EXTENDED ONION METHOD to generate random correlation matrices
%// distributed ~ det(S)^eta [or maybe det(S)^(eta-1), not sure]
function S = extendedOnion(d, eta)
beta = eta + (d-2)/2;
u = betarnd(beta, beta);
r12 = 2*u - 1;
S = [1 r12; r12 1];
for k = 3:d
beta = beta - 1/2;
y = betarnd((k-1)/2, beta);
r = sqrt(y);
theta = randn(k-1,1);
theta = theta/norm(theta);
w = r*theta;
[U,E] = eig(S);
R = U*E.^(1/2)*U';
q = R*w;
S = [S q; q' 1];
end
end
দ্রাক্ষালতা পদ্ধতি
ভাইন পদ্ধতিটি প্রথমে জো দ্বারা প্রস্তাবিত (এলকেজে তে জে) এবং এলকেজে দ্বারা উন্নত। আমি এটি আরও পছন্দ করি, কারণ এটি ধারণাগতভাবে সহজ এবং সংশোধন করাও সহজ। ধারণাটি হ'ল আংশিক সম্পর্ক স্থাপন (সেগুলি স্বতন্ত্র এবং থেকে কোনও সীমাবদ্ধতা ছাড়াই কোনও মান থাকতে পারে ) এবং তারপরে পুনরাবৃত্ত সূত্রের মাধ্যমে কাঁচা পারস্পরিক সম্পর্কের মধ্যে রূপান্তর করতে হবে। একটি নির্দিষ্ট ক্রমে গণনাটি সংগঠিত করা সুবিধাজনক এবং এই গ্রাফটি "দ্রাক্ষালতা" হিসাবে পরিচিত। গুরুত্বপূর্ণভাবে, যদি নির্দিষ্ট বিটা বিতরণ (ম্যাট্রিক্সের বিভিন্ন কোষের জন্য পৃথক) থেকে আংশিক সম্পর্কের নমুনা দেওয়া হয়, তবে ফলস্বরূপ ম্যাট্রিক্স সমানভাবে বিতরণ করা হবে। এখানে আবার, এলকেজে আনুপাতিক থেকে নমুনা করার জন্য একটি অতিরিক্ত প্যারামিটার introduce প্রবর্তন করেd(d−1)/2[−1,1]η[detC]η−1 । ফলাফলটি বর্ধিত পেঁয়াজের সাথে অভিন্ন:
%// VINE METHOD to generate random correlation matrices
%// distributed ~ det(S)^eta [or maybe det(S)^(eta-1), not sure]
function S = vine(d, eta)
beta = eta + (d-1)/2;
P = zeros(d); %// storing partial correlations
S = eye(d);
for k = 1:d-1
beta = beta - 1/2;
for i = k+1:d
P(k,i) = betarnd(beta,beta); %// sampling from beta
P(k,i) = (P(k,i)-0.5)*2; %// linearly shifting to [-1, 1]
p = P(k,i);
for l = (k-1):-1:1 %// converting partial correlation to raw correlation
p = p * sqrt((1-P(l,i)^2)*(1-P(l,k)^2)) + P(l,i)*P(l,k);
end
S(k,i) = p;
S(i,k) = p;
end
end
end
আংশিক সম্পর্কের ম্যানুয়াল নমুনা সহ ভাইন পদ্ধতি
উপরের যে কোনওটি দেখতে পাচ্ছেন, অভিন্ন বিতরণের ফলাফল প্রায়-তির্যক পারস্পরিক সম্পর্কের ম্যাট্রিক্সে আসে। তবে শক্তিশালী পারস্পরিক সম্পর্কের জন্য দ্রাক্ষালতার পদ্ধতিটি সহজেই সংশোধন করা যায় (এটি এলকেজে পেপারে বর্ণিত নয়, তবে সোজাসাপ্টা): এটির জন্য ঘন ঘন বিতরণ থেকে আংশিক সম্পর্কের নমুনা করা উচিত । নীচে আমি তাদের বিটা বিতরণ থেকে নমুনা (থেকে rescaled থেকে ) সঙ্গে । বিটা বিতরণের প্যারামিটার যত ছোট হবে ততই এটি প্রান্তগুলির কাছাকাছি কেন্দ্রীভূত হয়।±1[0,1][−1,1]α=β=50,20,10,5,2,1
মনে রাখবেন যে এই ক্ষেত্রে বিতরণটি পারমিটেশন ইনগ্রেন্ট হিসাবে গ্যারান্টিযুক্ত নয়, সুতরাং আমি অতিরিক্তভাবে এলোমেলোভাবে প্রজন্মের পরে সারি এবং কলামগুলিকে অনুমতি দিই।
%// VINE METHOD to generate random correlation matrices
%// with all partial correlations distributed ~ beta(betaparam,betaparam)
%// rescaled to [-1, 1]
function S = vineBeta(d, betaparam)
P = zeros(d); %// storing partial correlations
S = eye(d);
for k = 1:d-1
for i = k+1:d
P(k,i) = betarnd(betaparam,betaparam); %// sampling from beta
P(k,i) = (P(k,i)-0.5)*2; %// linearly shifting to [-1, 1]
p = P(k,i);
for l = (k-1):-1:1 %// converting partial correlation to raw correlation
p = p * sqrt((1-P(l,i)^2)*(1-P(l,k)^2)) + P(l,i)*P(l,k);
end
S(k,i) = p;
S(i,k) = p;
end
end
%// permuting the variables to make the distribution permutation-invariant
permutation = randperm(d);
S = S(permutation, permutation);
end
অফ-ডায়াগোনাল উপাদানগুলির হিস্টোগ্রামগুলি কীভাবে উপরের ম্যাট্রিকগুলিতে সন্ধান করে (একচেটিয়াভাবে বিতরণের প্রকরণটি বাড়ায়):
আপডেট: র্যান্ডম ফ্যাক্টর ব্যবহার করে
কিছু শক্তিশালী পারস্পরিক সম্পর্কের সাথে র্যান্ডম পারস্পরিক সম্পর্কের ম্যাট্রিক্স উত্পন্ন করার একটি খুব সহজ পদ্ধতি উত্তরটি @ শ্যাববিচেফ দ্বারা ব্যবহৃত হয়েছিল, এবং আমি এটি এখানেও বর্ণনা করতে চাই। ধারণাটি এলোমেলোভাবে বেশ কয়েকটি ( ) ফ্যাক্টর লোডিং th ( আকারের এলোমেলো ম্যাট্রিক্স ) উত্পন্ন করে কোভরিয়েন্স ম্যাট্রিক্স (অবশ্যই এটি পুরো পদমর্যাদায় থাকবে না) ) এবং এতে positive পূর্ণ পদ তৈরি করতে ইতিবাচক উপাদানগুলির সাথে একটি এলোমেলো তির্যক ম্যাট্রিক্স । দিয়ে ফলস্বরূপ কোভরিয়েন্স ম্যাট্রিক্সকে একটি সম্পর্কযুক্ত ম্যাট্রিক্সে পরিণত করতে স্বাভাবিক করা যায়ডব্লিউ ট × ঘ ডব্লিউ ডব্লিউ ⊤ ডি বি = ওয়াট ডব্লিউ ⊤ + + ডি সি = ই - 1 / 2 বি ই - 1 / 2 ই বি ট = 100 , 50 , 20 , 10 , 5 , 1k<dWk×dWW⊤DB=WW⊤+DC=E−1/2BE−1/2যেখানে এর সমান তির্যক সহ একটি তির্যক ম্যাট্রিক্স । এটি খুব সহজ এবং কৌশলটি করে। এখানে for এর জন্য কিছু উদাহরণ সহকর্মী ম্যাট্রিক রয়েছে :EBk=100,50,20,10,5,1
এবং কোড:
%// FACTOR method
function S = factor(d,k)
W = randn(d,k);
S = W*W' + diag(rand(1,d));
S = diag(1./sqrt(diag(S))) * S * diag(1./sqrt(diag(S)));
end
চিত্রগুলি তৈরি করতে এখানে মোড়ানো কোডটি ব্যবহৃত হচ্ছে:
d = 100; %// size of the correlation matrix
figure('Position', [100 100 1100 600])
for repetition = 1:6
S = onion(d);
%// etas = [1 10 100 1000 1e+4 1e+5];
%// S = extendedOnion(d, etas(repetition));
%// S = vine(d, etas(repetition));
%// betaparams = [50 20 10 5 2 1];
%// S = vineBeta(d, betaparams(repetition));
subplot(2,3,repetition)
%// use this to plot colormaps of S
imagesc(S, [-1 1])
axis square
title(['Eigs: ' num2str(min(eig(S)),2) '...' num2str(max(eig(S)),2) ', det=' num2str(det(S),2)])
%// use this to plot histograms of the off-diagonal elements
%// offd = S(logical(ones(size(S))-eye(size(S))));
%// hist(offd)
%// xlim([-1 1])
end