함수 > 데이터 분석 > 주성분 분석 > 예제: 주성분 분석 2
예제: 주성분 분석 2
NipalsNipals2 함수를 사용하여 복잡한 데이터를 분석할 수 있습니다. 여기서는 복잡한 데이터의 예로 유효 투약 성분이 각기 다른 다섯 가지 정제에 대한 근적외선(NIR) 스펙트럼의 분석 결과를 사용합니다. 이 데이터는 Bruker Optics, Inc.에서 제공한 것입니다. 실제 투약을 알 수 없더라도 스펙트럼에 기초하여 각 투약을 구분하는 모델을 만들 수 있습니다. 추가로 정제를 생산할 때 품질을 제어할 목적으로 이 모델을 사용할 수 있습니다.
1. 다음과 같은 데이터 집합을 정의합니다.
* 
이 데이터 집합은 임상시험에서 수행한 이중 맹검을 설명합니다.
이 식을 복사하려면 클릭
첫째 열은 cm-1 단위의 파수(1/파장)입니다. 각 투약별로 다섯 개씩의 순차 스펙트럼이 있어 나머지 25개 열을 구성합니다.
2. submatrix, colsrows 함수를 사용하여 25개 스펙트럼을 추출합니다.
이 식을 복사하려면 클릭
3. maxmatch 함수를 사용하여 최대값과 해당 값이 포함된 스펙트럼을 구합니다. 데이터 값이 매우 작기 때문에 TOL을 더 작은 값으로 설정합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
최대값은 데이터 행렬의 210행과 17열에 있습니다.
4. 각 투약별로 첫 번째 스펙트럼 두 개씩, 총 10개의 데이터 집합을 도표화합니다. 데이터 집합 쌍은 Data 행렬의 열 [1,2], [6,7], [11,12], [16,17][21,22]입니다.
가로 축에 대한 합리적인 배율을 얻으려면 파수를 1000으로 나눕니다. 마찬가지로, 스펙트럼 값이 작기 때문에 값에 1000을 곱합니다.
가로 마커를 사용하여 최대 스펙트럼 값을 표시합니다.
이 식을 복사하려면 클릭
일반적으로 파수는 내림차순으로 도표화하는 것이 관례입니다. 따라서 파수를 올바른 순서로 표시하기 위해 Data<0>이 반전됩니다.
투약 하나를 다른 투약과 쉽게 구분할 수 있도록 만드는 부분이 스펙트럼에 없습니다. 모든 스펙트럼은 동일한 기본 형태이고 가까운 흡광도 값을 갖습니다.
대부분의 데이터가 중복되어 있습니다. 각 스펙트럼마다 236개의 점이 있습니다. 이는 변수(빛의 특정 파장에 대한 흡광도)를 236번 측정했다는 의미입니다. 그러나 이렇게 많은 수의 점이 변동하는 데 상호 관련성이 있음을 도표에서 분명히 확인할 수 있습니다.
5. 각 정제(하위 행렬 S)에 대한 파수(열 0)와 스펙트럼을 나타내는 두 개의 데이터 집합으로 Data 행렬을 분할합니다. 일반적인 관례에 따라 각 열이 독립 변수에 상응하도록 각 정제에 대한 스펙트럼을 전치합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
6. 데이터에 Nipals 함수를 적용하기 전에 주성분의 수를 정의하고 최대 반복 횟수를 정의합니다. Nipals 함수는 각 행에서 평균 스펙트럼을 빼는 방식으로 데이터를 중심에 배치합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
7. 다시 구성할 스펙트럼을 선택합니다.
이 식을 복사하려면 클릭
8. Nipals 함수의 출력에서 점수(scores)와 로드(loadings)를 추출합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
9. mean 함수를 사용하여 평균 스펙트럼을 계산합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
10. 로드 벡터로 이루어진 행렬에 점수 행렬을 곱한 다음 평균 스펙트럼을 더해 원래 스펙트럼을 추정합니다.
이 식을 복사하려면 클릭
11. 원래 스펙트럼과 다시 구성한 스펙트럼을 도표화합니다. 가로 및 세로 축을 배율 조정하여 합리적인 값을 얻습니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
PCA에 주성분을 두 개만 사용해도 모든 스펙트럼이 제대로 표현됩니다.
12. 점수를 두 개의 행렬로 다시 정렬합니다. 행렬의 각 열은 다섯 가지 정제 투약 중 하나에 대한 점수를 나타냅니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
13. 둘째 인수의 점수를 기준으로 첫째 인수의 점수를 도표화합니다. 각 투약을 표시하는 데 서로 다른 색상을 사용합니다.
이 식을 복사하려면 클릭
데이터의 일부 그룹화가 분명해졌지만 한 투약을 다른 투약과 구분하는 것은 여전히 어렵습니다. 도표에 세 번째 점수를 추가하는 것이 도움이 될 수 있습니다.
14. 주성분 두 개로 만든 모델에 Nipals2 함수를 사용하여 주성분 네 개를 추가합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
NIPALS2의 출력 행렬은 NIPALS의 출력 행렬과 형태가 같지만 추가 주성분에 상응하는 열과 행이 더 추가되었습니다. 점수와 로드의 수가 이제 여섯 개로 늘었습니다.
15. NIPALS2 행렬에서 로드와 점수를 추출하여 선택된 스펙트럼에 대한 새 모델을 만듭니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
16. 선택된 스펙트럼에 대해 두 모델을 도표화하고 비교합니다. 가로 및 세로 축을 배율 조정하여 합리적인 값을 얻습니다.
이 식을 복사하려면 클릭
17. NIPALS2에서 누적 분산을 추출합니다.
이 식을 복사하려면 클릭
18. 주성분 수를 기준으로 누적 분산을 도표화합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
분산의 99%를 차지하는 것은 처음 두 개의 주성분(PC)이지만 투약별로 데이터를 그룹화하는 데 있어 중요한 역할을 하는 것은 셋째 PC입니다. 이와 같이 주성분 분석을 수행하면 관련성이 가장 높지는 않더라도 가장 주도적인 인수로 데이터를 압축할 수 있습니다.
도움이 되셨나요?