函数 > 数据分析 > 主分量分析 > 示例:主分量分析 2
  
示例:主分量分析 2
使用函数 NipalsNipals2 分析复数数据,例如,分析含有五种不同药剂有效成分的药片的近红外 (NIR) 光谱 (数据由 Bruker Optics, Inc. 提供)。可以创建根据光谱区分每种药剂的模型,即使实际的药剂是未知的。此模型可用于在生产更多药片时进行质量控制。
1. 定义下列数据集:
* 
该数据集描述了临床试验中的双盲研究。
单击复制此表达式
第一列是波数 (1/波长),单位为 cm-1。每种药剂有五个连续光谱,构成了其余的 25 列。
2. 使用函数 submatrixcolsrows 提取 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. 将矩阵 Data 分割成两个数据集:波数 (第 0 列) 和每个药片的光谱 (子矩阵 S)。要符合常规约定,可转置每个药片的光谱数据集,以使每一列对应一个自变量。
单击复制此表达式
单击复制此表达式
6. 将函数 Nipals 应用于数据之前,应先定义主分量的数量以及最大迭代次数。Nipals 函数将数据集中,同时减去每一行的平均光谱值。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
7. 选取要重新构建的光谱。
单击复制此表达式
8. Nipals 函数的输出中提取分数和输入。
单击复制此表达式
单击复制此表达式
9. 使用均值函数计算平均光谱值。
单击复制此表达式
单击复制此表达式
10. 通过将输入矢量矩阵与分数矩阵相乘,然后加上平均光谱值,来估算原始光谱值。
单击复制此表达式
11. 绘制原始光谱和重新构建的光谱的图象。缩放水平和竖直轴,以获得合理的值。
单击复制此表达式
单击复制此表达式
对于主分量分析,仅使用两个主分量就可以很好地表示所有光谱。
12. 将分数重新排列为两个矩阵。矩阵的每列表示五种药片药剂中其中一种的分数。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
13. 根据第二个因子的分数绘制第一个因子的分数。每种药剂均以不同的颜色显示。
单击复制此表达式
数据的某些分组明显,但仍难以区分各种药剂。向绘图中添加第三个分数可能会有帮助。
14. 使用 Nipals2 函数将四个主分量添加到由两个主分量创建的模型中。
单击复制此表达式
单击复制此表达式
NIPALS2 的输出矩阵的形式与 NIPALS 的输出矩阵的形式相同,但是带有与附加主分量对应的附加列和行。此时,分数和输入的数量增加至 6 个。
15. 从矩阵 NIPALS2 中提取输入和分数,以创建所选光谱的新模型。
单击复制此表达式
单击复制此表达式
单击复制此表达式
16. 绘制所选光谱的两个模型的图象并进行比较。缩放水平和竖直轴,以获得合理的值。
单击复制此表达式
17. NIPALS2 提取累积方差。
单击复制此表达式
18. 根据主分量的数量绘制累积方差图像。
单击复制此表达式
单击复制此表达式
单击复制此表达式
尽管前两个主分量 (PC) 表示了方差的 99%,但第三个 PC 才是按药剂对数据进行分组的关键。主分量分析将数据压缩为最主要的因子,而非最相关的因子。