এলোমেলো ম্যাট্রিক্সের জন্য, কোনও এসভিডি কি মোটেই কিছুই ব্যাখ্যা করে না? আমি কি ভুল করছি?


13

যদি আমি সম্পূর্ণরূপে এলোমেলো ডেটা সমন্বিত একটি 2-ডি ম্যাট্রিক্স নির্মাণ করি তবে আমি আশা করব যে পিসিএ এবং এসভিডি উপাদানগুলি প্রয়োজনীয়ভাবে কিছুই ব্যাখ্যা করবে না।

পরিবর্তে, মনে হচ্ছে এটি প্রথম এসভিডি কলামে 75% ডেটা ব্যাখ্যা করে। এটি কীভাবে সম্ভব? আমি কি ভুল করছি?

প্লটটি এখানে:

এখানে চিত্র বর্ণনা লিখুন

এখানে আর কোড রয়েছে:

set.seed(1)
rm(list=ls())
m <- matrix(runif(10000,min=0,max=25), nrow=100,ncol=100)
svd1 <- svd(m, LINPACK=T)
par(mfrow=c(1,4))
image(t(m)[,nrow(m):1])
plot(svd1$d,cex.lab=2, xlab="SVD Column",ylab="Singluar Value",pch=19)

percentVarianceExplained = svd1$d^2/sum(svd1$d^2) * 100
plot(percentVarianceExplained,ylim=c(0,100),cex.lab=2, xlab="SVD Column",ylab="Percent of variance explained",pch=19)

cumulativeVarianceExplained = cumsum(svd1$d^2/sum(svd1$d^2)) * 100
plot(cumulativeVarianceExplained,ylim=c(0,100),cex.lab=2, xlab="SVD column",ylab="Cumulative percent of variance explained",pch=19)

হালনাগাদ

থানকিউ @ অ্যারন ফিক্স, যেমন আপনি লক্ষ্য করেছেন, ম্যাট্রিক্সে স্কেলিং যুক্ত করা ছিল যাতে সংখ্যাগুলি 0 (যেমন গড় 0 হয়) কেন্দ্রিক হয়।

m <- scale(m, scale=FALSE)

এখানে সংশোধিত চিত্রটি দেওয়া হয়েছে, এলোমেলো ডেটা সহ ম্যাট্রিক্সের জন্য দেখানো হচ্ছে, প্রথম এসভিডি কলামটি প্রত্যাশা অনুযায়ী 0-এর কাছাকাছি।

সংশোধিত চিত্র


4
[0,1]100R100Rnn1/3n/3(n1)/121/12(n/3(n1)/12)/(n/3)=3/4+1/(4n)n=10075.25

উত্তর:


11

প্রথম পিসি ব্যাখ্যা করছে যে ভেরিয়েবলগুলি শূন্যের চারপাশে কেন্দ্রিক নয়। প্রথমে স্কেলিং বা আপনার এলোমেলো ভেরিয়েবলগুলি শূন্যের কাছাকাছি কেন্দ্রীকরণের ফলে আপনি প্রত্যাশিত ফলাফল পাবেন। উদাহরণস্বরূপ, এর মধ্যে একটি:

m <- matrix(runif(10000,min=0,max=25), nrow=100,ncol=100)
m <- scale(m, scale=FALSE)

m <- matrix(runif(10000,min=-25,max=25), nrow=100,ncol=100)

3
আপনি একটি ভাল বিষয় উত্থাপন, কিন্তু আমার মনে হয় এটি কেবল গল্পের একটি অংশ বলে। প্রকৃতপক্ষে, আমি অনুমান করব যে ওপি এইগুলির প্রত্যেকটি চেষ্টা করবে এবং ফলাফল দ্বারা এখনও অবাক হবে। বিষয়টির সত্যতা হ'ল যেহেতু একক মানগুলি আউটপুটে অর্ডার করা হয়েছে, তাই তারা এলোমেলোভাবে বিতরণ করা হবে না (এবং প্রকৃতপক্ষে তা নয়) সম্ভবত "এলোমেলো" ডেটা থেকে নির্বিঘ্নে প্রত্যাশিত হতে পারে। Marchenko-Pastur বন্টন এই ক্ষেত্রে তাদের আচরণ নিয়ন্ত্রণ করে।
কার্ডিনাল

অ্যারন আপনাকে ধন্যবাদ, আপনি একেবারে ঠিক বলেছেন। ফলাফলটি কী সুন্দর তা দেখানোর জন্য আমি উপরের সংশোধিত আউটপুটটির একটি গ্রাফ যুক্ত করেছি।
কনটাঙ্গো

