Sie sind auf Seite 1von 38

Alkalmazsok

11.1 kiugr rtkek megllaptsa Robusztus PCA-val.


A kiugr rtkek azonostsa mindig rendkvl bonyolult s veszlyes feladat,
hajlamos szubjektv tletekre. Veszlye, hogy elutastja a mintkat, ami nem
illeszkedik a vrt minthoz. ??? Itt a pattern szt nem mintnak (magyarul a
mrt adatok sszessge), hanem mintzatnak fordtanm. Arrl van sz, hogy
a kutatnak van mr egy prekoncepcija arrl, hogy pl mit kellene illeszteni az
adatokra. s hajlamos a kiugr adatokat mrsi hibnak tekinteni amikor az az
vrakozsnak ellentmond. gy viszont egy szisztematikus hibt(eltrst,
torztst, angolul bias) hoz ltre. Szval lnyegben csal!

PL: Van egy csom mrsi pontom (A anyag koncentrcija--id), amire


egyenest akarok illeszteni, (Ugyanis korbban elmleti ton kiokoskodtam,
hogy az A anyag 0-adrend kinetikval bomlik.) Csakhogy a mrsi pontjaim
nem gy nznek ki, amilyet vrtam, mert az elejn s a vgn lv NHNY
pont nagyon nem illeszkednek az egyenesre. Akkor most mi legyen? Ha ezeket
a pontokat vletlen mrsi hibnak mondom, s kihagyom a modellbl, akkor
lehet, hogy csalok ezzel, mert a sajt rossz elmletemet prblom
rerszakolni a valsgra. DE az is lehet, hogy mgiscsak igazam van a 0-
adrend kinetikval kapcsolatban, szval j a modell, s tnyleg a vletlen hiba
miatt vannak kiugr rtkek.

