পিসিএর উপাদানগুলি কি সত্যই বৈচিত্র্যের শতাংশের প্রতিনিধিত্ব করে? তারা 100% এরও বেশি যোগফল করতে পারে?


13

ও'রিলির "মেশিন লার্নিং ফর হ্যাকারস" বলেছে যে প্রতিটি মূল উপাদান বৈচিত্রের শতাংশকে উপস্থাপন করে। আমি নীচের পৃষ্ঠার প্রাসঙ্গিক অংশটি উদ্ধৃত করেছি (অধ্যায় 8, পি .207)। অন্য বিশেষজ্ঞের সাথে কথা বললে, তারা সম্মত হয় যে এটি শতাংশ।

তবে 24 টি উপাদান 133.2095% এর সমষ্টি। যথোপযুক্ত সৃষ্টিকর্তা?

নিজেদের পিসিএ ব্যবহার করতে পারি তা নিশ্চিত করে আমরা কীভাবে আর-তে এটি করব? আবার এটি এমন এক জায়গা যেখানে আর জ্বলজ্বল করে: সম্পূর্ণ পিসিএ কোডের একটি লাইনে করা যায়। আমরা পিসিএ চালাতে প্রিনম্পম্প ফাংশনটি ব্যবহার করি:

pca <- princomp(date.stock.matrix[,2:ncol(date.stock.matrix)])

আমরা যদি আর-তে কেবল পিসিএ টাইপ করি, আমরা মূল উপাদানগুলির একটি দ্রুত সংক্ষিপ্তসার দেখতে পাব:

Call:
princomp(x = date.stock.matrix[, 2:ncol(date.stock.matrix)])
Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
29.1001249 20.4403404 12.6726924 11.4636450 8.4963820 8.1969345 5.5438308
Comp.8 Comp.9 Comp.10 Comp.11 Comp.12 Comp.13 Comp.14
5.1300931 4.7786752 4.2575099 3.3050931 2.6197715 2.4986181 2.1746125
Comp.15 Comp.16 Comp.17 Comp.18 Comp.19 Comp.20 Comp.21
1.9469475 1.8706240 1.6984043 1.6344116 1.2327471 1.1280913 0.9877634
Comp.22 Comp.23 Comp.24
0.8583681 0.7390626 0.4347983
24 variables and 2366 observations.

এই সংক্ষিপ্তসারে, স্ট্যান্ডার্ড বিচ্যুতিগুলি আমাদের জানায় যে ডেটা সেটে বিভিন্ন বৈকল্পিকতার জন্য বিভিন্ন মূল উপাদানগুলির দ্বারা দায়বদ্ধ। প্রথম উপাদান, কমপ্লে 1 নামে পরিচিত, বৈকল্পিকতার 29% এর জন্য রয়েছে, যখন পরের উপাদানটি 20% হিসাবে থাকে। শেষ অবধি, শেষ উপাদানটি, কম্প .২৪, ভেরিয়েন্সের 1% এর চেয়ে কম পরিমাণে রয়েছে। এটি সুপারিশ করে যে আমরা প্রথম প্রধান উপাদানটি দেখে আমাদের ডেটা সম্পর্কে অনেক কিছু শিখতে পারি।

[কোড এবং ডেটা গিথুবে পাওয়া যাবে ]]


6
আমি মনে করি লেখকের ব্যাখ্যাটি Standard deviationsকিছুটা বন্ধ। যেহেতু স্ট্যান্ডার্ড বিচ্যুতি প্রকৃতপক্ষে স্ট্যান্ডার্ড বিচ্যুতি, তাই প্রতিটি উপাদানগুলি কতটা বৈকল্পিকতা উপস্থাপন করে তা দেখতে আমাদের অবশ্যই তাদের বর্গাকার করতে হবে। প্রথম উপাদানটি সম্পূর্ণ শতাংশ উপস্থাপন করবে। 100×29.1001249229.10012492++0.43479832
অনুমানযোগ্য

4
এই প্রশ্নটি দুটি মূল ভুল থেকে উদ্ভূত, আমি ভয় করি: (1) সংখ্যাটি "স্ট্যান্ডার্ড বিচ্যুতি" এবং ভেরিয়েন্সগুলির জন্য তাদের ভুল করে বলে শিরোনামটি মিস করে এবং (২) এটি অনুমান করে যে এই সংখ্যাগুলি পার্সেন্ট, তবে তারা তা নয়। (তাদের ইউনিটগুলি স্টকটি যা মাপা হয় তা হ'ল: ডলার বা বছরে শতাংশ পরিবর্তন বা যাই হোক না কেন)) এখানে কোনও বাগ নেই: @ ম্যাক্সের মন্তব্যটি কীভাবে সম্পূর্ণ বৈকল্পিকের শতাংশ খুঁজে বের করতে পারে তা ব্যাখ্যা করে।
whuber

1
@ হুবুহু সম্ভবত আমার "বাগ" এর পরিবর্তে "টাইপো" ব্যবহার করা উচিত ছিল? :-) " Comp.1, অনৈক্য 29% জন্য অ্যাকাউন্ট " ভুল নেই এবং পড়া উচিত " Comp.1, অনৈক্য 46% জন্য অ্যাকাউন্ট "
ড্যারেন কুক

