Aritalab:Lecture/Math/PLS/R PLS

From Metabolomics.JP
< Aritalab:Lecture | Math | PLS
Revision as of 17:11, 17 June 2021 by Adm (Talk | contribs)

Jump to: navigation, search
参考資料

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 を数値に変換しておきます。

> label <- unclass(as.factor(substring(rownames(oliveoil),1,1)))
> mat <- as.data.frame(matrix(oliveoil$chemical, 16, 5))
> plot(mat, pch=21, bg=label)

OliveoilChemicalPairsR.png OliveoilSensoryPairsR.png 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)
Personal tools
Namespaces

Variants
Actions
Navigation
metabolites
Toolbox