প্রশ্নটি ভেরিয়েবলগুলির মধ্যে "অন্তর্নিহিত [লিনিয়ার] সম্পর্কগুলি চিহ্নিতকরণ" সম্পর্কে জিজ্ঞাসা করে।
সম্পর্কগুলি সনাক্ত করার দ্রুত এবং সহজ উপায় হ'ল আপনার পছন্দের সফ্টওয়্যার ব্যবহার করে vari ভেরিয়েবলগুলির বিরুদ্ধে অন্য কোনও পরিবর্তনশীল (ধ্রুবক এমনকি এমনকি ব্যবহার করুন) পুনরায় চাপিয়ে ফেলা: যে কোনও ভাল রিগ্রেশন প্রক্রিয়া কলিনারিটি সনাক্ত এবং সনাক্ত করবে। (আপনি এমনকি রিগ্রেশন ফলাফলগুলি দেখার জন্যও বিরক্ত করবেন না: আমরা কেবলমাত্র রিগ্রেশন ম্যাট্রিক্স স্থাপন এবং বিশ্লেষণের একটি দরকারী পার্শ্ব-প্রতিক্রিয়াটির উপর নির্ভর করছি))
অনুমান করি যে প্রান্তিকতা ধরা পড়েছে, তবে কী হবে? অধ্যক্ষ উপাদান বিশ্লেষণ (পিসিএ) ঠিক যা প্রয়োজন তা হল: এর ক্ষুদ্রতম উপাদানগুলি নিকটবর্তী-লিনিয়ার সম্পর্কের সাথে মিলে যায়। এই সম্পর্কগুলি সরাসরি "লোডিংগুলি" থেকে পড়া যায় যা মূল ভেরিয়েবলের লিনিয়ার সংমিশ্রণ। ছোট লোডিংগুলি (এটি হ'ল ছোট ইগেনভ্যালুগুলির সাথে জড়িত) নিকটবর্তী-প্রান্তিকের সাথে মিল রয়েছে। ইগেনুয়ালু একটি নিখুঁত রৈখিক সম্পর্কের সাথে মিল রাখে। সামান্য বৃহত্তর ইগেনভ্যালুগুলি যা এখনও বৃহত্তম থেকে অনেক ছোট, আনুমানিক লিনিয়ার সম্পর্কের সাথে মিল রাখে।0
(একটি "ছোট" লোডিং কী তা চিহ্নিত করার সাথে একটি শিল্প রয়েছে এবং প্রচুর সাহিত্য রয়েছে a নির্ভরশীল ভেরিয়েবলের মডেলিংয়ের জন্য, আমি উপাদানগুলি সনাক্ত করতে পিসিএ-তে স্বতন্ত্র ভেরিয়েবলের মধ্যে এটি অন্তর্ভুক্ত করার পরামর্শ দেব - নির্বিশেষে তাদের আকার - যার মধ্যে নির্ভরশীল পরিবর্তনশীল একটি গুরুত্বপূর্ণ ভূমিকা পালন করে this এই দৃষ্টিকোণ থেকে "ছোট" অর্থ এই জাতীয় কোনও উপাদান থেকে অনেক ছোট))
আসুন কিছু উদাহরণ তাকান। ( R
এটি গণনা এবং ষড়যন্ত্রের জন্য ব্যবহার )) পিসিএ সঞ্চালনের জন্য একটি ফাংশন দিয়ে শুরু করুন, ছোট উপাদানগুলি সন্ধান করুন, সেগুলি প্লট করুন এবং তাদের মধ্যে লিনিয়ার সম্পর্ক ফিরিয়ে আনুন।
pca <- function(x, threshold, ...) {
fit <- princomp(x)
#
# Compute the relations among "small" components.
#
if(missing(threshold)) threshold <- max(fit$sdev) / ncol(x)
i <- which(fit$sdev < threshold)
relations <- fit$loadings[, i, drop=FALSE]
relations <- round(t(t(relations) / apply(relations, 2, max)), digits=2)
#
# Plot the loadings, highlighting those for the small components.
#
matplot(x, pch=1, cex=.8, col="Gray", xlab="Observation", ylab="Value", ...)
suppressWarnings(matplot(x %*% relations, pch=19, col="#e0404080", add=TRUE))
return(t(relations))
}
আসুন এটি এলোমেলো কিছু ডেটাতে প্রয়োগ করুন। এই চারটি ভেরিয়েবল (চালু আগে থেকেই রয়েছে ও ই প্রশ্নই)। অন্যদের প্রদত্ত রৈখিক সংমিশ্রণ হিসাবে A কে গুণতে এখানে একটি ছোট ফাংশন । এরপরে এটি পাঁচটি ভেরিয়েবলগুলিতে আইডিকে সাধারণভাবে-বিতরণকৃত মানগুলি যুক্ত করে (মাল্টিকোলাইনারিটি কেবল আনুমানিক এবং সঠিক না হলে প্রক্রিয়াটি কতটা ভাল সম্পাদন করে তা দেখুন)।B,C,D,EA
process <- function(z, beta, sd, ...) {
x <- z %*% beta; colnames(x) <- "A"
pca(cbind(x, z + rnorm(length(x), sd=sd)), ...)
}
আমরা যেতে প্রস্তুত: এটি কেবল এবং এই পদ্ধতিগুলি প্রয়োগ করার জন্য রয়ে গেছে । আমি প্রশ্নের বর্ণিত দুটি পরিস্থিতি ব্যবহার করি: এ = বি + সি + ডি + ই (প্লাস প্রতিটি ক্ষেত্রে কিছু ত্রুটি) এবং এ = বি + ( সি + ডি ) / ২ + ই (আরও কিছুতে ত্রুটি)। প্রথমে, তবে লক্ষ করুন যে পিসিএ প্রায়শই কেন্দ্রেযুক্ত ডেটাতে প্রয়োগ করা হয় , সুতরাং এই সিমুলেটেড ডেটা ব্যবহার করে কেন্দ্রিক (তবে অন্যথায় উদ্ধারযোগ্য নয়) ।B,…,EA=B+C+D+EA=B+(C+D)/2+Esweep
n.obs <- 80 # Number of cases
n.vars <- 4 # Number of independent variables
set.seed(17)
z <- matrix(rnorm(n.obs*(n.vars)), ncol=n.vars)
z.mean <- apply(z, 2, mean)
z <- sweep(z, 2, z.mean)
colnames(z) <- c("B","C","D","E") # Optional; modify to match `n.vars` in length
এখানে আমরা দুটি দৃশ্যাবলী এবং প্রতিটিটিতে তিনটি স্তরের ত্রুটি প্রয়োগ করেছি। আসল ভেরিয়েবলগুলি পরিবর্তন না করেই ধরে রাখা যায়: কেবল এ এবং ত্রুটির শর্তগুলি পৃথক হয়।B,…,EA
উপরের বাম প্যানেলের সাথে যুক্ত আউটপুটটি ছিল
A B C D E
Comp.5 1 -1 -1 -1 -1
এটি বলে যে লাল বিন্দুগুলির সারি - যা নিখরচায় , নিখুঁত বহুবিধ লাইন প্রদর্শন করে - 0 ≈ এ - বি - সি - ডি - ই মিশ্রণটি নিয়ে গঠিত : ঠিক কী নির্দিষ্ট করা হয়েছিল।00≈A−B−C−D−E
উপরের মাঝের প্যানেলের আউটপুট ছিল
A B C D E
Comp.5 1 -0.95 -1.03 -0.98 -1.02
(A,B,C,D,E)
A B C D E
Comp.5 1 -1.33 -0.77 -0.74 -1.07
A′=B′+C′+D′+E′
1,1/2,1/2,1
বাস্তবে, এটি প্রায়শই এমন হয় না যে একটি পরিবর্তনশীল অন্যের সুস্পষ্ট সংমিশ্রণ হিসাবে একত্রিত হয়: সমস্ত সহগগুলি তুলনামূলক আকার এবং বিবিধ লক্ষণগুলির হতে পারে। তদুপরি, যখন সম্পর্কের একাধিক মাত্রা থাকে, তখন তাদের নির্দিষ্ট করার কোনও অনন্য উপায় নেই: এই সম্পর্কের জন্য একটি দরকারী ভিত্তি সনাক্ত করার জন্য আরও বিশ্লেষণ (যেমন সারি হ্রাস) প্রয়োজন। এটিই পৃথিবীটি কীভাবে কাজ করে: আপনি কেবলমাত্র এটিই বলতে পারেন যে পিসিএর আউটপুটযুক্ত এই বিশেষ সংমিশ্রণগুলি ডেটাতে প্রায় কোনও প্রকারের পরিবর্তনের সাথে মিলে না। এটিকে মোকাবেলা করার জন্য কিছু লোক রিগ্রেশন বা পরবর্তী বিশ্লেষণে স্বতন্ত্র ভেরিয়েবল হিসাবে সরাসরি বৃহত্তম ("প্রধান") উপাদানগুলি ব্যবহার করে, যাই হোক না কেন এটি রূপ নেয়। আপনি যদি এটি করেন তবে ভেরিয়েবলের সেট থেকে নির্ভরশীল ভেরিয়েবলটি সরিয়ে প্রথমে পিসিএটি পুনরায় করতে ভুলবেন না!
এই চিত্রটি পুনরুত্পাদন করার কোড এখানে:
par(mfrow=c(2,3))
beta <- c(1,1,1,1) # Also can be a matrix with `n.obs` rows: try it!
process(z, beta, sd=0, main="A=B+C+D+E; No error")
process(z, beta, sd=1/10, main="A=B+C+D+E; Small error")
process(z, beta, sd=1/3, threshold=2/3, main="A=B+C+D+E; Large error")
beta <- c(1,1/2,1/2,1)
process(z, beta, sd=0, main="A=B+(C+D)/2+E; No error")
process(z, beta, sd=1/10, main="A=B+(C+D)/2+E; Small error")
process(z, beta, sd=1/3, threshold=2/3, main="A=B+(C+D)/2+E; Large error")
(কেবলমাত্র একটি একক উপাদান প্রদর্শন করতে আমাকে বৃহত্তর-ত্রুটির ক্ষেত্রে প্রান্তিকের সাথে ঝাঁকুনি দিতে হয়েছিল: এটি প্যারামিটার হিসাবে এই মান সরবরাহ করার কারণ process
))
ব্যবহারকারী টিটিএনফএনস দয়া করে আমাদের মনোযোগ একটি নিবিড়ভাবে সম্পর্কিত থ্রেডের দিকে পরিচালিত করেছেন। এর একটি উত্তর (জেএম দ্বারা) এখানে বর্ণিত পদ্ধতির পরামর্শ দেয়।