매트랩은 전문적인 통계 도구는 아니지만 못하는 것이 없는 만능 소프트웨어입니다.
아래와 같은 주성분 분석 코드를 사용해서 점수그림 등이 표출되도록 했습니다. 아래 코드에서 폴더명만 수정하면 바로 PCA를 수행할 수 있습니다.
% https://kr.mathworks.com/help/stats/pca.html 매트랩 주성분 분석 사이트
% 2024-06-28 작성 with ChatGPT
% CSV 파일 읽기
filename = 'C:\Users\skill\Desktop\data.csv'; % 파일명 설정
tbl = readtable(filename); % 데이터를 테이블 형식으로 읽기
% 시료명을 제외한 숫자 데이터만 추출
data = tbl{:, 2:end}; % 첫 번째 열(시료명)을 제외한 모든 데이터
data = zscore(data); % 데이터 표준화
% R과 파이썬 등에서는 기본적으로 표준화를 하는데, 매트랩에서는 하지 않아서 고윳값이 1보다 작은 현상이 발생해서 추가함
% 데이터 검증 (NaN 값 확인 및 처리)
if any(isnan(data(:)))
data = rmmissing(data); % NaN 포함 행 제거
end
% 주성분 분석
[coeff, score, latent, tsquared, explained] = pca(data, 'Rows', 'complete');
% 결과 출력
disp('계수 (주성분 로딩):');
disp(coeff);
disp('주성분 점수:');
disp(score);
disp('설명된 분산의 비율:');
disp(explained);
% 첫 두 주성분을 사용하여 데이터 플롯
figure;
scatter(score(:,1), score(:,2), 'filled'); % 데이터 점을 채워서 표시
xlabel('First Principal Component');
ylabel('Second Principal Component');
title('PCA Result Plot');
grid on; % 그리드 추가
% 로딩 플롯
figure;
plot(coeff(:,1), coeff(:,2), 'bo');
% text(coeff(:,1), coeff(:,2), textstr, 'VerticalAlignment','bottom', 'HorizontalAlignment','right');
xlabel('First Principal Component');
ylabel('Second Principal Component');
title('Loading Plot');
grid on;
% 스크리 플롯 (고유값으로)
figure;
bar(latent); % latent 변수는 각 주성분의 고유값을 포함
xlabel('Principal Component');
ylabel('Eigenvalue');
title('Scree Plot of Eigenvalues');
매트랩은 바로 논문에 써도 될 정도로 높은 수준의 그림을 만듭니다.
'자료처리' 카테고리의 다른 글
SigmaPlot 주성분 분석 (0) | 2024.07.01 |
---|---|
OriginPro 주성분 분석 (0) | 2024.07.01 |
SPSS 통계 소프트웨어 주성분 분석 (0) | 2024.07.01 |
STATA 통계 소프트웨어 주성분 분석 (0) | 2024.07.01 |
jamovi 통계 소프트웨어 주성분 분석 (0) | 2024.07.01 |
댓글