আর-তে ইগেনভ্যালু এবং ইগেনভেেক্টর থেকে উপবৃত্তের পরিকল্পনা কীভাবে করা যায়? [বন্ধ]


15

নিম্নলিখিত ম্যাট্রিক্স = ( 2.2 0.4 0.4 2.8 ) এর ইগেনভ্যালুগুলি এবং ইগেনভেেক্টরগুলির কাছ থেকে একটি উপবৃত্তের পরিকল্পনা করতে কেউ কি আর কোড নিয়ে আসতে পারেন?

একজন=(2.20.40.42.8)

উত্তর:


16

আপনি ইগেনভেেক্টরগুলি এবং মূল্যগুলি মাধ্যমে বের করতে পারেন eigen(A)। তবে চোলস্কির পচন ব্যবহার করা সহজ। নোট করুন আত্মবিশ্বাসের উপাত্তের জন্য উপবৃত্তির পরিকল্পনার সময়, উপবৃত্ত-অক্ষগুলি সাধারণত সম্পর্কিত ইজেনভ্যালুগুলির দৈর্ঘ্য = বর্গক্ষেত্রের আকারযুক্ত হয় এবং কোলেস্কির পচন এটি দেয়।

ctr    <- c(0, 0)                               # data centroid -> colMeans(dataMatrix)
A      <- matrix(c(2.2, 0.4, 0.4, 2.8), nrow=2) # covariance matrix -> cov(dataMatrix)
RR     <- chol(A)                               # Cholesky decomposition
angles <- seq(0, 2*pi, length.out=200)          # angles for ellipse
ell    <- 1 * cbind(cos(angles), sin(angles)) %*% RR  # ellipse scaled with factor 1
ellCtr <- sweep(ell, 2, ctr, "+")               # center ellipse to the data centroid
plot(ellCtr, type="l", lwd=2, asp=1)            # plot ellipse
points(ctr[1], ctr[2], pch=4, lwd=2)            # plot data centroid

library(car)  # verify with car's ellipse() function
ellipse(c(0, 0), shape=A, radius=0.98, col="red", lty=2)

সম্পাদনা করুন: আইজেনভেেক্টরগুলিকেও প্লট করার জন্য আপনাকে আরও জটিল পদ্ধতির ব্যবহার করতে হবে। এটি সানকুলসু এর উত্তরের সমতুল্য, এটি কোডটি সংক্ষিপ্ত করতে কেবল ম্যাট্রিক্স স্বরলিপি ব্যবহার করে।

eigVal  <- eigen(A)$values
eigVec  <- eigen(A)$vectors
eigScl  <- eigVec %*% diag(sqrt(eigVal))  # scale eigenvectors to length = square-root
xMat    <- rbind(ctr[1] + eigScl[1, ], ctr[1] - eigScl[1, ])
yMat    <- rbind(ctr[2] + eigScl[2, ], ctr[2] - eigScl[2, ])
ellBase <- cbind(sqrt(eigVal[1])*cos(angles), sqrt(eigVal[2])*sin(angles)) # normal ellipse
ellRot  <- eigVec %*% t(ellBase)                                          # rotated ellipse
plot((ellRot+ctr)[1, ], (ellRot+ctr)[2, ], asp=1, type="l", lwd=2)
matlines(xMat, yMat, lty=1, lwd=2, col="green")
points(ctr[1], ctr[2], pch=4, col="red", lwd=3)

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


আপনি কি এই উপবৃত্তে eigenvalues ​​এবং eigenvectors প্লট করতে আপত্তি করবেন? ধন্যবাদ
MYaseen208

@ এম ইয়াসিন208 আমি উপবৃত্তাকারদের বরাবরের অক্ষ হিসাবে দেখানোর জন্য আমি আমার উত্তর সম্পাদনা করেছি। অক্ষের দৈর্ঘ্য সংশ্লিষ্ট ইগেনভেেক্টরগুলির বর্গমূলের সমান।
কারাকাল

7

আমি মনে করি এটি আপনি চান এটি আর কোড। আমি এই থ্রেড থেকে আর-মেলিং তালিকায় আর-কোড ধার নিয়েছি । মূলত ধারণাটি হ'ল: প্রধান এবং গৌণ অর্ধ-ব্যাসার্ধ হ'ল দুটি আইগেন মান এবং আপনি উপবৃত্তিকে প্রথম ইগেন ভেক্টর এবং এক্স-অক্ষের মধ্যে কোণের পরিমাণ দ্বারা ঘোরান

mat <- matrix(c(2.2, 0.4, 0.4, 2.8), 2, 2)
eigens <- eigen(mat)
evs <- sqrt(eigens$values)
evecs <- eigens$vectors

a <- evs[1]
b <- evs[2]
x0 <- 0
y0 <- 0
alpha <- atan(evecs[ , 1][2] / evecs[ , 1][1])
theta <- seq(0, 2 * pi, length=(1000))

x <- x0 + a * cos(theta) * cos(alpha) - b * sin(theta) * sin(alpha)
y <- y0 + a * cos(theta) * sin(alpha) + b * sin(theta) * cos(alpha)


png("graph.png")
plot(x, y, type = "l", main = expression("x = a cos " * theta * " + " * x[0] * " and y = b sin " * theta * " + " * y[0]), asp = 1)
arrows(0, 0, a * evecs[ , 1][2], a * evecs[ , 1][2])
arrows(0, 0, b * evecs[ , 2][3], b * evecs[ , 2][2])
dev.off()

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


দয়া করে আমাকে সংশোধন করুন আমি ভাবি না যে ইগেন ভিসাগুলি লম্ব আছে (তাদের অবশ্যই তত্ত্বের সাথে থাকতে হবে; হতে পারে আমি কি কিছু ভুল করার পরিকল্পনা করছি?)।
সানকুলসু

আপনার উত্তর দেওয়ার জন্য ধন্যবাদ. এই উপবৃত্তটি দেখতে দুর্দান্ত লাগছে তবে সেখানে কিছু অনুপস্থিত। আমি আপনার প্রদত্ত কোডটি এই ম্যাট্রিক্স দিয়ে চেষ্টা করেছি একজন=(1-5-51)এবং এটি সঠিক উপবৃত্তি দিয়েছিল। আমি ভাবছি কেন এটি ম্যাট্রিক্সে বিভিন্ন রূপের জন্য সঠিক উপবৃত্তি সরবরাহ করছে না। কোন মন্তব্য!
MYaseen208

কেবলমাত্র asp=11 এবং লম্ব তীরের একটি অনুপাত আছে set আপনার কোড পরিবর্তন evs <- sqrt(eigens$values)করা আমার উত্তর হিসাবে একই উপবৃত্ত দেয়।
ক্যারাকাল

3
@ এম ইয়াসেন208 আপনার নতুন ম্যাট্রিক্স ইতিবাচক সুনির্দিষ্ট নয়: এটির নেতিবাচক ইগ্যালভ্যালু রয়েছে এবং এটি কোনও সম্ভাব্য কোভারিয়েন্স ম্যাট্রিক্স নয়। সেক্ষেত্রে উপবৃত্তটি কী আঁকতে হবে তা আমি জানি না।
কারাকাল

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