Plot hotelling's confidence ellipse in PCA
16 次查看(过去 30 天)
显示 更早的评论
Can anyone tell me how to draw an ellipse error on a pca plot. The princomp function gives us the distances from each point to the center of the group, but how can we use this information to draw the corresponding ellipse's?
回答(1 个)
Aditya
2025-3-3
Hi Karthik,
To draw an error ellipse on a PCA plot, you can use the covariance matrix of the principal component scores to determine the shape and orientation of the ellipse.
Here is the sample code for the same:
% Sample data
data = randn(100, 3); % 100 observations with 3 variables
% Perform PCA
[coeff, score, latent] = pca(data);
% Calculate the covariance matrix of the scores
covariance = cov(score(:, 1:2)); % Use the first two principal components
% Calculate the mean of the scores
mean_score = mean(score(:, 1:2));
% Eigen decomposition of the covariance matrix
[eigenvec, eigenval] = eig(covariance);
% Calculate the ellipse parameters
chi_square_val = 2.4477; % For 95% confidence interval
theta = linspace(0, 2*pi, 100);
ellipse_x = chi_square_val * sqrt(eigenval(1,1)) * cos(theta);
ellipse_y = chi_square_val * sqrt(eigenval(2,2)) * sin(theta);
% Rotation matrix
R = [cos(atan2(eigenvec(2,1), eigenvec(1,1))), -sin(atan2(eigenvec(2,1), eigenvec(1,1)));
sin(atan2(eigenvec(2,1), eigenvec(1,1))), cos(atan2(eigenvec(2,1), eigenvec(1,1)))];
% Rotate the ellipse
ellipse = [ellipse_x; ellipse_y]' * R;
% Plot the PCA scores
figure;
scatter(score(:, 1), score(:, 2), 'b.');
hold on;
% Plot the error ellipse
plot(mean_score(1) + ellipse(:, 1), mean_score(2) + ellipse(:, 2), 'r-', 'LineWidth', 2);
% Add labels and title
xlabel('Principal Component 1');
ylabel('Principal Component 2');
title('PCA with Error Ellipse');
axis equal;
grid on;
hold off;
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!