1
@ কার্ডিনাল আপনার মন্তব্যের জন্য ধন্যবাদ, আপনি একদম ঠিক আছেন (উপরে সংশোধন কোড দ্বারা উত্পাদিত গ্রাফ দেখুন) আমি বিশ্বাস করি যে ম্যাট্রিক্স আরও ছোট হওয়ার সাথে সাথে এসভিডি মানগুলি কম অভিন্নভাবে বিতরণযোগ্য হবে, কারণ একটি ছোট ম্যাট্রিক্সের এমন প্যাটার্ন হওয়ার বেশি সম্ভাবনা থাকবে যা বড় সংখ্যার আইন দ্বারা বিভাজিত হবে না।
কনটাঙ্গো

3

নাল মডেল তুলনা ব্যবহারের মাধ্যমে আমি আপনার প্রশ্নের আরও ভিজ্যুয়াল উত্তর যুক্ত করব। প্রক্রিয়াটি এলোমেলোভাবে প্রতিটি কলামে ডেটা পরিবর্তন করে সামগ্রিক বৈকল্পিকতা সংরক্ষণের জন্য যখন ভেরিয়েবলের (কলাম) মধ্যে স্বীয়তা হারিয়ে যায়। এটি বেশ কয়েকবার সম্পাদিত হয় এবং এলোমেলোভাবে ম্যাট্রিক্সের একক মানগুলির ফলাফল বিতরণকে মূল মানগুলির সাথে তুলনা করা হয়।

আমি ম্যাট্রিক্স পচানোর prcompপরিবর্তে ব্যবহার করি svd, তবে ফলাফলগুলি একই রকম:

set.seed(1)
m <- matrix(runif(10000,min=0,max=25), nrow=100,ncol=100)

S <- svd(scale(m, center = TRUE, scale=FALSE))
P <- prcomp(m, center = TRUE, scale=FALSE)
plot(S$d, P$sdev) # linearly related

নাল মডেল তুলনা নীচে কেন্দ্রিক ম্যাট্রিক্সে সঞ্চালিত হয়:

library(sinkr) # https://github.com/marchtaylor/sinkr

# centred data
Pnull <- prcompNull(m, center = TRUE, scale=FALSE, nperm = 100)
Pnull$n.sig
boxplot(Pnull$Lambda[,1:20], ylim=range(Pnull$Lambda[,1:20], Pnull$Lambda.orig[1:20]), outline=FALSE, col=8, border="grey50", log="y", main=paste("m (center=FALSE); n sig. =", Pnull$n.sig))
lines(apply(Pnull$Lambda, 2, FUN=quantile, probs=0.95))
points(Pnull$Lambda.orig[1:20], pch=16)

নীচে স্থির রেখাযুক্ত ম্যাট্রিক্সের একটি বক্সপ্লট রয়েছে যেখানে প্রতিটি রেখাযুক্ত মানের 95% কোয়ান্টাইলকে শক্ত রেখা হিসাবে দেখানো হয়। এর পিসিএর মূল মানগুলি mবিন্দু। এর সবগুলি 95% লাইনের নীচে রয়েছে - সুতরাং তাদের প্রশস্ততা এলোমেলো গোলমাল থেকে আলাদা নয়।

এখানে চিত্র বর্ণনা লিখুন

mএকই ফলাফলের কেন্দ্র-কেন্দ্রিক সংস্করণে একই পদ্ধতিটি করা যেতে পারে - কোনও উল্লেখযোগ্য একক মান নেই:

# centred data
Pnull <- prcompNull(m, center = FALSE, scale=FALSE, nperm = 100)
Pnull$n.sig
boxplot(Pnull$Lambda[,1:20], ylim=range(Pnull$Lambda[,1:20], Pnull$Lambda.orig[1:20]), outline=FALSE, col=8, border="grey50", log="y", main=paste("m (center=TRUE); n sig. =", Pnull$n.sig))
lines(apply(Pnull$Lambda, 2, FUN=quantile, probs=0.95))
points(Pnull$Lambda.orig[1:20], pch=16)

এখানে চিত্র বর্ণনা লিখুন

তুলনা করার জন্য, আসুন একটি এলোমেলো ডেটাসেট সহ একটি ডেটাसेट দেখুন: iris

# iris dataset example
m <- iris[,1:4]
Pnull <- prcompNull(m, center = TRUE, scale=FALSE, nperm = 100)
Pnull$n.sig
boxplot(Pnull$Lambda, ylim=range(Pnull$Lambda, Pnull$Lambda.orig), outline=FALSE, col=8, border="grey50", log="y", main=paste("m (center=FALSE); n sig. =", Pnull$n.sig))
lines(apply(Pnull$Lambda, 2, FUN=quantile, probs=0.95))
points(Pnull$Lambda.orig[1:20], pch=16)

এখানে চিত্র বর্ণনা লিখুন

এখানে, প্রথম একক মানটি উল্লেখযোগ্য এবং মোট ভেরিয়েন্সের 92% এর বেশি ব্যাখ্যা করেছে:

P <- prcomp(m, center = TRUE)
P$sdev^2 / sum(P$sdev^2)
# [1] 0.924618723 0.053066483 0.017102610 0.005212184

