আমি এটিকে প্রশ্নটির কেন্দ্রবিন্দু তাত্ত্বিক দিকের দিকে কম, এবং ব্যবহারিক দিকের দিকে বেশি, অর্থাত্ কীভাবে আর এর মধ্যে দ্বি-দ্বৈত ডেটার একটি ফ্যাক্টর বিশ্লেষণ বাস্তবায়ন করতে পারি take
প্রথমে 2 অরথোগোনাল ফ্যাক্টর থেকে 6 ভেরিয়েবল থেকে 200 টি পর্যবেক্ষণ অনুকরণ করি। আমি বেশ কয়েকটি মধ্যবর্তী পদক্ষেপ নেব এবং বহুবিচ্ছিন্ন স্বাভাবিক ক্রমাগত ডেটা দিয়ে শুরু করব যা আমি পরে দ্বৈতকরণ করি। এইভাবে, আমরা পিয়েরসন পারস্পরিক সম্পর্কের তুলনা করতে পারি বহুগঠিত সম্পর্কের সাথে, এবং ক্রমাগত ডেটা থেকে ফিক্টর লোডিংগুলির সাথে দ্বিখণ্ডিত তথ্য এবং সত্য লোডিংয়ের সাথে তুলনা করতে পারি।
set.seed(1.234)
N <- 200 # number of observations
P <- 6 # number of variables
Q <- 2 # number of factors
# true P x Q loading matrix -> variable-factor correlations
Lambda <- matrix(c(0.7,-0.4, 0.8,0, -0.2,0.9, -0.3,0.4, 0.3,0.7, -0.8,0.1),
nrow=P, ncol=Q, byrow=TRUE)
x = Λ f+ ইএক্সΛচই
library(mvtnorm) # for rmvnorm()
FF <- rmvnorm(N, mean=c(5, 15), sigma=diag(Q)) # factor scores (uncorrelated factors)
E <- rmvnorm(N, rep(0, P), diag(P)) # matrix with iid, mean 0, normal errors
X <- FF %*% t(Lambda) + E # matrix with variable values
Xdf <- data.frame(X) # data also as a data frame
অবিচ্ছিন্ন তথ্যের জন্য ফ্যাক্টর বিশ্লেষণ করুন। অপ্রাসঙ্গিক চিহ্নটিকে উপেক্ষা করার সময় আনুমানিক লোডিংগুলি সত্যগুলির সাথে সমান।
> library(psych) # for fa(), fa.poly(), factor.plot(), fa.diagram(), fa.parallel.poly, vss()
> fa(X, nfactors=2, rotate="varimax")$loadings # factor analysis continuous data
Loadings:
MR2 MR1
[1,] -0.602 -0.125
[2,] -0.450 0.102
[3,] 0.341 0.386
[4,] 0.443 0.251
[5,] -0.156 0.985
[6,] 0.590
এখন ডেটা দ্বিগুণকরণ করা যাক। আমরা ডেটা দুটি ফর্ম্যাটে রাখব: অর্ডারযুক্ত ফ্যাক্টর সহ একটি ডেটা ফ্রেম এবং একটি সংখ্যাসূচক ম্যাট্রিক্স হিসাবে। hetcor()
প্যাকেজ থেকে polycor
আমাদের বহুবিধ পারস্পরিক সম্পর্ক ম্যাট্রিক্স দেয় যা আমরা পরে এফএর জন্য ব্যবহার করব।
# dichotomize variables into a list of ordered factors
Xdi <- lapply(Xdf, function(x) cut(x, breaks=c(-Inf, median(x), Inf), ordered=TRUE))
Xdidf <- do.call("data.frame", Xdi) # combine list into a data frame
XdiNum <- data.matrix(Xdidf) # dichotomized data as a numeric matrix
library(polycor) # for hetcor()
pc <- hetcor(Xdidf, ML=TRUE) # polychoric corr matrix -> component correlations
এখন নিয়মিত এফএ করতে পলিকরিক পারস্পরিক সম্পর্ক ম্যাট্রিক্স ব্যবহার করুন। নোট করুন যে অনুমান করা লোডিংগুলি অবিচ্ছিন্ন ডেটা থেকে মোটামুটি একই রকম।
> faPC <- fa(r=pc$correlations, nfactors=2, n.obs=N, rotate="varimax")
> faPC$loadings
Loadings:
MR2 MR1
X1 -0.706 -0.150
X2 -0.278 0.167
X3 0.482 0.182
X4 0.598 0.226
X5 0.143 0.987
X6 0.571
আপনি নিজেই পলিচোরিক সম্পর্ক সম্পর্কিত ম্যাট্রিক্স গণনা করার পদক্ষেপটি এড়িয়ে যেতে পারেন এবং সরাসরি fa.poly()
প্যাকেজ থেকে ব্যবহার করতে পারেন psych
, যা শেষ পর্যন্ত একই কাজ করে। এই ফাংশনটি অংকিত ম্যাট্রিক্স হিসাবে কাঁচা দ্বিখণ্ডিত ডেটা গ্রহণ করে।
faPCdirect <- fa.poly(XdiNum, nfactors=2, rotate="varimax") # polychoric FA
faPCdirect$fa$loadings # loadings are the same as above ...
সম্পাদনা: ফ্যাক্টর স্কোরগুলির জন্য, প্যাকেজটির দিকে তাকান ltm
যা factor.scores()
বিশেষত বহুপ্রকৃত ফলাফলের ডেটার জন্য একটি ফাংশন রয়েছে । এই পৃষ্ঠায় একটি উদাহরণ সরবরাহ করা হয়েছে -> "ফ্যাক্টর স্কোর - সক্ষমতার অনুমান"।
আপনি ফ্যাক্টর বিশ্লেষণ থেকে লোডিংগুলি factor.plot()
এবং fa.diagram()
উভয়ই প্যাকেজ থেকে কল্পনা করতে পারেন psych
। কোনও কারণে, সম্পূর্ণ অবজেক্ট নয়, কেবলমাত্র ফলাফলের উপাদানটি factor.plot()
গ্রহণ করে ।$fa
fa.poly()
factor.plot(faPCdirect$fa, cut=0.5)
fa.diagram(faPCdirect)
সমান্তরাল বিশ্লেষণ এবং একটি "খুব সাধারণ কাঠামো" বিশ্লেষণ কারণগুলির সংখ্যা নির্বাচন করতে সহায়তা করে provide আবার, প্যাকেজের psych
প্রয়োজনীয় ফাংশন রয়েছে। vss()
পলিচোরিক পারস্পরিক সম্পর্ক ম্যাট্রিক্সকে আর্গুমেন্ট হিসাবে গ্রহণ করে।
fa.parallel.poly(XdiNum) # parallel analysis for dichotomous data
vss(pc$correlations, n.obs=N, rotate="varimax") # very simple structure
পলিজিক এফএ জন্য সমান্তরাল বিশ্লেষণ প্যাকেজ দ্বারা সরবরাহ করা হয় random.polychor.pa
।
library(random.polychor.pa) # for random.polychor.pa()
random.polychor.pa(data.matrix=XdiNum, nrep=5, q.eigen=0.99)
মনে রাখবেন যে ফাংশনগুলি fa()
এবং fa.poly()
এফএ সেট আপ করার জন্য আরও অনেকগুলি বিকল্প সরবরাহ করে। এছাড়াও, আমি আউটপুটটির কিছু সম্পাদনা করেছি যা ফিট টেস্টগুলির সদ্ব্যবহার দেয় these এই ফাংশনগুলির জন্য ডকুমেন্টেশন (এবং psych
সাধারণভাবে প্যাকেজ ) দুর্দান্ত। এই উদাহরণটি এখানে আপনাকে শুরু করার উদ্দেশ্যেই করা হয়েছে।