((Persze azrt meg vannak az eszkzk arra, hogy az ilyen kiugr rtkeket
objektven kezeljk...)

A bekezds vgnl van mg egy rdekes megjegyzs: Ha kevs az adat, akkor


nehz kiderteni, hogy melyik is a kiugr rtk! Gondolj bele: vegyl fel 3 (nem
egy egyenesre es pontot egy koordinta-rendszerben. Tudok gy is egyenest
illeszteni, hogy a kt szlst ktm ssze, s a kzpst nevezem kiugr
rtknek, de tudom gy is, hogy az els kt pontot ktm ssze s a harmadik
a kiugr rtk, meg sszekthetem a kt utolst is, s akkor az els a kiugr
rtk.----> Ahhoz, hogy magabiztosan kijelenthessem egy mrsi adatrl, hogy
az kiugr rtk-e vagy sem, sok-sok mrsi adatra van szksgem. (Ehhez
viszont j sokszor kell mrnek, titrlnom, mosogatnom... fj!

11.1.1 ROBUST PCA

Mi lenne knnyebb, mint ilyenkor PCA-t (fkomponens elemzst) alkalmazni?


Br ez nha megtrtnik, s ilyenkor a PCA egy rtkes kiugr rtk rzkel,
ms esetekben azonban a kiugr rtkeket nehezebb szrevenni. A lnyeg az,
hogy a PCA nem egy jl hasznlhat mdszer, mivel a fkomponenseket a
maximum variancia kritrium alapjn hatrozzuk meg, a kiugr rtkek
nagyban befolysoljk a fkomponens-egytthatkat s a fkomponenseket
( scores and loadings), nha olyan mrtkben, hogy azok dominlnak az els
fkomponensekknt. Pontosan! Mivel a PCA a fkomponens-vektorokat gy
keresi meg, hogy megnzi melyik irnyban a legnagyobb az adathalmaz
variancija (mtrix sajtvektora lesz az az irny), ezrt ez a mdszer nagyon
rzkeny a kiugr adatokra (nem robusztus), a kiugr adatok jelenlte elszrja
a modellt, mert megvltoztatja a fkomponens-vektorok koordintit.

Ilyen esetekben robusztus PCA-ra van szksg. Szmos klnbz megkzelts


ltezik, (az egyik amikor) ... Nem. Itt valami olyasmit r, hogy mindegyik
mdszernek van egy breakdown pontja (lerobbans/tnkremenetel pontja). Ez
a breakdown pont azt mondja meg, hogy hny darab kiugr rtket kpes
elviselni a modell a kovariancia mtrixnak megvltozsa nlkl. Amg a kiugr
rtk/sszes-adatpont arny kisebb az adott mdszer breakdown pontjnl,
addig az a mdszer jl mkdik. Ha viszont tl nagy a kiugr rtkek arnya,
akkor mr jabb mgrobusztusabb mdszert kell keresni.

Legegyszerbb az SVD alkalmazsa a kovariancia s a korrelcis mtrix


becslsre. ( SVD= Singular Value Decomposition , szingulris rtk felbonts,
numerikusan stabilabb s ezrt elnys a legtbb esetben). Az ilyen becsls
ltal megadott minimlis kovariancia determinns (MCD), amelynek van egy
bontsi pontja legfeljebb 0,5, ami azt jelenti, hogy az adatok fele rossz tud
lenni, anlkl, hogy befolysoln a becslst??? ( ezt mg megnzni, s
rtheten megfogalmazni) Ez az a breakdown point, amirl az elbb sz volt.
Igen, a 0,5 azt jelenti, hogy az MCD elgg robusztus annyira, hogy addig
hasznlhat az MCD amg a kiugr mintaelemek (pl mrt abszorbancik,
titrlsi trfogatfogysok,...) arnya <0,5-nl. Ami azt jelenti, hogy ez a
mdszer baromira robusztus.

Magasabb ilyen pontnak nincs tl sok rtelme. Persze! Ha 0,5-nl nagyobb a


kiugrk arnya, akkor gy ahogy van szar a mrsnk, mert tbb hibs
adatunk van, mint j. Ezrt nincs rtelme az MCD-nl is robusztusabb mdszert
kitallni... Ahogy a neve utal r az MCD becsl , az adatok rszhalmazait
vizsglja, olyan rszhalmazt keresve, amely egy minimlis determinnshoz
tartoz kovariancia mtrixot eredmnyez. (s, ha mr eleve szingulris? Lehet,
hogy ezt az MCD mdszert a fkomponens elemzs utn vgzik el? Vagy
valahogy a PCA rsze...)

A felhasznl ltal vlasztott rszhalmaz nagysga hatrozza meg a (n-h+1)/n


bontsi pontot, ahol n = megfigyelsek szma, H= rszhalmaz mrete. ha
valaki tnyleg nem arra szmt, hogy az adatok nagy rsze szennyezett,
akkor rdemes a h.75n t vlasztani.
Az MCD kovariancia becsls tbb R csomagban is megtallhat. Pldul a MASS
csomagban cov.mcd. Ha ezt kombinlva hasznljuk a princomp funkcival,
akkor lthatjuk a klnbsget a robusztus s a klasszikus kovariancia becsls
kztt.

Most nzzk a bor mintk kzl a Grignolinot:

MASS csomagot betlteni

X <- wines[vintages == "Grignolino",]

X.sc <- scale(X)

X.clPCA <- princomp(X.sc)

X.robPCA <- princomp(X.sc, covmat = cov.mcd(X.sc))

biplot(X.clPCA, main = "Classical PCA")

itt kidobott egy kpet

Ezen a klasszikus PCA megoldst lthatjuk.

biplot(X.robPCA, main = "MCD-based PCA")

itt pedig egy msik brt kaptunk


nem tudom
rtelmezni a kpet sajnos, hogy mik a szmok, meg nyilak mire utalnak.

Kpek rtelmezse: A ngyzetek belsejben lv szmok a klnbz bormintk


sorszmai. Az als vzszintes s a bal fggleges tengelyen lv szmok a mutatjk
meg, hogy mik a klnbz bormintk koordinti a PCA ltal kivlasztott kt
(mestersges) magyarz vltoz szerint. Pldul az els kpen a 63. bormintnak a
koordinti -nikkelezett szemmrtkkel- (0,35 ; 0,11) Klnsebb (kmiai)
jelentsge nincs ennek a kt mestersges vltoznak. Viszont segtsgkkel pl elvileg
el lehet vlasztani egymstl a borfajtkat (msra is j). A fels vzszintes s jobb
fggleges szmok ugyan ezek, csak ms sklzs szerint. Emlkezz vissza az elz
flv matekjra: egy mtrix sajtrtkhez vgtelen darab klnbz hosszsg de
azonos irny sajtvektor tartozik. Nyilak a dobozban: Ahhoz, hogy valamennyire
mgiscsak rtelmezni tudjuk azt a kt mestersges vltozt, amit a PCA csinlt,
rdemes belerajzolni a dobozba az magyarz vltozkat is. Ht ezek a nyilak! Ha
megnzed az els dobozt, a vzszintes tengellyel kb prhuzamosak az OD-ratio,
flavonoidok proanth s total phenol nyilak. Ez azt jelenti, hogy ezen vltozk lineris
kombincijval lehet kifejezni az els fkomponenst (fkomponens=mesterses
magyarz vltoz = adatmtrix legnagyobb sajtrtkhez tartoz sajtVEKTORA)

Teht az els fkomponens, ami tulajdonkppen egy vektor felrhat a rgi


magyarz vltozk vektorainak lineris kombincijaknt:
jnagyszm*Odratio + msikjnagyszm*flavonoidok
+jabbnagyszm*proanth+megintegynagyszm * totlfenokok +
nullakrliszm*tbbi-vltoz-egyenknt. (a vektorok eltti szmok
tulajdonkppen azt mondjk meg, hogy mekkora sllyal szmtottak bele az 1.
illetve 2. fkomponensekbe az egyes rgi magyarz vltozk (tizenvalahny
tulajdonsg)

Ezen pedig az MCD kovariancia becsls ltht.

Nyilvnval klnbsgek vannak a kt bra kztt. A klasszikus esetben az els


fkomponenst az OD arny, flavonoidok, proanth?? s tot.fenolok dominltk.

A robusztus verziban az (els fkomponens kis rtkekkel rendelkezik a


msodik komponens szlssgeinek van nagyobb befolysa.) NEM ezt jelenti!
Azt rja, hogy a robusztustott verziban az elbb emltett 4 rgi magyarz
vltoz (odrate, flavinoidok) mr kevsb hatrozza meg az els
fkomponenst kicsi ennek a ngy vltoznak a slya (Scores)! Tovbbra is a
vzszintes tengelyen lv els fkomponens a legmeghatrozbb! Ez mindig
igaz marad!

Amit viszont itt rdemes megemlteni az az, hogy amg az els modellnl a 63-
mas borminta nagyon kiugr volt (valsznleg valami mrsi hiba miatt),
addig a robusztusabb modell ezt a kiugrst tomptotta, s mr nem is olyan
kiugr.

Habr sok a kapcsolat kztk, a plda mutatja, hogy a robusztus mdszerek


rzkelhet klnbsgekhez vezethetnek.

Az MCD-becsl alkalmazsnak egy fontos akadlya az, hogy nem


alkalmazhat fat adatmtrixokra, csak olyan mtrixokra alkalmazhat, ahol a
mintk szma nagyobb, mint a vltozk szma. ( ms esetekben a kovariancia
mtrix szingulris, s a determinns nulla)

Ha mgis ilyen eset van, akkor msik megkzeltsre van szksg. pldul a
ROBPCA : ami Projection Pursuit s a robusztus kovariancia becslst
kombinlja. ( a PP alkalmazsval alacsonyabb dimenzij alteret keres,
amelyben az MCD becslst lehet alkalmazni)

A ROBPCA-nak van egy olyan tulajdonsga, amit az ICA-nl (Section 4.6.2) mr


lttunk. Ha nveljk a PC-k szmt, akkor nincs arra garancia, hogy az els PC-
k ugyanazok maradnak ( st ltalban nem). Nyilvnval, hogy ez
meglehetsen nehzz teheti az rtelmezst, klnsen, mivel a "helyes"
fkomponensek szmnak kivlasztsnak mdja kevsb nyilvnval a
robusztus PCA-ban, mint a klasszikus PCA-n [137].

Mivel a ROBPCA algoritmus rszletei sokkal bonyolultabbak, mint amennyit itt


lehet kezelni, csak illusztrljuk annak hasznlatt. A ROBPCA, valamint a PCA
szmos ms robusztus verzija a PcaHubert fggvnyben a rrcov csomagban
ll rendelkezsre

A Grignolino mintra 5 fkomponensre alkalmazva a kvetkez eredmnyre


vezet.

rrcov-ot installlni

X.HubPCA5 <- PcaHubert(X.sc, k = 5)

summary(X.HubPCA5)
standard deviation= standard eltrs Ez valsznleg az adott (mestersges)
magyarz vltoz eltrse az tlagtl.
Pl.: prolinkoncentri standard-hibja:
Van szzvalahny borom -> szzvalahny prolin-tartalmom. Kiszmolom ezen
prolin-koncentrcik tlagt, s megnzem a szrst (tlag -
1.borprolinkoncentrci)^2 + (tlag-2.borprolinkoncentrci)^2 + ... Aztn
beosztok a mintaszmmal s gykt vonok. gy megkaptam a prolin-
koncentrci standard hibjt.

NA az adott fkomponensek standard hibi (standard deviation) az kbb


ugyan ez, csak itt nem az egyes borokhoz tartoz prolin-koncentrcikkal
szmolok, hanem a kiszmtott fkomponens-rtkekkel.
Ha pldul a szmtgp azt a modelt hozta ltre, hogy pl 1.fkomponens =
1,3*flovonoid+0,8* hamu + kbbnulla*sszestbbi, akkor egyenknt veszem
a szzvalahny borminta flavonoid-koncentrcijt s hamutartalmt s
minden mintnl sszeadom a flavonoidtartalom 1.3-szoros a hamutartalom
0,8 szorosval. (Az gy kapott szmok lennnek egybknt a tbbszz borminta
vzszintes koordintjai a PCA-grafikonomban, de ez most nem lnyeg) Az gy
kapott szzvalahny szmmal megcsinlom ugyanazt, amit az elz prolin-
koncentrcis esetben, akkor kapom meg az 1. fkomponens standard hibjt.

proportion of variance= variancia arnya (Ez mondja meg, hogy a (pl


bor)mintk paramtereinek vltozkonysgt mennyire tudja egyedl
magyarzni az adott fkomponens. Ez az rtk mindig cskken, ahogy
emmiatt a fkomponensek fontossga is.
Cumulative proportion= (halmozott) sszestett arny

Az utols sor a variancia halmozott arnyt adja meg a robusztus PCA


modellben elfoglalt variancia hnyadaknt, nem pedig a klasszikus PCA-ban
szoksos teljes variancia trtrszeknt.

Ha nem adjuk meg a fkomponensek szmt, ( teht alaprtelmezett k=0),


akkor az algoritmus kivlsztja az optimlis szmot.

X.HubPCA <- PcaHubert(X.sc)

summary(X.HubPCA)
gy ltszik, hogy az optimlis szm ebben az esetben 7-tel egyenl:

Az optimlis komponensek szmnak kiszmtsra vonatkoz szably, az hogy


a modell ltal kifejtett variancia szignifikns rszt magyarzza, mikzben nem
veszi figyelembe azokat a komponenseket, amelyek nagyon kis szrsaik
vannak. Ha a vltozk szma elg kicsi, akkor az MCD algoritmust kzvetlenl
hasznljk. Ha nem a ROBPCA algoritmust hasznljk.

Az alaprtelmezett rajzolsi mdszer klnbzik a klasszikus brtl, egy


kiugr rtk trkpet vagy tvolsgi trkpet jelent meg, ahelyett hogy
( scores and loadingset tartalmazza)

Ennek a tervnek a f elgondolsa, hogy a minta kt tvolsggal jellemezhet.

- Az ortogonlis tvolsg (OD) amely jelzi az egyes adatpontok valdi


pozcijnak s az els nhny PC-ben lv vetletnek a tvolsgt;

- a Score Distance (SD), a minta-vetlet tvolsgt az sszes minta-


vetlet kzppontjhoz.

A Grignolino adatok esetn, a kvetkez brhoz vezet:

plot(X.HubPCA)

A legelterjedtebb (legflreesbb, kiugrbb a jobb fordts) mintk kzl tbbet


indexekkel jelltek meg, gy tovbb vizsglhatk.

A korbbi brval sszehasonltva: Az adatok ellenrzse azt mutatja, hogy a


63-as s a 15-s objektumok bizonyos vltozkban extrm rtkeket
tartalmaznak (valjban a 63-as objektum a PCI 1-nl a legkisebb pontszm is
egy klasszikus PCA-ban. Azonban valsznleg tl sok lenne az adatok teljes
eltvoltsa.
Kiugr rtk trkpet a Grignolino adatokra a ht komponens alapjn ROBPCA
modell-lel.

diszkusszi:
A robusztus megkzelts rendkvl fontos lehet azokban az esetekben, amikor
felttelezzk, hogy az adatok nmelyike kiugr rtk. A klasszikus becslsek
nagyon rzkenyek lehetnek a szlssges rtkekre, s gyakran elfordul,
hogy csak egy vagy nagyon kevs minta dominl az adatok tbbi rszben. Ez
nem felttlenl hiba, mert a befolysos megfigyelsek (kiugr mrsek)
helyesek lehetnek, de ltalban inkbb egy olyan modellbe helyeznnek tbb
bizalmat, amely sok megfigyelsen alapul, nem pedig nhny. Ez nem
ellenttes a ritka modellek kialaktsnak vgyval, amint az az SVM-ekrl
szl rszben lthat: pl. A szkssget gy kaptk meg, hogy csak azokat az
objektumokat vlasztottk ki a szban forg rszterleten, a tbbi kivlasztsi
objektumot folyamat.

A robusztus mdszerek ebben a szakaszban szlesebb krben alkalmazhat,


mint kiugr rtkek megllaptsa: fel lehet hasznlni, mint robosztus
bvtmny becslsek az osztlyozs kation s regresszis mdszerekkel.
Robusztus LDA (lineris diszkriminancia analzis) kaphatunk, pldul
hasznlatval robusztus becslsvel az egyestett kovariancia mtrix;
robusztus QDA (kvadratikus) robusztus kovariancik minden osztlyban. PCR
lehet Robusti ed tbbflekppen, pldul alkalmazsval SVD, hogy egy
robusztus kovariancia mtrixot becsls; egy alternatv kpzdik regresszljuk
robusztus pontszmok, pldul a ROBPCA algoritmus. Lehet akr
helyettestheti a legkisebb ngyzetes regresszi robusztus regresszis
mdszerekkel, pldul legalbb dsztve ngyzetek [139]. Robusztus
vltozatnak (vltozat :-) ) PLS regresszi is ltezik [143144]. Ezek a
robusztus vltozatnak osztlyozs kation s regresszis mdszerekkel
megosztani a nagy elnye, hogy (az egyik nyugodtan hagyja az sszes trgyat)
az ember nyugodtan benn hagyhatja a modellben a kiugrnak tn adatokat is,
nhny atipikus (kiugr) mrsi adat nem befolysolja jelentsen a
vgeredmnyt, (br nhny kzlk lehet gyanja kiugr: az elemzs nem
befolysolja csak pr atipikus szrevteleit.) s viszont az a krds, kiugr
krl: ha ers s klasszikus elemzseket ad az azonos vagy hasonl
eredmnyt, akkor arra a kvetkeztetsre juthatunk, hogy nincsenek
(befolysos) kiugr adat.

R sok csomagot tartalmaz, amelyek robusztus statisztikkat tartalmaznak, a


legfontosabb valsznleg robustbase. A CRAN feladatmegtekintse szerint a
rendelkezsre ll csomagok tovbbi egyszerstsre trekszenek, a
robustbase-t, mint az alapvet statisztikai csomagot, s mg tbb specilis
csomagot ptenek fel, mint pldul a rrcov-csomagok esetben.

11.2 Ortogonlis Jel korrekci s OPLS


Az ortogonlis jelek korrekcijt (OSC) elszr Wold s munkatrsai javasoltk
azzal a cllal, hogy (eltvoltsk az X-bl ortogonlis Y-ra vonatkoz
informcikat) eltvoltsk az X-mtrixbl az Y-ra ortogonlis (magyarul
merleges) informcikat (oszlopvektorokat) . Szmos klnbz algoritmust
javasoltak a szakirodalomban (tbb kzlk rvid sszefoglalsa jelent meg).
Ennek a tanulmnynak az a kvetkeztetse, hogy az OSC lnyegben nem
javtja a becslsi minsget nmagban, hanem inkbb takarkos modelleket
eredmnyez, amelyeket knnyebben rtelmezhet. Ezenkvl meg lehet
vizsglni az X-nek azon rszt, amelyet a modellezs eltt eltvoltottak, s
informcit szolgltathat a mrsi minsg javtsrl

Pldaknt megmutatjuk az OSC egyik formjt, amelyet ortogonlis vettsnek


neveznek a ltens struktrkhoz (OPLS, [147]), amint azt a [146] sszefoglalja.
A w slyok s a kezdeti PLS-modell p-terhelseinek felhasznlsval a fgg
vltozhoz ortogonlis vltozatot kapunk s levonjuk az eredeti adatmtrixbl:

A korriglt Xc mtrixot (Ha minden igaz, akkor az Y-ra merleges


oszlopvektor(ok) lenullzdtak, de t kne nznem a PLS-modelt...) szablyos
PLS modellben alkalmazzuk. Kvnt esetben tbb ortogonlis komponenst lehet
kivonni (azt lltjk, hogy az egyvltozs Y esetben csak egy PLS komponens
szksges a vgs modellben.

Lssuk, hogyan mkdik ez a gzolaj mintk tekintetben. A 8.3. bra alapjn


arra a kvetkeztetsre jutottunk, hogy a gzolaj adatkeret pratlan soraibl ll
teszt kszlet alapjn hrom PLS komponensre van szksg. A dolgok
knnyebb ttelhez a spektrumok kzppontostst csak a kpzsi adatok
tlaga alapjn kezdjk. Az OSC korriglt mtrixot az albbi mdon lltjuk el:

Szval korriglt mtrixot lltunk most el:

pls-t betlteni

data(gasoline, package = "pls")

odd <- seq(1, length(gasoline$octane), by = 2)

even <- seq(2, length(gasoline$octane), by = 2)

gasoline$NIR <- scale(gasoline$NIR, scale = FALSE,

center = colMeans(gasoline$NIR[odd,]))

Xtr <- gasoline$NIR[odd,]

gasoline.pls <- plsr(octane ~ ., data = gasoline,

ncomp = 5, subset = odd,

validation = "LOO")

ww <- gasoline.pls$loading.weights[,1]

pp <- gasoline.pls$loadings[,1]

w.ortho <- pp - crossprod(ww, pp)/crossprod(ww) * ww

t.ortho <- Xtr %*% w.ortho

p.ortho <- crossprod(Xtr, t.ortho) / c(crossprod(t.ortho))

Xcorr <- Xtr - tcrossprod(t.ortho, p.ortho)

Ezt kveten egy j PLS modellt hozunk ltre a korriglt adatmtrix


alkalmazsval

gasoline.osc1 <- data.frame(octane = gasoline$octane[odd],

NIR = Xcorr)

gasoline.opls1 <- plsr(octane ~ ., data = gasoline.osc1,

ncomp = 5, validation = "LOO")


Egy msodik OSC komponens eltvoltsa ugyanolyan mdon trtnik:

pp2 <- gasoline.opls1$loadings[,1]

w.ortho2 <- pp2 - crossprod(ww, pp2)/crossprod(ww) * ww

t.ortho2 <- Xcorr %*% w.ortho2

p.ortho2 <- crossprod(Xcorr, t.ortho2) / c(crossprod(t.ortho2))

Xcorr2 <- Xcorr - tcrossprod(t.ortho2, p.ortho2)

gasoline.osc2 <- data.frame(octane = gasoline$octane[odd],

NIR = Xcorr2)

gasoline.opls2 <- plsr(octane ~ ., data = gasoline.osc2,

ncomp = 5, validation = "LOO")

Jegyezzk meg, hogy a ww vektor minden eltvoltott komponens esetben


megegyezik [147].

Most mr sszehasonlthatjuk a norml PLS modell rvnyessgi grbit, a PLS


modellel, amelyen egy ortogonlis komponens el van tvoltva, s a PLS
modellel amelybl kt komponens van eltvoltva:

plot(gasoline.pls, "validation", estimate = "CV",

ylim = c(0.2, 1.5),

main = "Gasoline training data (validation)")

lines(0:5, c(RMSEP(gasoline.opls1, estimate = "CV"))$val,

col = 2, lty = 2)

lines(0:5, c(RMSEP(gasoline.opls2, estimate = "CV"))$val,

col = 4, lty = 4)

legend("topright", lty = c(1,2,4), col = c(1,2,4),

legend = c("PLS", "OPLS: 1 OSC component",

"OPLS: 2 OSC components"))


A gzolaj adatok keresztvalidlsi eredmnyei (trninghalmazon csak): az egy
vagy kt ortogonlis komponens eltvoltsa tbb takarkos PLS modellhez
vezet.

Az eredmny az brn lthat. Nyilvnval, hogy a kt OPLS modell legjobb


becslsi hibi sszehasonlthatk (mg kiss jobbak) az eredeti modell
hibjval hrom sszetevvel, s az optimlis rtkeket kevesebb latens
vltozval rik el.

A becslshez az j adatokat ugyangy kell lecskkenteni, mint a training


adatok; Azaz le kell vonni az ortogonlis komponenseket, mieltt bemutatnk
az adatokat a vgs PLS modellhez.

Xtst <- gasoline$NIR[even,]


t.tst <- Xtst %*% w.ortho
p.tst <- crossprod(Xtst, t.tst) / c(crossprod(t.tst))
Xtst.osc1 <- Xtst - tcrossprod(t.tst, p.tst)
gasoline.opls1.pred <- predict(gasoline.opls1,
newdata = Xtst.osc1,
ncomp = 2)
Az OPLS modell kt OSC-komponenssel val eltvoltsnak becslsei
ugyangy kszlnek:

t.tst2 <- Xtst.osc1 %*% w.ortho2


p.tst2 <- crossprod(Xtst.osc1, t.tst2) / c(crossprod(t.tst2))
Xtst.osc2 <- Xtst.osc1 - tcrossprod(t.tst2, p.tst2)
gasoline.opls2.pred <- predict(gasoline.opls2,
newdata = Xtst.osc2,
ncomp = 1)

Most sszehasonlthatjuk a klnbz PLS modellek RMSEP rtkt


RMSEP(gasoline.pls, newdata = gasoline[even,],
ncomp = 3, intercept = FALSE)

0,2093

itt kell berni az rms-t :

rms <- function(x, y) sqrt(mean((x-y)^2))

rms(gasoline$octane[even], gasoline.opls1.pred)
0.3790201

rms(gasoline$octane[even], gasoline.opls2.pred)
0.4488759

Br a keresztvalidlsi hibk nem nvekednek, a lthatatlan vizsglati


adatok??? elrejelzse romlik egy kicsit Akkor j sznt vlasztok! Nem
lthatatlan adatok ezek, hanem a tesztel adatok. A kt j modell (olps1 s
olps2) amelyek csak egy komponensbl akarjk megjsolni az oktnszmot egy
"kicsit" szarabbak, mint a rgi 3 komponens. Ezrt ntt meg 0,2093-rl 0,379-
re s 0,4488759-re a jsls hibja. A "Quite a bit" magyarul azt jelenti, hogy
"nem is kicsit".

Viszont, ahogy azt korbban rtad, a keresztvalidlsi hibk (ezeket a tant,


trning-adatsoron mrtk) csakugyan nem nvekedtek meg. Ez lthat az 11.3.
brbl is, ahol mindhrom mdszernl az RMSep olyan 0,3-ra cskken.

De ez kit izgat? az a fontos, hogy a tesztel adatsort jl jsolja meg. Abban


viszont nem volt olyan j a kt j model.

11.3 Discrimination with Fat Data Matrices


Fat"adatmtrixok vagy olyan adathalmazok, amelyek sokkal tbb vltozt
tartalmaznak, mint objektumok, inkbb (ahelyett, hogy) gyakrabbak, minthogy
kivtelt jelentenek a termszettudomnyokban. Br ez azt jelenti, hogy sok
informci ll rendelkezsre minden egyes minta esetben, a gyakorlatban azt
is jelenti, hogy Sok olyan szm ll rendelkezsre, amelyek nem mondanak
semmit a minta szempontjbl klnsen rdekesnek (ezek lehetnek tiszta
zajok, de valdi jelek is, amelyek nem kapcsoldnak a szban forg kutatsi
krdshez. Egy msik problma az, hogy a vltozk kztt gyakran mutatkozik
sszefggs. Az ilyen helyzetekben a mintk osztlyai kztti lnyeges
klnbsgeket nehz megtallni: a diszkriminancia analzis rendszeres
forminak becslshez szksges paramterek szma messze meghaladja a
rendelkezsre ll fggetlen mintk szmt.
Plda erre a prosztata adatkszlet, amely tbb mint 10 000 vltozt s csak
327 mintt tartalmaz. Tbbet is kikszblhetnnk anlkl, hogy elvesztennk
az informcikat, s eltvoltannk azokat a vltozkat is, amelyek \
egyrtelmen "nem kapcsoldnak a fgg vltozhoz (amennyire kpesek
lennnk felismerni ezeket). (Itt arra cloz, hogy minden emberhez tartozik
baromira sok adat (kromatogrammok, tmegspektrumok). Viszont ebbl az
adattmegbl csak nhny fontos (pl kromatogramon van-e cscs 2,3 percnl,
s ott mit mr az MS) mineknk. A tbbi adat nem jelent neknk fontos inft.

Az OPLS megkzelts az elz szakaszbl. Alternatvt vltoz szelekcis


technikkkal, pldul a 10. fejezetben lert mdszerekkel alaktanak ki, de ezek
ltalban olyan pontos hibabeszmolkra tmaszkodnak, amelyeket nehz
elkapni alacsony szm mintval.

A mintk ugyanolyan alacsony szma is arra knyszerti a statisztikai


modelleket, hogy kevs paramterk legyen: a fatmtrixok csak ritkn
(nagyon ritkn) lakott nagydimenzis terek, s csak a legegyszerbb
lehetsges modelleknek lehetnek eslyei a prediktv teljestmny
megszerzsre. A legegyszerbb eset a lineris diszkriminancia analzis, de az
egyenletek kzvetlen kiszmtsa a 7.6 egyenlet mtrix inverzija miatt
lehetetlen (a kovariancia mtrix egyedlll. A szablyozsi megkzeltsek,
mint az RDA, egy megolds; A legalizls szlssges formja, az tls LDA
nagy npszersgnek rvend a mikroarray( chip?? ) igen, amit Cska tant
elemzs terletn. Egy msik gyakran hasznlt stratgia az informci
tmrtse sokkal kisebb szm vltozban, ltalban az eredeti kszlet
lineris kombinciiban, s olyan egyszer mdszerek vgrehajtsval, mint az
LDA az j, kicsi adatmtrixon. Kt megkzelts npszer: a PCDA s a PLSDA

11.3.1 PCDA
Az egyik mdja annak, hogy az adatokat egy fatmtrixba tmrtsk,
knnyebb elemzsre, a PCA. Ezt kveten az LDA-t az eredmnyekre (az
eredmnyt gyakran PCDA vagy PCLDA-nak nevezzk). A prosztata adatai j
plda: a vltozk szma messze meghaladja a mintk szmt, annak ellenre,
hogy ez a szm abszolt rtkben nem alacsony. Ismt megprblunk
megklnbztetni a kontroll mintkat s daganatosmintkat, ezrt a hrom
osztly kzl csak kettt tekintnk. Most viszont minden vltozt hasznlunk
{az SVM-ek esetben, s ennek nvelse nagy memriaignyeket
eredmnyezett volna, de a jelenlegi eljrs sokkal hatkonyabb. Az SVD-t a
prosztata adatok nem-bph mintinak crossproduct mtrixn, a 48. oldalon
bemutatott eljrshoz hasonlan, pontokat s terhelseket kapunk. Az els 16
PC-k az X mtrix variancijnak csak 70% -t fedik le, nem tl meglep a
vltozk szmnak figyelembevtelvel. Meg kell nznnk a pontszmokat, az
egyrtelmsg rdekben, amely az els t komponensekre korltozdik:

data(prostate, package = "ChemometricsWithRData")


prost <- prostate[prostate.type != "bph",]
prost.type <- factor(prostate.type[prostate.type != "bph"])
prost.tcp <- tcrossprod(scale(prost))
prost.svd <- svd(prost.tcp)
prost.scores <- prost.svd$u %*% diag(sqrt(prost.svd$d))
pairs(prost.scores[,1:5], pch = as.integer(prost.type),
col = as.integer(prost.type),
labels = paste("PC", 1:5))

Az eredmny a 11.4. brn lthat. Noha rdekes struktra lthat, nincs


nyilvnval sztvlaszts a rajzok brmelyiknl. Az adatok tdimenzis
brzolsa a diszkriminancia-analzis brmely formjra hasznlhat;
Ragaszkodni fogunk az LDA-hoz, s csak azrt, hogy megtapasztalhassuk, amit
vrhatunk, t PC-t fogunk hasznlni. A naiv, s ahogy ksbb ltni fogjuk, a
helytelen megkzelts a kvetkez lenne:

##INCORRECT

prost.pcda5 <- lda(prost.type ~ prost.scores[,1:5], CV = TRUE) ## INCORRECT


Ezt az ##Incorrect-et itt nem kell belernod az R-be, de nem baj, ha belertad,
mert a #utni jvket kihagyja az rtelmez...
table(prost.type, prost.pcda5$class)

Az egyszeri hatllyal vgzett keresztvalidls az esetek tbb mint 80% -ban helyes elrejelzshez
vezet, jobb, mint amit a 11.4. bra alapjn felttelezhettnk. Nem szabad megfeledkeznnk
azonban arrl, hogy a rk osztly tbb mint ktszerese a kontroll osztlynak, gy a rk nem tl okos,
vletlenszer osztlyozsa valamennyi mintra 65% feletti sikeressghez vezetne. Megjegyezzk,
hogy a predikcis hibk enyhn kiegyenslyozatlanok: tbb kontrollmintt rkk becslnek, mint
fordtva. Ez az eredmny a lda funkci alaprtelmezett eltti eredmnye, ami arnyos a kpzsi
kszlet osztlykpzsvel.

Amint mr emltettk, a fenti eljrs nem megfelel: a hiba becsls optimistn elfogult, mert a PCA
lpst (belertve az tlagcentrlst s a sklzst) nem ptettk be a keresztvalidlsba. A baloldali
Nem baloldali, hanem kihagyott :-)minta (ezek a tesztelsre fenntartott mintk) mg ma is hatssal
van a klasszifikcis modellre a PC-khez val hozzjrulsa rvn, mg a helyes mdon a
keresztvalidlsnak tartalmaznia kell a PCA-t. Ezt egy explicit keresztvalidls hurok hasznlatval
lehet elvgezni, a mintk egy rsznek elhagysval, a PCA elvgzsvel s az LDA modell
kiptsvel, de egy egyszerbb megkzelts az, ha a klasszifikcit regresszis problmaknt
rtelmezik, s a pcr funkcit hasznljk, a beptett - keresztezdsi lehetsgek. Amg itt vagyunk,
el kell klntennk a kpzsi adatokat a vizsglati adatoktl, hogy valamifle becslst kapjunk a
becslsi hibra, valamint a latens vltozk optimlis szmra.
Itt lthat:

odd <- seq(1, length(prost.type), by = 2)


even <- seq(2, length(prost.type), by = 2)
prost.df <- data.frame(class = as.integer(prost.type),
msdata = I(prost))
prost.pcr <- pcr(class ~ msdata, ncomp = 16,
data = prost.df, subset = odd,
validation = "CV", scale = TRUE)
validationplot(prost.pcr, estimate = "CV")

Ebben az esetben a hitelests (alaprtelmezs szerint tzszeres keresztvalidls) helyesen trtnik:


A sklzst s a PCA-t csak akkor hajtjk vgre, ha a out-of-bag mintkat eltvoltjk a training
adatokbl. Ez a 11.5 brn a bal oldali rajzhoz vezet (az vatos szemly taln hat PC-t vlaszt ki, de
mivel a mintk szma meglehetsen nagy, akkor akr tizenkt PC-t is megfontolhat. Eredmnyei
eltrhetnek a keresztvalidcis szegmensek kivlasztsnak vletlenszersge miatt.
Vegyk szre, hogy az itt bemutatott RMSEP intzkeds (mrs/szmts itt a
measure) nem egszen rdekes: a klasszifikcis mtrix 0 s 1 idelrtkbl
val kitolds (eltrs) helyett meg kell vizsglnunk a helyes osztlyozsok
szmt.

err.rate <- function(x, y) sum(x != y)/length(x)


prost.trn <- predict(prost.pcr)
prost.trn.cl <- round(prost.trn[,1,])
prost.trn.err <- apply(prost.trn.cl, 2,
err.rate, prost.df$class[odd])
plot(prost.trn.err, type = "l", col = 2,
xlab = " PCs", ylab = "Misclassif. rate")

Az eredmny a 11.5 brn lthat jobb brn lthat. Br a bal oldali brn
szerepl RMS rtkek (magasabbak a PC-k szmval) nvekednek, ahogy a
fkomponensek szma n, a hibs szmok szma nem. A kpzsi adatok
sszer teljestmnyt mutatnak, egy hatszm, hatrtk hiba esetn pedig
csak 15% alatt hat PC-k figyelembevtelvel.
Termszetesen ugyanezt tehetjk a tesztkszlethez is:

prost.tst <- predict(prost.pcr, newdata = prost.df[even,])


prost.tst.cl <- round(prost.tst[,1,])
prost.tst.err <- apply(prost.tst.cl, 2,
err.rate, prost.df$class[even])
lines(prost.tst.err, lty = 2)
legend("topright", legend = c("LOO training set", "test set"),
lty = c(1,2), col = 2:1)
Tekintve ezt a keresztvalidlsi grbt, az optimlis rtk krlbell tizenegy
PC-knt jelenik meg. J ltni, hogy a keresztvalidlsi becslsek meglehetsen
kzel llnak a (tesztelt eredmnyekhez) a tesztel adatsorokon kapott
eredmnyekhez: ez azt jelzi, hogy nincs overfitting(tlzs) Inkbb
tlillesztsnek mondjk. Nyilvnval, hogy az optimlis PC-k kivlasztsakor
nem szabad a (vizsglati adatok) tesztadatok eredmnyeit megvizsglni (Az
optimlis fkomponensszm meghatrozshoz csak a tant adatsort szabad
felhasznlni! A teszt adatok azt mutatjk, hogy tizenegy szmtgppel a
vrhat osztlyozsi hiba krlbell 12%.

E megkzelts nagy elnye, hogy kzvetlenl alkalmazhat a tbblpcss


(Nem tbblpcss a multiclass, inkbb olyan problma, ahol tbbfajta adatunk
van, vektor, mtrix...) problmkra. A PCR-alap megvalstsban csak az
osztlyvektor osztly-tagsgi mtrixba kell konvertlni, osztlyonknt egy
oszlopot, s futtatni az algoritmust:

betlteni kohonent

prostate.clmat <- classvec2classmat(prostate.type)


prostate.df <- data.frame(class = I(prostate.clmat),
msdata = I(prostate))
prostate.pcr <- pcr(class ~ msdata, ncomp = 16,
data = prostate.df, subset = odd,
validation = "CV", scale = TRUE)

Ismt meg kell vltoztatnunk az elrejelzett rtkeket a PCR kereszvalidlsi


osztlyokba, s ssze kell szmolnunk a hibs (osztlyozsok) besorolsok
szmt, hogy az optimlis szm komponenseket kivlasszuk:

predictions.loo <-
sapply(1:16, function(i, arr) classmat2classvec(arr[,,i]),
prostate.pcr$validation$pred)
loo.err <- apply(predictions.loo, 2, err.rate,
prostate.type[odd])
plot(loo.err, type = "l", main = "PCDA", col = "red",
ylim = c(.2, max(loo.err)),
xlab = "# PCs", ylab = "Misclassif. rate")

Ez a 11.6 brn lthat szrke egyenes vonalat eredmnyezi (a besorolsi hiba elg magas az
sszetevk sszes szmnl. Taln nyolc komponenst lehet legkevsb rossz modellknt
felvenni (16-tal mgkevesebb lenne a hiba, de 10-nl kevesebb fkomponenst akart a szerz
kivlasztani az egyszersg s a processzor kedvrt). A vizsglati eredmnyek teljes
mrtkben analg mdon rhetk el, s ugyanazon a telken fekete szaggatott vonalak(knt)
jelennek meg:

prostate.pcrpred <-
predict(prostate.pcr, new = prostate.df[even,])
predictions.pcrtest <-
sapply(1:16, function(i, arr) classmat2classvec(arr[,,i]),
prostate.pcrpred)
lines(apply(predictions.pcrtest, 2, err.rate,
prostate.type[even]),
type = "l", lty = 2)

legend("bottomleft", legend = c("LOO training set", "test set"),


lty = c(1,2), col = 2:1)
Megkrdezhetjk magunkat, mi a baj:

table(prostate.type[even], predictions.pcrtest[,8])

Jelentsen zavaros a pca s a bph osztlyok kztt: szinte az sszes bph


objektum pca-nak van besorolva. MAGYARUL: szinte az sszes jindulat
prosztatanagyobbodsost rkosnak hitte a modell
Az (ellenrzsek) control a kontrollcsoportot jelenti, a teljesen egszsges
embereket viszonylag jl vannak elklntve

11.3.2 PLSDA ( rszleges legkisebb ngyzetek mdszervel vgzett


diszkriminancia-elemzs)

Gyakran szmoltak be arrl, hogy ez a mdszer jl mkdik a gyakorlatban, ugyanakkor van egy
( ismert) hibja: nincs ok felttelezni azt, hogy az osztly diszkriminci szempontjbl relevns
informcikat az els fkomponensek tartalmazzk.. Mivel a PLS figyelembe veszi a fgg
vltozt, amikor ltens vltozk vannak, ez logikus alternatva. Az irodalomban ezt a
diszkriminancia analzisnek ezt a formjt, ltalban a kdolt osztlyvltozkra val kzvetlen
regresszi formjban, PLSDA-nak nevezik [148].

A prosztata adatokra a kvetkez:

prostate.pls <- plsr(class ~ msdata, ncomp = 16,


data = prostate.df, subset = odd,
validation = "CV", scale = TRUE)
predictions.loo <-
sapply(1:16, function(i, arr) classmat2classvec(arr[,,i]),
prostate.pls$validation$pred)
loo.err <- apply(predictions.loo, 2, err.rate, prostate.type[odd])
prostate.plspred <- predict(prostate.pls, new = prostate.df[even,])
predictions.plstest <-
sapply(1:16, function(i, arr) classmat2classvec(arr[,,i]),
prostate.plspred)
table(prostate.type[even], predictions.plstest[,6])

Az elz oldalakon a PCDA-gyben teljesen analg kdot hasznlva, a 11.6 brn jobbra tallunk.
A vrt mdon kevesebb komponensre van szksg az optimlis eredmnyek elrshez {hat a
PLSDA esetben lenne kivlasztva, mg a PCR-nek nyolcra lenne szksge. A PLSDA hiba rtkei
lnyegesen alacsonyabbak, mint a PCR-nl, mind a LOO-hatrokon, mind a vizsglati adatok
esetben: mr egy PLS komponenssel a vizsglati adatok elrejelzse jobb, mint a PCDA-modell
nyolc. Hat sszetevvel, A tesztkszlet PLSDA elrejelzse gy nz ki:...

Nyilvnval, hogy a bph s pca osztlyok kztti sszetveszts jelentsen cskkent.

Egy alternatva egy klasszikus LDA elvgzse a PLS pontszmokon {tbb papron (pldul [148,
149, 150]), amelyrl azt lltjk, hogy a minsg jobb. Ha az els pr PC-n vgzett LDA teljes
mrtkben analg a PCR-re az osztlymtrixon (legalbb egyenl osztlymretek esetn), ez nem
gy van a PLS-ben, mivel az osztlyismereteket a ltens vltozkban hasznljk. Az egyik ezrt
szmthat bizonyos eltrsekre. Elszr ki kell szmolnunk a tesztkszlet pontszmait, amelyet a
(sklzott) vizsglati adatok utlagos szorzsval vgznk a PLS objektum vetleti mtrixval:

Xtst <- scale(prostate[even,],


center = colMeans(prostate[odd,]),
scale = apply(prostate[odd,], 2, sd))
tst.scores <- Xtst %*% prostate.pls$projection

Ezt kveten LDA-modellt pthetnk a training set pontszmaira, amelyek kzvetlenl elrhetk a
pontszm-kivon funkcival, s hasznlhatjuk ezt a modellt, hogy elrejelzseket tegynk a teszt
kszletre:

prostate.ldapls <- lda(scores(prostate.pls)[,1:6],


prostate.type[odd])
table(prostate.type[even],
predict(prostate.ldapls, new = tst.scores[,1:6])$class)

A kzvetlen PLSDA mdszerhez kpest kt tovbbi hiba keletkezik.


Legalbbis ebben az esetben a klnbsgek kicsiek

A Word of Warning_ egy kis figyelmeztets

Mivel jobban sszpontost a fgg vltoz informciira, a PLS-t mohbb algoritmusnak


nevezhetjk, mint a PCR. Sok esetben ez jobb eredmnyt eredmnyez a PLS-hez (ugyanannyi
komponenssel, mint a PCR modell), de nagyobb kockzatot jelent a tlterhelsre. A kvetkez
plda ezt teszi vilgoss: felttelezzk, hogy vletlenszer adatokat generlunk egy normlis
eloszlsbl, s vletlenszeren hozzrendelnk minden mintt a kt lehetsges osztly egyikhez:

nvar <- 2000


nobj <- 40
RandX <- matrix(rnorm(nobj*nvar), nrow = nobj)
RandY <- sample(c(0, 1), nobj, replace = TRUE)

Ezutn a RandX vltoz informciit kt ltens vltozba tmrtjk, gy az LDA


alkalmazhat. Mind a PCA1-t, mind a PLS-t hasznljuk. Az eredmnyek nagyon
rdekesek:

Rand.pcr <- pcr(RandY ~ RandX, ncomp = 2)


Rand.ldapcr <- lda(RandY ~ scores(Rand.pcr), CV = TRUE)
table(RandY, Rand.ldapcr$class)

Rand.pls <- plsr(RandY ~ RandX, ncomp = 2)


Rand.ldapls <- lda(RandY ~ scores(Rand.pls), CV = TRUE)
table(RandY, Rand.ldapls$class)

Ha a PCA tmrts olyan eredmnyekhez vezet, amelyek meglehetsen kzel


llnak a vrt 50-50 elrejelzshez, a PLS-LDA tkletes elrejelzshez vezet. A
vletlenszer adatok esetben ez nem pontosan az, amit szeretnnk! Vegyk
szre, hogy a ltens vltozk szmnak optimalizlst nem vgeztk el
{ebben az esetben, mert kt rejtett vltoz kivlasztsa mr elgg bajba
kerl. A regresszis modellek validlsi diagramjai azt mutattk volna, hogy
mind a PCR, mind a PLS esetekben baj van (a nulla ltens vltozk
optimlisnak tnnek). A trtnet erklcsi ismeretei mr most is ismertek:
klnsen olyan esetekben, amikor az objektumok szmt s a vltozk
szmt alacsony arnyban alkalmazzk, nagyon vatosnak kell lennnk ......

NA EDDIG AZ N RSZEM!!!!!

11.4 Calibration Transfer

Chemometrics with R, s pls betltse ( pls elvileg mr bevan)


Alapszituci: Van a laborban egy nagy/pontos/drga spektrofotomter, meg
egy olcs/knny/hordozhat. Azt akarjuk, hogy a drga spektrofotomterrel
kifejlesztett kalibrcis modellt felhasznljuk az olcs mszerrel mrt
ismeretlen mintkon.

Emlkszel az elz flves cikkre? (Ott is egy kalibrcis modellt


ptettnk fel tbbvltozs lineris regresszival, fkomponens regresszival,
s parcilis legkisebb ngyzetessel. Voltak bzaszemek ismert
fehrjetartalommal, s vztartalommal (kjendahl-mdszerrel s elgetssel
dertettk ki ezeket). Aztn megmrtk az infravrs spektrumukat, s ebbl
egy kalibrcis modellt ptettek. Egy mtrixot kaptak, amit ha ksbb az
ismeretlen bzaszemen bizonyos hullmhosszakon mrt IR-reflektancia
rtkekkel beszoroztak, akkor megkaptk a fehrje s a vztartalmt a
bzaszemnek.

Ht itt is ilyesmit akarunk, csak most a regresszis modellptsnl nem


ugyan azt a mszert hasznljuk, mint ksbb az ismeretlen mintk
tesztelsnl.

Ez viszont csak pontatlanul mkdik kzvetlenl. Minden mszer kicsit eltren


rzkeny adott hullmhosszakra.

Valami olyan mdszer kell, ami kikszbli/figyelembe veszi a mszerek kzti


klnbsget is.

Az egyik ilyen mdszer a robusztus-kalibrci. (Nincs kze a robusztus


reggresszzihoz, amirl Niki beszl) Tanknyv nem sokat rt rla...

Amsik ilyen mdszer a kalibrcis-transzfer, avagy: kalibrci-standardizls.


Ez a mdszer akkor is hasznos. amikor a mszer rzkenysge vltozik az idk sorn
(pl CMOS vagy ms flvezets fnydetektorok regszenek) Ezen belll tbb almdszer
van:

direkt standardizls, amikor nhny ismert mintt megmrnk mindkt


eszkzzel, s meghatrozzk azt az F vektort, amivel az egyik mszeren mrt
adatokat talaktja a msik mszern mrtre (Tbbet csak ksbb 243.oldal aljn r
rla a knyv.)

PCR vagy PLS regresszi hasznlata: Ezt trgyalja rszletesen a knyv


egy j adatsoron, ami 654 tabletta IR-spektrumt tartalmazza 600nm-tl 1898nm-ig.

Elszr is csinljunk a tant adatokkal egy PLS modellt (A PLS csomagot be


kell tlteni, ha eddig nem volt betltve, vagy ms gprl tartotok eladst.)

data(shootout)
wl <- seq(600, 1898, by = 2)
indices <- which(wl >= 1100 & wl <= 1700)
nir.training1 <-
data.frame(X = I(shootout$calibrate.1[,indices]),
y = shootout$calibrate.Y[,3])
mod1 <- plsr(y ~ X, data = nir.training1,
ncomp = 5, validation = "LOO")
RMSEP(mod1, estimate = "CV")

A fentibl azt ltjuk, hogy 3 komponens elg (a 4. 5. hozzvtele nem cskkenten le


tlsgosan a modell ltal NEM magyarzott variancit, viszont bonyolultabb,
szmtsignyesebb tenne)

Szval a fenti modell 3 fkomponensbl (ncomp=3) prbljuk megmagyarzni a tesztadatok


alakulst newdata=data.frame... -os sor lltja be hogy most a tesztadatokra fusson le a
modell. Az X= I(shootout$test.1 satbbi sor pedig azt lltja be, hogy az els (drga) kalibrls
mszeren mrt tesztadatokkal trtnjen a tesztels

RMSEP(mod1, estimate = "test", ncomp = 3, intercept = FALSE,


newdata = data.frame(y = shootout$test.Y[,3],
X = I(shootout$test.1[,indices])))

eredmny: 4,974 (Nem sokkal rosszabb, mint a tant adatoknl mrt rtk.----

Nade most nzzk, hogyan teljest a drga kalibrls mszeren felptett


modell akkor, amikor az olcs szllthat mszeren mrt tesztadatokat kell
megjsolnia? (utols X = blabla sor mondta meg az R-nek, hogy most az olcs
mszeren mrt tesztadatokat vlassza ki.

RMSEP(mod1, estimate = "test", ncomp = 3, intercept = FALSE,


newdata = data.frame(y = shootout$test.Y[,3],
X = I(shootout$test.2[,indices])))

eredmny 9,983 Ht igen, ez jval nagyobb meg nem magyarzott RMS(E)


rtk (szrs 152.oldal), mint amilyen az elz. Ennyit ront az, hogy msik
mszert hasznlunk a modellalkotsra s az "les" mrsekre

Ht egyenlre ennyit a PLS-rl, trjnk vissza a direkt standardizsra, s


dertsk ki hogy nz ki az az F mtrix (vagy vektor, ha csak egy minta spektrumt vennnk fel...)
ami az egyik mszer spektrumjait talaktja a msikba:

recal.indices <- 1:5 * 10


F1 <- ginv(shootout$calibrate.2[recal.indices, indices]) %*%
shootout$calibrate.1[recal.indices, indices]
RMSEP(mod1, estimate = "test", ncomp = 3, intercept = FALSE,
newdata = data.frame(y = shootout$test.Y[,3],
X = I(shootout$test.2[,indices] %*% F1)))

RMS(e)-re azt az eredmnyt dobja ki, hogy: 4,485 (Nyilvn azrt nem nulla,
mert nincs a vilgon olyan F mtrix, ami az egyik mszeren mrt rtkekbl
(adott hullmhosszakon mrt elnyelsek) tkletesen kiszmoln a msik
mszeren mrt rtkeket mind az SSZES mintnl. Ha csak 1 db mintnk
lenne akkor a spektrum-mtrixaink helyett spektrum-vektoraink lennnek, s
akkor az F-vektor tkletesen t tudna vinni az egyik spektrumot a msikba.
Ott az RMSE rtke nulla lenne :-)

A kvetkez parancs az F-mtrixunkat "megjelenti". Amit megrajzol, s amit r


a knyv, az tk rtelmetlen nekem. Fordts: A horizontlis (vzszintes) vonalak
az F-mtrix oszlopainak felelnek meg, amik tartalmazzk a szorzfaktorokat,
amikkel az egyik mszeren mrt spektrumokat tviszi a msikba. A
legnagyobb vltozsok (szorzszmok) 1600 s 1700nm kztt vannak. Pont
ott ahol a -klnbz mszeren mrt(?)- regresszis koefficiensek kztt a
legnagyobb eltrsek voltak.

contour(wl[indices], wl[indices], F1)

Mivel a teljes felvett spektrumnak csak kis rsze fontos, ezrt nincs rtelme a
teljes spektrumot (minden hullmhosszt) felhasznlni ahhoz, hogy megjsoljuk
az egyik mszer mrsbl a msik mszert. ((Ht ja, a gzolajosnl is elg
volt nhny hullmhosszat kivlasztani az oktnszm megtippelshez.))

Ez a felismers vezetett a PDS (darabszerinti direkt standardizls)-hoz, ahol


csak nhny (pl) 300nm, 310nm, 320nm-en mrrt adatbl akarjuk megjsolni,
hogy a msik mszer mennyit mrne 310 nm-en. A tanknyv is gy rja hogy
mindig a kzpst jsolja meg. Majd ezekbl a jslsokbl pti fel valahogy az
F mtrixot.
utsz: Ezen mdszerek htrnya, hogy sok-sok elklnlt tbbvltozss
regresszis lpst ignyelnek. Radsuk meg kell hatrozni az "ablakok"
optimlis mrett (az n pldmnl 20nm) s informci-vesztesget (az n
pldmnl ez kicsi, mert csak 3 adatbl jsoltam 1-et.

11.5 Multivariate Curve Resolution


Az MCR (nha ALS-nek MCR-ALS-nek neveznek) egyik clja, hogy az adatmtrixot
lebontsuk gy, hogy az egyes komponensek (mtrix sorvektorai?. oszlopvektorai?,
elemei?) kzvetlenl megfeleltethetek legyenek kmiailag relevns
ismertetjegyeknek (pl spektrumok, koncentrcis profilok). Ellenttben a PCA-val
(fkomponens analzis) itt nincs megkts az ortogonalitsra (merlegessgre). Ennek
viszont ra van. A PCA-nl ugyanis pp a merlegessgi megkts garantlja, hogy
csak 1 lehetsges megolds van ((Magyarul a sajtrtkek s a hozzjuk tartoz
egysgnyi hossz (a hosszra vonatkoz felttel is kell mg, mert egybknt egy sajtrtkhez vgtelen db
klnbz hossz, de azonos irny sajtvektor tartozik) sajtvektorok egyrtelmen
meghatrozhatak a PCA-nl)) Viszont az MCR-nl nincs egyrtelm megolds! Ugyan
ahhoz a problmhoz egy raks klnbz MCR-megolds is tartozhat

Elnye viszont az ortogonalitsi-megkts hinynak az, hogy az MCR-nl az


adatmtrixbl kihmozhatjuk bizonyos kmiailag is rtelmes adatokat (pl
spektrumokat) Ez az MCR clja.

Kmiai reakcik nyomonkvetse valamilyen spektroszkpis eszkzzel


klasszikusan olyan terlet, ahol az MCR-t alkalmazzk. A reakci sorn a kiindulsi
anyagok koncentrcija lecskken, a termkek n (naht, mik vannak...) , az
intermedierek eleinte n, aztn lecskken (meg nha oszcilll...) Jelen vannak olyan
komponensek, amelyek vrhatak (pl kiindulsi anyag, ftermk(ek)), DE jelen
lehetnek olyan anyagok is, amelyekrl nem is gondoltuk volna hogy ott vannak, s a
spektrumukat sem ismerjk.

Msik alkalmazsi terlete az MCR-nek a HPLC-UV analzis. Ott sem biztos, hogy
a valamelyik idpillanatban felvett spektrumot tnyleg egy anyag hozza ltre (tiszta
spektrum), simn lehet, hogy kt -egymstl el nem vlasztott- anyag spektrumjnak
(koncentrcijukkal slyozott) sszegt ltjul.

pp erre plda a bdata adatszett, amely 73 hullmhosszon 40 idpillanatban


felvett UV-Vis spektrumot tartalaz. Kt adatmtrix is van a szettben, de most csak az
elsvel foglalkozunk. A HPLC-be egy hrom komponens mintt tettnk: diazion, etil-
paration, 3-at nem rja (lehet, az az oldszer, s compounds alatt a fizkmes
komponens szt rtette)
data(bdata)
X <- bdata$d1
persp(X, phi = 20, theta = 34, expand = .5,
xlab = "Time", ylab = "Wavelength")

A fenti kd bersa utn ezt kaptuk. A cl az, hogy a mrt hullmhosszakbl


kibogozzuk a diazion, az etil-paration ismert (tiszta) spektrumait.

11.5.1. Elmlet

Az algoritmusnak -idelis esetben- csak a kvetkez informcikra van


szksge:

hny darab komponens van a mintban (mrmint sszesen, amit a HPLC-


be injektltunk)

S az albbi kett kzl valamelyik

megfelel kezdeti becsls a komponensek koncentrciprofiljrl:


Teht hogy a klnbz idpillanatokban melyik komponensbl
mennyi lehet a detektor celljban (lnyegben egy kromatogram
kell)

A komponensek tiszta spektruma


Tipikusan az adatmtrix az elegy (hiszen nincs felttlen alapvonali elvlaszts)
spektrumt tartalmazza sok-sok idpontban.

Ezt az (X) adatmtrixot a kvetkez kppen lehet felbontani:

X = C*ST + E , ahol: (* a szorzs)

C-mtrix (elvileg!) az anyagok koncentrci-profilt tartalmazza (megmondja,


hogy az adott anyagbl mikor mennyi tartzkodik a detektornl). Lnyegben
ez most egy 40-szer 3-mas mtrix (3 anyag 40 idpillanat) Az elejn mg
egyetlen anyag sem jutott el a detektorig, teht mindhrom oszlop els jpr
eleme nulla. Aztn elkezd nni az -llfzison legkevsb megtapad-
komponens koncentrcija, elr egy maximumot, s utna cskkennek az
oszlopban tallhat rtkek. (kzben a tbbi komponens is szp lassan eljut
az oszlopig). A mrs vgre mr remlhetleg lejtt az oszloprl az sszes
komponens -> oszlopok aljn is nullk vannak...

S-mtix a anyagok elvileg(!) tiszta spektrumt (nuku szennyezds mellet ilyen


a spektruma) tartalmazza (A kpletben a transzponlja van)

Majd ksbb rok arrl mirt csak elvileg. (De a bevezetben mr


emltettem, hogy sajnos nem csak egy db helyes megoldst kp ki a modell,
hanem egy raks lehetsgeset.

Az E-mtrix a hiba-mrtix. Minden mrsben van egy kis hiba (pl valamelyik
idpillanatban, a szomszd szobban a egy bekapcsol hajszrt
feszltsgingadozst okozott, s a mszer tpja nem tudta korrignli azt) .
Nyilvnval ezrt, hogy nem tudja a C*ST tkletesen reproduklni az X-et.

Szval bvebben az (elvileg): Mivel nincs megkts az ortogonalitsra, ezrt


ltezik(lteznek) olyan R-forgatmtrix(ok), amelyekre igaz, hogy:

X=C*ST =C*R-1*R*ST Mivel Rinverz * R = Egysgmtrix, ezrt szabad bell is


szorozni vele, helyes az egyenlet.

Szval, amikor a szmtgp kidob nemek egy C-mtrixot s egy S-mtrixot,


nem tudom, hogy ezek tnyleg az igaziak-e (nagyon valszntlen lenne), vagy
mr el vannak forgatva az R-rel vagy inverzvel.
Sajt filizofls: De szerintem j: (Ugyan nem olvastam mg tovbb, de
logikusnak tnik, hogy nagyon knnyen ki lehet derteni a kapott S-mtrixrl,
"igazi"-e, vagy sem. (s a C mtrix esetben is ki tudjuk zrni azokat,
amelyekben negatv rtkek vannak) sszehasonltjuk a kapott S mtrixot az
anyagok tiszta tanknyvi spektrumval felrt igazi S mtrix-szal (3 anyag -> 3
oszlop, a sorok meg a klnbz hullmhosszakon mrhet abszorbancikat
tartalmazzk).

Azt fogom ltni az sszahasonltsnl, hogy A szmtgp ltal kidobott S-


mtrixbl akkor kapom meg az igazi S mtrixot, ha azt valami R-mtrix-szal
megszorzom. Sszmolt*R = Sigazi Naht akkor ballrl beszorozva mindkt oldalt az
S-szmtott mtrix inverzvel egybl megvan az R forgatmtrixom elemei :-)

Na trjnk vissza a knyvre: A knyv lerja, hogy ez az MCR-mdszer


gyakorlatilag sok-sok tbbvltozs lineris regresszis (legkisebb ngyzetes)
lpst iterl. A korbban -a 11.5.1 rsz felsorolsban- emltett kezdeti becslt
koncentrciprofilbl tbbvltozs regresszival megbecsli az S mtrixot (ez a
spektum-mtrix, algihanem elforgatva). Utna a kaptott S-sel megbecsli a C-
t. Aztn arral az S-et...

Addig folytatja, amg meg nem unja, akarom mondani, amg az E hibamtrix
elemeinek rtke nem lesz elg kicsi

11.5.2 Alkalmas kezdeti becsls megtallsa

Ahogy az az elz rszben kiderlt, a mdszernek kell egy kezdeti becsls C


vagy S mtrixra. Minl jobb a kezdeti becsls, annl gyorsabban vgez a
modell, s annl jobb lesz a vgeredmny. Clszer teht valamilyen eljrst
tallni a legjobb kezdbecsls kivlasztsra.

A legegyszerbb ilyen eljrs az EFA (evolving factor analysis kifejld


faktoranalzis) . A lnyage az, hogy elhagyjuk egy csom sort s oszlopt az X
eredeti adatmtrixnak, gy annak egy almtrixt kapjuk (az efa forrskd els sorbl
derl ki, hogy az X mtrixbl akar csinlni almtrixot, s nem egy becslt C vagy S-bl). Utna megnzzk az

almtrixunk sajtrtkeit, majda kis almtrixunkat elkezdjk jra feltlteni a


kiradrozott sorokkal s oszlopokkal, mikzben folyamatosan kiszmolgatjuk a
mtrix sajtrtkeit.

Ksbb szletett meg az EWFA (ablakos EFA) mdszer, ahol az almtrix nem
kap jabb s jabb sorokat, oszlopokat, hanem "vgigpsztzzk vele az
eredeti mtrixot. Na ez egy kicsit kusza volt, de nem az:
Van egy pl 6*5-os mtrixom. Kivlaszom pl a bal fls sarokban lv 4
elemt(zld):

Aztn tovbbmegyek

Addig folytatoim, amg vgig nem psztztam az egsz mtrixot. Minden egyes
zld kismtrixnak kiszmolom a sajtrtkait, s feljegyzem ket.

Mst nem r az ablakos EFA-rl. A kaptt sajtrtkekkel mr nyilvn ugyan azt


teszi, mint a sima EFA-nl, s arrl szl a kvetkez rsz (remlhetleg)

EVOLVING FACTOR ANALYSIS

Szval vissza az EFA-hoz. rjuk be az albbi kdot:

efa <- function(x, ncomp)


{
nx <- nrow(x)
Tos <- Fros <- matrix(0, nx, ncomp)
for (i in 3:nx)
Tos[i,] <- svd(scale(x[1:i,], scale = FALSE))$d[1:ncomp]
for (i in (nx-2):1)
Fros[i,] <- svd(scale(x[i:nx,], scale = FALSE))$d[1:ncomp]

Combos <- array(c(Tos, Fros[,ncomp:1]), c(nx, ncomp, 2))


list(forward = Tos, backward = Fros,
pure.comp = apply(Combos, c(1,2), min))
}

X <- bdata$d1
X.efa <- efa(X, 3)
matplot(X.efa$forward, type = "l", ylab = "Singular values")

matplot(X.efa$backward, type = "l", ylab = "Singular values")

A kt rajz kt klnbz EFA-mdszert r le. Az egyik az elre tart: a pici


almtrixbl indulunk ki s sorainak, oszlopainak szmt nvelve azt figyeljk,
hogy hogyan alakul a nulla sajtrtkek arnya. (hny db sajtrtke nulla /
sszesen hny dereb sajtrtke van)
Lthat, hogy ha mind a 40 idpillanathoz tartoz sort is visszatesszk
az almtrixunkpa, akkor mr egy teljesen szingulris mtrixot kapunk
(visszakaptuk az eredeti (40*73-mas mret) X mtrixot aminek minden
sajtrtke nullval egyenl.
Azt ltjuk hogy az els vonal krlbell az 5. idpillanattl kezd emelkedni
Ekkor jelenik meg a detektornl az els komponens. s a 20. idpillanatnl jn
le az utols komponens is. (a
msodik valahol 14 krl indult.

A Msik rajzon a backward (htrl) EFA analzis brja van. Ott az eredeti nagy
(40*73-mas) X mtrix sorait s oszlopait kezdik elhagyni, s annak
fggvnyben figyelik a nulls sajtrtkek arnyt. Ez a rajz meg kb azt
mutatja meg, hogy mikor jutott el a detektorhoz az utols csepp is az adott
komponensekbl .

A kt brt egyesthetjk a kvetkez paranccsal:

matplot(X.efa$pure.comp, type = "l", ylab = "", col = 1)

samitezenazbrnltunk,htazfelfoghataCmtrixunkelzetes
becslsnek.Minhahromdarab(kicsitcsnya)egykomponens
kromatogramotraktakvolnaegymsra.HtgytudjaazEFAalgoritmus
megbecslniakezdCmtrixot,amitakorbbanlertMCRitercis
modelltovbbfinomt.

Az EFA mdszeren kvl ms eljrsok is lteznek a C-mtrix (vagy S-mtrix) kezdeti


durva becslsre.Ilyen pl az OPA (ortogonlis projekci-megkts):

OPA { the Orthogonal Projection Approach (S-mtrixot becsli)

Ez a mdszer nem azt nzi, hogy mikor bukkannak el a komponensek az klnbz


hullmhosszakon, hanem azt nzi meg, hogy milyen alak a spektrum.
Ez is hasznos. Amikor ppen megjelenik a detektornl az els leggyorsabb komponens,
akkor a tbbi mg javban az llfzison csrg. Teht amikor ppen megjelenik az
els spektrum, akkor az tisztn a leggyorsabb anyag spektruma. Mris tudjuk az S
mtrix valamelyik oszlopnak (amelyik oszlop tartozik a leggyorsabb komponenshez)
elemeinek arnyt.

(Azt mg nem tudjuk, hogy konkrtan mennyi az els anyag molris extinkcis
koefficiensnek rtke az adott hullmhosszakon, hiszen ehhez tudni kne azt, hogy
mikor pontosan mennyi a koncentrci, de azt mr legalbb igen, hogy pl 325nm-en
ktszer akkora, mint 330nm-en) (ex-has adatok ezek, csak a hasamra csaptam...)

s azt is meg tudjuk figyelni, hogy milyen a leglassabban lejv anyag eltn (idben
cskken) spektruma. Ami kirly, mert az is egy tiszta spektrum! Hiszen a msik kt
anyag mr rg lecsurgott a HPLC-rl.

Na mr van kt spektrumunk (igaz a fggleges tengelyre -extinkcis koefficiensek


tengelyre- mg nem tudunk szmokat rni, mert csak relatv spektrumaink vannak,
de azrt ez sem rossz.)

Magnak az OPA modelnnek az alapgondolata az elbbi szrevteleinkbl ered. Meg


kell keresni -a 40 idpillanat spektrumai kzl- az egymshoz LEGKEVSB
HASONLT 3 spektrumoit, ugyanis ezek lesznek a tiszta anyagok spektrumai.
(Persze, ami idben a kt tiszta spektrum kztt jelenik meg, az egy kevert spektrum.
Az elgyik mg nem csurgott le teljesen, DE a msik mr elrte a detektort.

A legkevsb hasonlat spektrumok (oszlop)vektorai egymssal majdnemk


derkszget zrnak be (ezrt nevezik ortogonlis projekcis megkzeltsnek.

Na ideje kdot ptygni az R-be

opa <- function(x, ncomp)


{
Xref <- colMeans(x)
Xref <- Xref / sqrt(sum(crossprod(Xref))) # scaling

selected <- rep(0, ncomp)


for (i in 1:ncomp) {
Xs <- lapply(1:nrow(x),
function(ii, xx, xref) rbind(xref, xx[ii,]),
x, Xref)
dissims <- sapply(Xs, function(xx) det(tcrossprod(xx)))
selected[i] <- which.max(dissims)
newX <- x[selected[i],]

if (i == 1) {
Xref <- newX / sqrt(crossprod(newX))
} else {
Xref <- rbind(Xref, newX / sqrt(sum(crossprod(newX))))
}
}
dimnames(Xref) <- NULL

list(pure.comp = t(Xref), selected = selected)


}

X.opa <- opa(X, 3)


matplot(X.opa$pure.comp, type = "l", col = 1,
ylab = "response", xlab = "wavelength number")

NINI! Csak nem 3 spektrumot ltok? ---> Megvan az S-mtrix kicsit pontatlan rtke.
Ezt betplljuk az MCR-be, aztn addig iterlgat a gp amg ki nem dob valami
pontosat/vglegeset C-re s S-re

Sok volt mr a duma, kezdjk vgre beptygni annak a MCR-nek is a forrskdjt:

11.5.3 Applying MCR

mcr <- function(x, init, what = c("row", "col"),


convergence = 1e-8, maxit = 50)
{
what <- match.arg(what)
if (what == "col") {
CX <- init
SX <- ginv(CX) %*% x
} else {
SX <- init
CX <- x %*% ginv(SX)
}

rms <- rep(NA, maxit + 1)


rms[1] <- sqrt(mean((x - CX %*% SX)^2))
for (i in 1:maxit) {
CX <- x %*% ginv(SX)
SX <- ginv(CX) %*% x

resids <- x - CX %*% SX


rms[i+1] <- sqrt(mean(resids^2))
if ((rms[i] - rms[i+1]) < convergence) break;
}

list(C = CX, S = SX, resids = resids, rms = rms[!is.na(rms)])


}

Ezzel lefutott a modell a bert forrskd vgl is a kezdeti S mtrixot hasznlta fel. HA
what =="row" -t rtunk vonla az tdik sorba, akkor a kezdeti "C" elcis mtrixot
hasznlta volna fel indtbecslsnek, Igazbl tkmindegy.

Mr csak ki kell rajzoltatni EGYENKNT RD BE:

X.mcr.efa <- mcr(X, X.efa$pure.comp, what = "col")


matplot(X.mcr.efa$C, col = 1, type = "n",
main = "Concentration profiles",
ylab = "Concentration")
matlines(X.efa$pure.comp, type = "l", lty = c(1,2,4),
col = "gray")
matlines(X.mcr.efa$C, type = "l", lty = c(1,2,4), col = 1)

matplot(t(X.mcr.efa$S), col = 1, type = "l", lty = c(1,2,4),


main = "Pure spectra", ylab = "Intensity")
Mit ltunk? Egy gyonyr (pontos) erkeket tartalmaz elcis grafikont (els)
s egy mgszebb spektrumot! Na ilyen nem tudna az a feketebox-szer PCA s
PCR.

Az rms az valami szrs lesz. nem tudom minek a szrst tra ida, de az egyik
az efa a msik az opa mdszerhez val

X.mcr.efa$rms

X.mcr.opa <- mcr(X, t(X.opa$pure.comp), what = "row")


X.mcr.opa$rms

Mr csak az R forgatmtrix kikszblse maradt:

11.5.4 Constraints Knyszer(felttelek)

Mr csak az R forgatmtrix kikszblse maradt

ALS installlni, s be is tlteni

X.als.efa <- als(CList = list(X.efa$pure.comp),


PsiList = list(X), S = matrix(0, 73, 3),
nonnegS = TRUE, nonnegC = TRUE,
optS1st = TRUE, uniC = TRUE)

A fenti az efa-val becslt C-mtrixbl indtott MRC-hez kell


X.als.opa <- als(CList = list(matrix(0, 40, 3)),
PsiList = list(X), S = X.opa$pure.comp,
nonnegS = TRUE, nonnegC = TRUE,
optS1st = FALSE, uniC = TRUE)

Ez meg az opa mdszerrel becslt S-mtrixbl indtott MRC-hez kellett.

Sefa <- sweep(X.als.efa$S, 2,


apply(X.als.efa$S, 2, function(x) sqrt(sum(x^2))),
FUN = "/")
Sopa <- sweep(X.als.opa$S, 2,
apply(X.als.opa$S, 2, function(x) sqrt(sum(x^2))),
FUN = "/")
Cefa <- sweep(X.als.efa$C[[1]], 2,
apply(X.als.efa$C[[1]], 2, function(x) sqrt(sum(x^2))),
FUN = "/")
Copa <- sweep(X.als.opa$C[[1]], 2,
apply(X.als.opa$C[[1]], 2, function(x) sqrt(sum(x^2))),
FUN = "/")

s most jn a rajzols (EFA vgleges spektrum):

matplot(Sefa, type = "n", main = "Pure spectra (EFA)",


ylab = "Intensity")
abline(h = 0, col = "gray")
matlines(Sefa, type = "l", lty = c(1,2,4), col = 3:1)

Aztn az EFA vgleges elcis grafikon

matplot(Cefa, type = "n",


main = "Concentration profiles (EFA)",
ylab = "Concentration")
abline(h = 0, col = "gray")
matlines(Cefa, lty = c(1,2,4), col = 3:1)

s most jhetnek ugyanezek az OPA-val becsltnl


Vgleges spektrum:

matplot(Sopa, type = "n", main = "Pure spectra (OPA)",


ylab = "Intensity")
abline(h = 0, col = "gray")
matlines(Sopa, type = "l", lty = c(1,2,4), col = 3:1)

Vgleges elcis grafikon:

matplot(Copa, type = "n",


main = "Concentration profiles (OPA)",
ylab = "Concentration")
abline(h = 0, col = "gray")
matlines(Copa, lty = c(1,2,4), col = 3:1)

A kt-kt grafikonbl lthat, hogy a MR TNYLEG VGLEGES :-) modellek


baromira hasonltanak, mindegy, hogy C-bl vagy S-bl indultak ki.

11.5.5 Combining Data Sets

C0 <- matrix(0, 40, 3)


X2.als.opa <- als(CList = list(C0, C0),
PsiList = list(bdata$d1, bdata$d2),
S = X.opa$pure.comp,
nonnegS = TRUE, nonnegC = TRUE,
optS1st = FALSE, uniC = TRUE)

resids2 <- X2.als.opa$S[,1:2] - cbind(c(bdata$sp1), c(bdata$sp2))


apply(resids2, 2, function(x) sum(x^2))

resids <- X.als.opa$S[,1:2] - cbind(c(bdata$sp1), c(bdata$sp2))


apply(resids, 2, function(x) sum(x^2))

Das könnte Ihnen auch gefallen