ম্যাট্রিক্সের কলামগুলির মধ্যে রৈখিক নির্ভরতার জন্য পরীক্ষা করা


26

আমার সুরক্ষা ফেরতের একটি পারস্পরিক সম্পর্ক ম্যাট্রিক্স রয়েছে যার নির্ধারকটি শূন্য। (এটি নমুনা পারস্পরিক সম্পর্ক ম্যাট্রিক্স এবং সম্পর্কিত কোভেরিয়েন্স ম্যাট্রিক্সের তাত্ত্বিকভাবে ইতিবাচক সুনির্দিষ্ট হওয়া উচিত বলে কিছুটা অবাক করার মতো বিষয় রয়েছে))

আমার হাইপোথিসিসটি হ'ল কমপক্ষে একটি সুরক্ষা অন্যান্য সিকিওরিটির উপর নির্ভর করে dependent আর-তে এমন কোনও ফাংশন রয়েছে যা প্রতিটি কলামকে ধারাবাহিকভাবে রৈখিক নির্ভরতার জন্য ম্যাট্রিক্স পরীক্ষা করে?

উদাহরণস্বরূপ, একটি পদ্ধতি হ'ল একযোগে মেট্রিক্সের একটি সুরক্ষা তৈরি করা এবং প্রতিটি পদক্ষেপে নির্ধারক গণনা করা। যখন নির্ধারক = 0 তখন আপনি যে সুরক্ষাটি সনাক্ত করেছেন তা অন্য সিকিওরিটির একটি লিনিয়ার সংমিশ্রণ হিসাবে বন্ধ করুন।

যেমন ম্যাট্রিক্সে রৈখিক নির্ভরতা সনাক্তকরণের জন্য অন্য কোনও কৌশল প্রশংসা করা হয়।


আপনার ম্যাট্রিক্সটি ইতিবাচক অর্ধ-নির্দিষ্ট, এটি ইতিবাচক সুনির্দিষ্ট নয়, কারণ এটি একক।
ttnphns

মাত্রা কী কী (কোন পরিবর্তনশীল; নং নমুনা)?
কার্ল

কলামগুলির সংখ্যা = 480. প্রতিটি সময়ের সিরিজের জন্য সারিগুলির সংখ্যা = 502 general তবে এমন অনেকগুলি ক্ষেত্রে রয়েছে যেখানে আপনি সাম্প্রতিক বাজারের পরিস্থিতি প্রতিফলিত করতে টি (বা তাত্পর্যপূর্ণ ওজন) এর যথেষ্ট পরিমাণে ছোট মান ব্যবহার করতে চান।
রাম আহলুওয়ালিয়া

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

কোভেরিয়েন্স ম্যাট্রিক্স প্রতিসম হয়। এটি ট্রান্সপোজ (এ) * এ দ্বারা উত্পাদিত হয় ম্যাট্রিক্স এটির 480x502 মাত্রা রয়েছে। তবে কোভারিয়েন্স ম্যাট্রিক্স 480x480
রাম আহলুওয়ালিয়া

উত্তর:


6

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

আসুন কিছু ডেটা উত্পন্ন করি:

        v1        v2        v3         v4          v5
    -1.64454    .35119   -.06384    -1.05188     .25192
    -1.78520   -.21598   1.20315      .40267    1.14790
     1.36357   -.96107   -.46651      .92889   -1.38072
     -.31455   -.74937   1.17505     1.27623   -1.04640
     -.31795    .85860    .10061      .00145     .39644
     -.97010    .19129   2.43890     -.83642    -.13250
     -.66439    .29267   1.20405      .90068   -1.78066
      .87025   -.89018   -.99386    -1.80001     .42768
    -1.96219   -.27535    .58754      .34556     .12587
    -1.03638   -.24645   -.11083      .07013    -.84446

V2, V4 এবং V5 এর মধ্যে কিছু লিনিয়ার নির্ভরতা তৈরি করা যাক:

compute V4 = .4*V2+1.2*V5.
execute.

সুতরাং, আমরা আমাদের কলাম V4 পরিবর্তন করেছি।

matrix.
get X. /*take the data*/
compute M = sscp(X). /*SSCP matrix, X'X; it is singular*/
print rank(M). /*with rank 5-1=4, because there's 1 group of interdependent columns*/
loop i= 1 to 5. /*Start iterative sweep operation on M from column 1 to column 5*/
-compute M = sweep(M,i).
-print M. /*That's printout we want to trace*/
end loop.
end matrix.

5 টি পুনরাবৃত্তিতে এম এর মুদ্রণগুলি:

