Aritalab:Lecture/Math/PLS/R PLS
From Metabolomics.JP
- 参考資料
RによるPLS
Rでは pls パッケージを使います。
> install.packages("pls") > library(pls) > summary(oliveoil) chemical.Acidity chemical.Peroxide chemical.K232 chemical.K270 chemical.DK Min. :0.150000 Min. : 8.1400 Min. :1.33100 Min. :0.08500000 Min. :-0.00500 1st Qu.:0.190000 1st Qu.:10.9500 1st Qu.:1.53600 1st Qu.:0.10150000 1st Qu.:-0.00325 Median :0.260000 Median :12.4000 Median :1.65350 Median :0.11600000 Median :-0.00200 Mean :0.311875 Mean :13.2525 Mean :1.70825 Mean :0.11814375 Mean :-0.00175 3rd Qu.:0.312500 3rd Qu.:15.3750 3rd Qu.:1.89325 3rd Qu.:0.12850000 3rd Qu.: 0.00000 Max. :0.730000 Max. :19.4000 Max. :2.22200 Max. :0.16800000 Max. : 0.00300 sensory.yellow sensory.green sensory.brown sensory.glossy sensory.transp sensory.syrup Min. :21.400 Min. : 9.7000 Min. : 8.00000 Min. :67.7000 Min. :63.50000 Min. :42.300 1st Qu.:32.075 1st Qu.:12.0750 1st Qu.:10.02500 1st Qu.:77.8000 1st Qu.:74.17500 1st Qu.:46.150 Median :52.800 Median :31.1500 Median :10.80000 Median :80.4000 Median :77.20000 Median :47.500 Mean :50.875 Mean :33.5125 Mean :12.33125 Mean :80.8125 Mean :78.19375 Mean :47.975 3rd Qu.:68.800 3rd Qu.:54.7000 3rd Qu.:11.97500 3rd Qu.:85.3750 3rd Qu.:84.87500 3rd Qu.:50.650 Max. :73.500 Max. :73.4000 Max. :28.40000 Max. :89.9000 Max. :89.70000 Max. :52.800
ここではオリーブオイル 16種(ギリシャ5, イタリア5, スペイン6)のデータを利用します。chemical カテゴリーに Acidity, Peroxide, K232, K270, DK の 5 項目、sensory カテゴリーに yellow, green, brown, glossy, transp, syrup の 6 項目の情報があります。
"Chemical" はオイルの品質基準で,いずれも低い方がよいとされます。
- Acidity 脂肪酸の割合 (EUにおける許容最大値 0.80)
- Peroxide 酸化の状態 (EUにおける許容最大値 20)
- K232, K270, DeltaK オイルに含まれる酸性物質の量 (EUにおける許容最大値それぞれ 2.50, 0.20, 0.01)
"Sensory" は官能試験のスコアです。どちらも相関の高い軸を持っています。
3 軸のchemical 主成分で、6項目の値を予測してみます。
> s <- plsr(sensory ~ chemical, ncomp=3, data=oliveoil) > summary(s) Data: X dimension: 16 5 Y dimension: 16 6 Fit method: kernelpls Number of components considered: 3 TRAINING: % variance explained 1 comps 2 comps 3 comps X 99.59 99.87 100.00 yellow 17.33 47.00 49.48 green 11.64 43.80 45.38 brown 60.41 63.24 68.91 glossy 45.00 51.46 52.98 transp 35.81 45.65 45.96 syrup 57.62 58.80 58.80
3軸目では説明能力があまり上がっていないことがわかります。 各項目への一致度や軸のローディングは plot 関数でわかります。
> plot(s, ncomp=2, asp=1, line=TRUE) > plot(s, "loadings", comps=1:2, legendpos = "topleft")