+1 টি। আইরিস ডেটাসেটের উদাহরণ আকর্ষণীয়, কারণ প্রথম দুটি পিসির দিকে তাকানো (যেমন আপনার নিজের পোস্টে এখানে stats.stackexchange.com/a/88092 ) এটি বেশ স্পষ্ট যে দ্বিতীয়টি কিছু সংকেত বহন করে। ক্রমবিন্যাস (ওরফে শিফলিং) পরীক্ষাটি সূচিত করে যে কেবল ১ ম প্রথমটি "উল্লেখযোগ্য" তবে। এটা পরিষ্কার যে বদলানো পিসিগুলির সংখ্যাকে অবমূল্যায়ন করে: প্রথম আসল পিসির বৃহত প্রকরণটি বদলানো পিসিগুলিতে "স্প্রেড আউট" হয়ে যায় এবং দ্বিতীয়টি থেকে শুরু করে সমস্তটি উন্নত করে। যে কেউ এর জন্য অ্যাকাউন্ট হিসাবে আরও সংবেদনশীল পরীক্ষা করতে পারে তবে এটি খুব কমই করা হয়।
অ্যামিবা বলছেন মনিকা

@ আমেবা - দুর্দান্ত মন্তব্য আমি কিছুদিন ধরে "স্প্রেড আউট" এফেক্ট সম্পর্কে ভাবছিলাম। আমি মনে করি যে ক্রস-বৈধতা পরীক্ষা আপনি যে সংবেদনশীল হিসাবে উল্লেখ করেছেন তার মধ্যে একটি হতে পারে (যেমন আপনার উত্তর এখানে )? আপনি উদাহরণ / রেফারেন্স সরবরাহ করতে পারলে দুর্দান্ত হবে।
বক্সে মার্ক করুন

আমি সাধারণত ক্রস-বৈধতা ( আমার উত্তর অনুসারে পুনর্গঠনের ত্রুটির ভিত্তিতে) ব্যবহার করতে পছন্দ করি তবে আমি নিশ্চিত নই যে এটি কোনওরকম একই সংবেদনশীলতায় ভুগছে কিনা বা না। আইরিস ডেটাसेटে এটি ব্যবহার করে বোঝা যায়। এলোমেলো-ভিত্তিক পদ্ধতির বিষয়ে, আমি এই "ছড়িয়ে পড়া" এর জন্য অ্যাকাউন্টিংয়ের কোনও রেফারেন্স জানি না, আমি সম্প্রতি এমন কিছু লোককে জানি যারা সম্প্রতি এটিতে কাজ করেছিল। আমি মনে করি তারা শীঘ্রই এটি লিখতে চেয়েছিলেন। ধারণাটি হ'ল উচ্চতর স্থানান্তরিত পিসিগুলির বৈকল্পিকতার জন্য কিছু ডাউনস্ক্লিং উপাদানগুলি প্রবর্তন করা।
অ্যামিবা বলেছেন মনিকাকে

@ আমেবা - এই লিঙ্কটির জন্য ধন্যবাদ এটি আমার জন্য অনেক ব্যাখ্যা করে। আমি এটি দেখতে বিশেষভাবে আকর্ষণীয় দেখতে পেলাম যে পিসিএতে ক্রস বৈধকরণটি এমন পদ্ধতিগুলির ব্যবহার করে যা অনুপস্থিত মান সহ ডেটাসেটগুলিতে পরিচালনা করতে পারে। আমি এই পদ্ধতির জন্য কয়েকটি প্রচেষ্টা করেছি এবং (যেমন আপনি বর্ণনা করেছেন) নাল মডেল বদলানো পদ্ধতির সত্যই তাৎপর্যপূর্ণ পিসিগুলির সংখ্যাকে হ্রাস করার প্রবণতা নেই। যাইহোক, আইরিস ডেটাসেটের জন্য, পুনরুদ্ধারের ত্রুটির জন্য আমি ধারাবাহিকভাবে একটি পিসি ফিরিয়ে দিই। চক্রান্ত সম্পর্কে আপনি যা উল্লেখ করেছেন তা আকর্ষণীয়। এমনটি হতে পারে যে আমরা যদি প্রজাতির পূর্বাভাসের ভিত্তিতে ত্রুটি অনুমান করছিলাম তবে ফলাফলগুলি ভিন্ন হতে পারে।
এ বক্সে মার্ক করুন

কৌতূহলের বাইরে, আমি এটি আইরিস ডেটা দিয়ে চেষ্টা করেছিলাম। আসলে, আমি ক্রস-বৈধকরণ পদ্ধতি সহ দুটি গুরুত্বপূর্ণ পিসি পাই। আমি আমার লিঙ্কযুক্ত পোস্টটি আপডেট করেছি, দয়া করে সেখানে দেখুন।
অ্যামিবা বলেছেন পুনর্নির্মাণ মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.