M
     .06660028    -.12645565    -.54275426    -.19692972    -.12195621
     .12645565    3.20350385    -.08946808    2.84946215    1.30671718
     .54275426    -.08946808    7.38023317   -3.51467361   -2.89907198
     .19692972    2.84946215   -3.51467361   13.88671851   10.62244471
     .12195621    1.30671718   -2.89907198   10.62244471    8.41646486

M
     .07159201     .03947417    -.54628594    -.08444957    -.07037464
     .03947417     .31215820    -.02792819     .88948298     .40790248
     .54628594     .02792819    7.37773449   -3.43509328   -2.86257773
     .08444957    -.88948298   -3.43509328   11.35217042    9.46014202
     .07037464    -.40790248   -2.86257773    9.46014202    7.88345168

M
    .112041875    .041542117    .074045215   -.338801789   -.282334825
    .041542117    .312263922    .003785470    .876479537    .397066281
    .074045215    .003785470    .135542964   -.465602725   -.388002270
    .338801789   -.876479537    .465602725   9.752781632   8.127318027
    .282334825   -.397066281    .388002270   8.127318027   6.772765022

M
   .1238115070   .0110941027   .0902197842   .0347389906   .0000000000
   .0110941027   .3910328733  -.0380581058  -.0898696977  -.3333333333
   .0902197842  -.0380581058   .1577710733   .0477405054   .0000000000
   .0347389906  -.0898696977   .0477405054   .1025348498   .8333333333
   .0000000000   .3333333333   .0000000000  -.8333333333   .0000000000

M
   .1238115070   .0110941027   .0902197842   .0347389906   .0000000000
   .0110941027   .3910328733  -.0380581058  -.0898696977   .0000000000
   .0902197842  -.0380581058   .1577710733   .0477405054   .0000000000
   .0347389906  -.0898696977   .0477405054   .1025348498   .0000000000
   .0000000000   .0000000000   .0000000000   .0000000000   .0000000000

লক্ষ্য করুন যে শেষ পর্যন্ত 5 কলামটি শূন্যে পূর্ণ হয়েছে। এর অর্থ (যেমন আমি এটি বুঝতে পেরেছি) যে ভি 5 এর পূর্বের কিছু অংশের সাথে রৈখিকভাবে আবদ্ধ কলাম। কোন কলাম? পুনরাবৃত্তির দিকে তাকান যেখানে কলাম 5 সর্বশেষে শূন্যে পূর্ণ নয় - পুনরাবৃত্তি 4 আমরা সেখানে দেখতে পেয়েছি যে ভি 5 ভি 2 এবং ভি 4 এর সহগ সহ -3.333 এবং .8333: V5 = -.3333 * ভি 2 + .8333 * ভি 4 এর সাথে সংযুক্ত আমরা ডেটা দিয়ে কী করেছি: ভি 4 = .4 * ভি 2 + 1.2 * ভি 5।

এটিই আমরা জানতাম কোন কলামটি অন্য কোনটির সাথে রৈখিকভাবে আবদ্ধ। উপাত্তের আন্তঃনির্ভরতাগুলির অনেক গ্রুপের সাথে আরও সাধারণ ক্ষেত্রে উপরোক্ত পদ্ধতিটি কতটা সহায়ক তা আমি পরীক্ষা করে দেখিনি। উপরের উদাহরণে এটি সহায়ক হিসাবে দেখা গেছে।


এটি কি হ্রাসকৃত সারির ইচেলন ফর্ম নয়? যদি তা হয় তবে আর-তে কি প্যাকেজ / ফাংশন উপলব্ধ নেই?
অরুণ

অরুন, আমি আর ব্যবহারকারী নই তাই জানতে পারি না।
ttnphns

25

এখানে একটি সরল পদ্ধতি রয়েছে: ম্যাট্রিক্সের র‌্যাঙ্কটি গণনা করুন যা প্রতিটি কলামকে সরিয়ে ফেলার ফলস্বরূপ। যে কলামগুলি সরিয়ে ফেলা হলে, সর্বোচ্চ র‌্যাঙ্কের ফলস্বরূপ রৈখিকভাবে নির্ভরশীলগুলি (যেহেতু এগুলি অপসারণের ফলে র‌্যাঙ্ক হ্রাস হয় না, যখন একটি রৈখিক স্বাধীন কলামটি অপসারণ করে)।

আর তে:

rankifremoved <- sapply(1:ncol(your.matrix), function (x) qr(your.matrix[,-x])$rank)
which(rankifremoved == max(rankifremoved))

1
রিগ্রেশন ম্যাট্রিক্সে আপত্তিজনক কলামটি নির্ধারণে অত্যন্ত দরকারী উত্তর যেখানে আমি ত্রুটিটি পেয়েছি system is exactly singular: U[5,5] = 0 , এখন আমি জানি যে কলাম 5 এর ইস্যুটি ছিল (এটি শূন্যের কলাম হিসাবে হ্যান্ডসাইটের সাথে স্পষ্ট বলে মনে হয়!)
ম্যাট ওয়েলারের

