Aritalab:Lecture/Math/PLS/R PLS
From Metabolomics.JP
< Aritalab:Lecture | Math | PLS
- 参考資料
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" は官能試験のスコアです。どちらも相関の高い軸を持っています。まず産地で色分けするために rownames を数値に変換しておきます。pairsというコマンドは列の組み合わせ全てについて散布図を作るコマンドです。
> label <- unclass(as.factor(substring(rownames(oliveoil),1,1))) > pairs(oliveoil$chemistry, pch=21, bg=label) > pairs(oliveoil$sensory, pch=21, bg=label)
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軸目では説明能力があまり上がっていないことがわかります。Root Mean Square Error Prediction (RMSEP) を,plot 関数で図示します。Yellow, green が2軸目でうまく予測できるようです。
> plot(RMSEP(s))
各項目の予測精度や軸の成分も plot 関数でわかります。AcidityとPeroxideで多くが説明できるようです。
> plot(s, ncomp=2, line=TRUE, pch=21, bg=label) > plot(s, "loadings", comps=1:3) > plot(s, "scores", comps=1:2, pch=21, bg=label)