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


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.