জেমসের মন্তব্যে তিনি স্ক্রিপ্টটি পোস্ট করেছেন: র‌্যাঙ্কিফ্রেভড <- স্লিপলি (1: এনসিওল (আপনার.মাট্রিক্স), ফাংশন (এক্স) কিউআর (আপনার.ম্যাট্রিক্স [, - এক্স]) $ র‌্যাঙ্ক) যা (র‌্যাঙ্কিফ্রেমভড == সর্বোচ্চ ( র‌্যাঙ্কিফ্রেমোভড)) আমি একটি ম্যাট্রিক্সে একটি পরীক্ষা করেছি, আমি আর এর আউটপুট সম্পর্কে জানতে চাই? আউটপুটটির কলামগুলি লাইন নির্ভর করে? ধন্যবাদ!

@ এলটোনআরেজো: আউটপুটটি ভেক্টর হবে যা লিনিয়ার নির্ভরশীল কলামগুলির সূচকগুলি দেয়: সুতরাং (২,৪,৫) টিটিএনফেন্সের উত্তরের উদাহরণ হিসাবে। তবে আমি আশ্চর্য হই যে সংখ্যার নির্ভুলতার সমস্যাগুলি এই পদ্ধতিতে কীভাবে প্রভাব ফেলবে।
স্কর্চচি - মনিকা পুনরায় ইনস্টল করুন

র‌্যাঙ্কিফ্রেভডে এমন সমস্ত কলাম রয়েছে যা তাদের মধ্যে বা তাদের মধ্যে লিনিয়ার নির্ভরশীল। কিছু প্রয়োগে, আমরা একটি কলাম বা কয়েকটি কলাম ধরে রাখতে চাই এবং সমস্ত বাদ
দিই

এই কি ফিরে আসার জন্য খালি সেট করা উচিত নয় your.matrix = matrix(1:4, 2)?
হোলার ব্র্যান্ডেল

15

প্রশ্নটি ভেরিয়েবলগুলির মধ্যে "অন্তর্নিহিত [লিনিয়ার] সম্পর্কগুলি চিহ্নিতকরণ" সম্পর্কে জিজ্ঞাসা করে।

সম্পর্কগুলি সনাক্ত করার দ্রুত এবং সহজ উপায় হ'ল আপনার পছন্দের সফ্টওয়্যার ব্যবহার করে 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

Results

উপরের বাম প্যানেলের সাথে যুক্ত আউটপুটটি ছিল

       A  B  C  D  E
Comp.5 1 -1 -1 -1 -1

এটি বলে যে লাল বিন্দুগুলির সারি - যা নিখরচায় , নিখুঁত বহুবিধ লাইন প্রদর্শন করে - 0 - বি - সি - ডি - মিশ্রণটি নিয়ে গঠিত : ঠিক কী নির্দিষ্ট করা হয়েছিল।00ABCDE

উপরের মাঝের প্যানেলের আউটপুট ছিল

       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))


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


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

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

"loadings," which are linear combinations of the original variablesAA1

এছাড়াও, আমি আপনাকে ভেরিয়েবলের রৈখিক নির্ভর সাবসেটগুলি ট্র্যাক করার কাজে সুইপ অপারেশন ( stats.stackexchange.com/a/16391/3277 ) ব্যবহার সম্পর্কে আপনার মতামতটি জিজ্ঞাসা করতে পারি ?
ttnphns

XX=UWVVprincompXV=UWWUW0XVX


3

আমি প্রায় দুই সপ্তাহ আগে এই সমস্যাটিতে এসেছি এবং সিদ্ধান্ত নিয়েছি যে আমার এটি পুনর্বিবেচনা করা দরকার কারণ বিশাল ডেটা সেটগুলির সাথে কাজ করার সময়, এই জিনিসগুলি ম্যানুয়ালি করা অসম্ভব impossible

আমি একটি () লুপ তৈরি করেছি যা একবারে ম্যাট্রিক্সের একটি কলামের র‌্যাঙ্ক গণনা করে। সুতরাং প্রথম পুনরাবৃত্তির জন্য, র‌্যাঙ্কটি হবে ১। দ্বিতীয়, ২. এটি ব্যবহৃত হয় যতক্ষণ না আপনি ব্যবহার করছেন কলাম সংখ্যার চেয়ে র‌্যাঙ্কটি কম হয়ে যায়।

খুব সোজা:

for (i in 1:47) {

  print(qr(data.frame[1:i])$rank) 
  print(i) 
  print(colnames(data.frame)[i])
  print("###") 
}