1
আপনাকে ধন্যবাদ, ড্যারেন: আমি ভুল বুঝেছিলাম যে বইটিতে বিভ্রান্তি উপস্থিত ছিল এবং আমি Rনিজেই সফ্টওয়্যারটি উল্লেখ করার জন্য "বাগ" নিয়েছিলাম । সেই ত্রুটিটি খুঁজে পাওয়া একটি ভাল ক্যাচ ছিল (আমি আশা করি পিসিএ দিয়ে আসলে কী চলছে তা খুঁজে বের করার জন্য আপনি এটি লাভজনক পেয়েছেন)!
whuber

5
হ্যাঁ, এটি অবশ্যই বইয়ের একটি বাগ in কয়েকটি জায়গা রয়েছে যেখানে আমি পরিবর্তনের পরিবর্তে মানক বিচ্যুতিগুলির অপব্যবহার করেছি। (উদাহরণস্বরূপ, এখানে একটি বিন্দু রয়েছে যাতে আমরা আর-স্কোয়ার গণনা করার জন্য এমএমএসির পরিবর্তে আরএমএসই ব্যবহার করি।) আমি আশা করছি নিকট ভবিষ্যতে আমাদের কাছে বসে এই ধরণের বাগগুলি সংশোধন করার সময় হবে।
জন মাইলস হোয়াইট

উত্তর:


11

summary.princomp"অনুপাতের অনুপাত" এবং "সংখ্যার অনুপাত" দেখতে ব্যবহার করুন ।

pca <- princomp(date.stock.matrix[,2:ncol(date.stock.matrix)])
summary(pca)

1
ধন্যবাদ জোশুয়া সুতরাং প্রথম উপাদানটি আসলে 46% বৈকল্পিক। আমি বইটিতে একটি বাগ রিপোর্ট প্রেরণ করব।
ড্যারেন কুক

"বৈকল্পিকতার অনুপাত" কীভাবে গণনা করা হয়? প্রদর্শিত নম্বর 0.4600083। তবে sqrt(pca$sdev[1]/sum(pca$sdev))(মোটামুটি sqrt(29.1/133.2)) 0.4673904 দেয়।
ড্যারেন কুক

3
sdevλipca$sdev[1]^2/sum(pca$sdev^2)

2
@ ড্যারেনকুক: উত্সটি ব্যবহার করুন ... stats:::print.summary.princompআপনাকে দেখায় যে এটি sdevউপাদানটিকে স্কোয়ার করে , যা stats:::princomp.defaultদেখায় sqrtযে ইগেন মানগুলি।
জোশুয়া উলরিচ

11

100 %.

pXΣ

tr(Σ)=σ11+σ22++σpp.

λ1λ2λp.

tr(Σ)=λ1++λp
λiΣλp0

eiXeii1λi

Var(eiX)=eiΣei=λieiei=λi
k
(λ1++λkλ1++λp100) %
100 %k=p

1
প্রশ্নটিতে আপনি @ ম্যাক্সের (আরও সাম্প্রতিক) মন্তব্যটি দেখেছেন? তিনি উত্তরটি পেরেক দিয়েছিলেন।
whuber

@ শুভঃ আমি তা দেখিনি, তাই ধন্যবাদ। আমি জোশুয়ার উত্তরের মন্তব্যে অনুরূপ মন্তব্য করেছি।
MånsT

4

পূর্ববর্তী উত্তরগুলির পরিপূরক করতে এখানে কিছু আর কোড রয়েছে ( pca[["sdev"]]সাধারণত এটি লেখা হয় pca$sdevতবে এটি নীচে স্নিপেটে ভুল ফর্ম্টিংয়ের কারণ হয়)।

# Generate a dummy dataset.
set.seed(123)
x <- matrix(rnorm(400, sd=3), ncol=4)
# Note that princomp performs an unscaled PCA.
pca1 <- princomp(x)
# Show the fraction variance of each PC.
pca1[["sdev"]]^2
cumsum(pca1[["sdev"]]^2)/sum(pca1[["sdev"]]^2)
# Perform a scaled PCA.
pca2 <- princomp(x, cor=TRUE)
pca2[["sdev"]]^2
cumsum(pca2[["sdev"]]^2)/sum(pca2[["sdev"]]^2)

সুতরাং, @ ম্যাক্স হিসাবে উল্লেখ করা হয়েছে, স্ট্যান্ডার্ড বিচ্যুতির পরিবর্তে ভিন্নতার সাথে কাজ করা এবং মোট বৈকল্পিক দ্বারা বিভাজন ভুলে যাওয়া সমস্যা সমাধান করে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.