() লুপ ব্রেকডাউন জন্য

  1. ith কলামের জন্য র‌্যাঙ্ক গণনা করে
  2. পুনরাবৃত্তি সংখ্যা মুদ্রণ করে
  3. রেফারেন্সের জন্য কলামের নাম মুদ্রণ করে
  4. "###" দিয়ে কনসোলকে ভাগ করে দেয় যাতে আপনি সহজেই স্ক্রোল করতে পারেন

আমি নিশ্চিত যে আপনি যদি একটি বিবৃতি যোগ করতে পারেন তবে আমার এখনও এটির প্রয়োজন নেই কারণ আমি কেবল 50ish কলামের সাথেই কাজ করছি।

আশাকরি এটা সাহায্য করবে!


2
যদিও তাত্ত্বিকভাবে এটির সাথে কোনও ভুল নেই তবে এটি একটি সংখ্যাগতভাবে অস্থির এবং অদ্বিতীয় অ্যালগরিদম। বিশেষত বিপুল সংখ্যক কলামের সাথে এটি কাছাকাছি-কলিনারিটি সনাক্ত করতে এবং যেখানে কোনও অস্তিত্ব নেই তা মিথ্যাভাবে কলাইনারিটি সনাক্ত করতে ব্যর্থ হতে পারে।
হোবার

2

ম্যাট্রিক্সের রেঙ্ক, আর = একটি ম্যাট্রিক্সের রৈখিক স্বাধীন কলামগুলির সংখ্যা (বা সারি)। একটি জন্য n দ্বারা এন ম্যাট্রিক্স একটি , ক্রম (ক) = ঢ => সব কলাম (অথবা সারি) সুসংগত স্বাধীন।


2

@ ভুবার যে উত্তরটি দিয়েছেন তা সত্যিই প্রসারিত হওয়া উচিত নয় তবে আমি ভেবেছিলাম গণিতের একটি সংক্ষিপ্ত বিবরণ দেব।

যদি লিনিয়ার সংমিশ্রণ হয় এক্স'এক্সবনাম=0 জন্য বনাম0 তারপর বনাম এর একটি আইজেনভেেক্টর এক্স'এক্স ইগন্যালুয়ের সাথে যুক্ত λ=0। এর আইজেনভেেক্টর এবং ইগেনুয়ালুগুলিএক্স'এক্স এর ইগেনভেেক্টর এবং ইগেনভ্যালুও এক্সসুতরাং, এর eigenvectors এক্স'এক্স কাছাকাছি eigenvalues ​​সঙ্গে যুক্ত λ=0রেজিস্ট্রারদের মধ্যে আনুমানিক লিনিয়ার সম্পর্কের জন্য সহগকে উপস্থাপন করুন। অধ্যক্ষ উপাদান উপাদান বিশ্লেষণের আইজেনভেেক্টর এবং ইগন্যাল্যগুলি আউটপুট করেএক্স'এক্স, যাতে আপনি eigenvectors ব্যবহার করতে পারেন বনাম ছোট সঙ্গে যুক্ত λ আপনার কিছু নিবন্ধকের মধ্যে লিনিয়ার সম্পর্ক বিদ্যমান কিনা তা নির্ধারণ করতে।

One method of determining if an eigenvalue is appropriately small to constitute collinearity is to use the Condition Indices:

κj=λmaxλj
which measures the size of the smallest eigenvalues relative to the largest. A general rule of thumb is that modest multicollinearity is associated with a condition index between 100 and 1,000 while severe multicollinearity is associated with a condition index above 1,000 (Montgomery, 2009).

It's important to use an appropriate method for determining if an eigenvalue is small because it's not the absolute size of the eigenvalues, it's the relative size of the condition index that's important, as can be seen in an example. Consider the matrix

XX=[0.0010000.0010000.001].
The eigenvalues for this matrix are λ1=λ2=λ3=0.001. Although these eigenvalues appear small the condition index is
κ=λmaxλmin=1
indicating absence of multicolinearity and , in fact, the columns of this matrix are linearly independent.

Citations

Montgomery, D. (2012). Introduction to Linear Regression Analysis, 5th Edition. John Wiley & Sons Inc.


1
Use of the condition indices is a good idea (+1). I would like only to point out two things. First, it would be more numerically stable and more directly relevant to compute their reciprocals: divide each eigenvalue by the largest of them all and see how close to zero it is. Second (referring to your initial discussion), unless X is square, it cannot have eigenvalues or eigenvectors: the concept makes no sense for non-square matrices.
whuber

Why dont you perform a QR-Decomposition of X (which may be n by k, n>>k)? Any rank deficiencies of X are also in R on which you could perform the aforementioned eigenvalue-decomposition to detect linear dependent columns (which are easy identified even under pivoting) - this is the reference: page 179 of Wood Generalized Additive Models an Introduction with R.
Druss2k
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.