A lineáris modellektől a nemlineáris kevert modellekig R-ben Harnos Andrea Szent István Egyetem, Állatorvostudományi Kar Biomatematika Tanszék <Harnos.Andrea@gmail.com>
Tartalom Bevezetés Modellezés Az általános lineáris modell Általánosított lineáris modellek Additív modellek Kevert modellek Nemlineáris kevert modell
Sweave A kurzus diái Fritz Leisch s Sweave rendszerével készültek. Ebben a L A TEX és R kódok egyetlen fájlban szerkeszthetők. Egy Sweave fájlból (.Rnw kiterjesztésű általában) olyan L A TEX forrás fájl készíthető, amely tartalmazza az R inputokat, outputokat és ábrákat. Egy Sweave fájlból az R kódok automatikusan kinyerhetők.
A kurzus anyagához felhasznált könyvek és egyéb anyagok Brian S. Everitt, Torsten Hothorn: A Handbook of Statistical Analysis Using R (Chapman and Hall/CRC, 2006) José C. Pinheiro, Douglas M. Bates: Mixed Effects Models in S and S-PLUS (Springer, 2000) Julian J. Faraway: Extending the Linear Model with R. Generalized Linear, Mixed Effects and Nonparametric Regression Models (Chapman and Hall/CRC, 2006) Douglas M. Bates: Mixed-effects models in R. user!2006, Vienna, Austria, June 14, 2006
Felhasznált adatok pupa.txt mass.csv land-use.csv
Zerynthia polyxena
pupa.txt, mass.csv Az adatok egy olyan kísérletből származnak, amelyben lepkék (Zerynthia polyxena) imágóinak méret változatosságát vizsgálták. A lárvákat kísérletileg manipulált hőmérsékletű környezetben tartották. A KÍSÉRLET 1. faktor: TEMPR Fejlődő hernyók környezetének hőmérséklete hűtött szobahőmérséklet melegített 2. faktor: FOOD Táplálékellátottság limitált nem limitált A hernyók tömegét a kikeléstől a bábozódásig mérték. Referencia: J. Kis, F. Kassai, L. Peregovits (nem közölt adatok)
Változók BOX a dobozok azonosítója, amelyben a hernyókat tartották FOOD Táplálékellátottság limited limitált adlibitum nem limitált TEMPR A fejlődő hernyók környezetének hőmérséklete cooled hűtött room szobahőmérsékletű heated melegített PUPAMASS bábtömeg (g) 1 héttel a bábozódás után STARTMASS kezdeti tömeg (g)
Lepkebáb adatok > pupa[1:5, ] BOX FOOD TEMPR PUPAMASS STARTMASS 1 474 limited cooled 0.176 0.007 2 423 limited cooled 0.197 0.013 3 420 limited cooled 0.183 0.015 4 473 limited cooled 0.209 0.015 5 430 limited cooled 0.205 0.017 > str(pupa) data.frame : 58 obs. of 5 variables: $ BOX : int 474 423 420 473 430 4107 457 80 4101 454... $ FOOD : Factor w/ 2 levels "adlibitum","limited": 2 2 2 2 2 2 2 2 $ TEMPR : Factor w/ 3 levels "cooled","heated",..: 1 1 1 1 1 1 1 1 1 $ PUPAMASS : num 0.176 0.197 0.183 0.209 0.205 0.197 0.205 0.191 0.234 $ STARTMASS: num 0.007 0.013 0.015 0.015 0.017 0.025 0.034 0.039 0.044
land-use.csv Az adatok egy olyan kutatásból származnak, melyben a mezőgazdaság intenzifikációjának őszi gabona növényekre való hatását vizsgálták a Nagy-Alföldön, szikes talajú területeken. 5 gazda, illetve szövetkezet különböző intenzifikációval kezelt földjeit vizsgálták. 7 földhasználati intenzitás kategóriát állapítottak meg a felhasznált szerves- és műtrágya valamint növényvédő szer mennyisége alapján (kérdőíves felmérés a vizsgálatok előtt).
land-use.csv 3 őszi gabona földet vizsgáltak minden intenzitás szintből. Minden területen kijelöltek 2-2 10 db 5 1 m-es egymástól 5 m-re egy vonalba eső kvadrátból álló transzektet, egyet a terület szélén, a másikat pedig 50 m-rel beljebb. Ezzel az elrendezéssel figyelembe vehető a lokális térbeli heterogenitás, ami nagyban meghatározza a biodiverzitási mintázatot. Referencia: Anikó Kovács, Péter Batáry, András Báldi, Andrea Harnos: Weed species richness and cover along an intensification gradient in Central-Hungarian cereal fields (a Weed Research-be beküldve)
Extenzíven használt gabonaföld
Extenzíven használt gabonaföld széle
Intenzíven használt gabonaföld
Intenzíven használt gabonaföld széle
Egy elemzés lépései A probléma hátterének megértése. Kérdésfeltevés. Elemző módszerek kiválasztása (adatgyűjtés előtt!) Adatgyűjtés. Az adatok elemezhető formába hozása! Exploratív elemzések (leíró statisztikák, grafikonok). A fő elemzés (modellezés). Interpretáció. Az eredmények közlése.
Milyen egy jó modell? Tisztáznia kell a dolgokat és nem összezavarni. Parszimóniára kell törekednie. Things should be made as simple as possible - but no simpler. A. Einstein Általánosítható. az eredményeknek nemcsak a mintánkra kell érvényesnek lennie, hanem arra a statisztikai populációra is, amelyből a megfigyeléseink származnak.
A modellezés folyamata Kiinduló modell illesztése. A modell redukálása. Modellellenőrzés. Modell megváltoztatása, ha szükséges. Új modell illesztése. Modellredukció. Modellellenőrzés....
Az általános lineáris modell General Linear Model Egy cél-, vagy függő változó (outcome, response) egyéb változóktól (effects) való függését vizsgáljuk. Az általános lineáris modell speciális esetei: Egyszerű Lineáris Regresszió Simple Linear Regression; ANOVA; ANCOVA; stb.
A modell általános felírása A lineáris modell: Y = β 0 + β 1 X 1 + β 2 X 2 +... + β p X p + ɛ, Vagy mátrix egyenlet formájában: Y = Xβ + ɛ, ahol Y célváltozó, β 0 intercept vagy konstans, β i ismeretlen paraméterek, X 1,..., X p magyarázó változók (prediktorok), lehetnek folytonosak (kovariánsok) vagy kvalitatív (faktor) változók. Indikátor (dummy) változók. ɛ A megfigyelt értékeknek és a modell szisztematikus részének a különbsége (mérési hiba vagy nem magyarázott hatás).
A modell praktikus alakja PUPAMASS = β 0 +β 1 STARTMASS+β 2 1 (TEMPR=high) + + β 3 1 (TEMPR=room) + ɛ β 4 1 (TEMPR=cooled) hiányzik (túlparaméterezettség) Wilkinson-Rogers formula: PUPAMASS = STARTMASS + TEMPR, ahol a TEMPR egy factor.
Modell formulák R-ben Általános forma: y tényező1+tényező2+... Interakció a:b, a*b=a+b+a:b Speciális tagok: offset, -1 (nincs konstans) Példák: y x y x1+x2+x3 y f1 y f1 f2 y f1 x - Egyszerű Lineáris Regresszió - Többszörös Lineáris Regresszió - Egytényezős ANOVA - Kéttényezős ANOVA interakcióval - ANCOVA
Lepkebáb adatok > pupa[1:5, ] BOX FOOD TEMPR PUPAMASS STARTMASS 1 474 limited cooled 0.176 0.007 2 423 limited cooled 0.197 0.013 3 420 limited cooled 0.183 0.015 4 473 limited cooled 0.209 0.015 5 430 limited cooled 0.205 0.017 > str(pupa) data.frame : 58 obs. of 5 variables: $ BOX : int 474 423 420 473 430 4107 457 80 4101 454... $ FOOD : Factor w/ 2 levels "adlibitum","limited": 2 2 2 2 2 2 2 2 $ TEMPR : Factor w/ 3 levels "cooled","heated",..: 1 1 1 1 1 1 1 1 1 $ PUPAMASS : num 0.176 0.197 0.183 0.209 0.205 0.197 0.205 0.191 0.234 $ STARTMASS: num 0.007 0.013 0.015 0.015 0.017 0.025 0.034 0.039 0.044
Változók BOX a dobozok azonosítója, amelyben a hernyókat tartották FOOD Táplálékellátottság limited limitált adlibitum nem limitált TEMPR A fejlődő hernyók környezetének hőmérséklete cooled hűtött room szobahőmérsékletű heated melegített PUPAMASS bábtömeg (g) 1 héttel a bábozódás után STARTMASS kezdeti tömeg (g)
Exploratív elemzések 1. lépés: Adatok leíró statisztikái és grafikonjai. Numerikus áttekintés: > summary(pupa) BOX FOOD TEMPR PUPAMASS Min. : 39.0 adlibitum:32 cooled:19 Min. :0.1430 1st Qu.: 409.2 limited :26 heated:22 1st Qu.:0.1970 Median : 443.0 room :17 Median :0.2560 Mean :1015.5 Mean :0.2571 3rd Qu.: 473.8 3rd Qu.:0.3103 Max. :4202.0 Max. :0.4330 STARTMASS Min. :0.00100 1st Qu.:0.00700 Median :0.01400 Mean :0.01895 3rd Qu.:0.02375 Max. :0.11900
Grafikus sűrűségfüggvény becslések Hisztogram: durva becslés - érzékeny az osztályintervallumok megválasztására. Kernel sűrűség becslés: jobb. Simított hisztogram.
Hisztogram >hist(pupamass,main="bábtömeg egy héttel a bábozódás után",xlab="tömeg (g)") Bábtömeg egy héttel a bábozódás után 15 Frequency 10 5 0 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 Tömeg (g)
Simított hisztogram >plot(density(pupamass),main="bábtömeg egy héttel a bábozódás után"); rug(pupamass) Bábtömeg egy héttel a bábozódás után Density 0 1 2 3 4 5 0.1 0.2 0.3 0.4 0.5 N = 58 Bandwidth = 0.02654
Boxplotok Kvalitatív és kvantitatv változók kapcsolata. Faktor kombinációk is lehetnek a vízszintes tengelyen. Különbségek és interakciók becslése.
Boxplot >boxplot(pupamass (TEMPR:FOOD),col=2:4, names=c("ca","ha","ra","cl","hl","rl")) 0.15 0.20 0.25 0.30 0.35 0.40 CA HA RA CL HL RL
Hegedűábra vioplot(pupamass[food=="adlibitum"], PUPAMASS[FOOD=="limited"], col="white", names=c("ad libitum", "limited")) 0.15 0.20 0.25 0.30 0.35 0.40 ad libitum limited
Interakciós ábra A célváltozó különböző faktor kombinációk szerinti átlagait ill. más leíró statisztikáit rajzolja ki így ábrázolva a lehetséges interakciókat (nem additív hatásokat). Ha a vonalak többé-kevésbé párhuzamosak, akkor nem várunk interakciót.
Interakciós ábra >interaction.plot(tempr,food,pupamass) mean of PUPAMASS 0.20 0.22 0.24 0.26 0.28 0.30 FOOD adlibitum limited cooled heated room TEMPR
Szórásdiagram >plot(pupamass STARTMASS,main="PUPAMASS-STARTMASS Szórásdiagram", xlab="startmass",ylab="pupamass",pch=".") 0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.15 0.20 0.25 0.30 0.35 0.40 PUPAMASS STARTMASS Szórásdiagram STARTMASS PUPAMASS
Feltételes szórásdiagram >coplot(pupamass STARTMASSTEMPR*FOOD, xlab="startmass",ylab="pupamass",pch=20) Given : TEMPR cooled heated room 0.00 0.04 0.08 0.12 0.00 0.04 0.08 0.12 PUPAMASS 0.15 0.25 0.35 0.15 0.25 0.35 adlibitum limited Given : FOOD 0.00 0.04 0.08 0.12 STARTMASS
Egyszerű Lineáris Regresszió 1. modell: PUPAMASS = β 0 + β 1 STARTMASS + ɛ > mod1.lm <- lm(pupamass ~ STARTMASS) > summary(mod1.lm) Call: lm(formula = PUPAMASS ~ STARTMASS) Residuals: Min 1Q Median 3Q Max -0.115249-0.053640-0.003456 0.047954 0.169238 Coefficients: Estimate Std. Error t value Pr(>t) (Intercept) 0.26866 0.01217 22.071 <2e-16 STARTMASS -0.61265 0.45143-1.357 0.180 Residual standard error: 0.06594 on 56 degrees of freedom Multiple R-Squared: 0.03184, Adjusted R-squared: 0.01455 F-statistic: 1.842 on 1 and 56 DF, p-value: 0.1802
Szórásdiagram az illesztett egyenessel >abline(mod1.lm) 0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.15 0.20 0.25 0.30 0.35 0.40 PUPAMASS STARTMASS szórásdiagram STARTMASS PUPAMASS
Kéttényezős ANOVA > mod2.lm <- lm(pupamass ~ FOOD + TEMPR) > anova(mod2.lm) Analysis of Variance Table Response: PUPAMASS Df Sum Sq Mean Sq F value Pr(>F) FOOD 1 0.161984 0.161984 98.906 8.306e-14 TEMPR 2 0.001065 0.000532 0.325 0.724 Residuals 54 0.088439 0.001638
Kéttényezős ANOVA interakcióval > mod3.lm <- lm(pupamass ~ FOOD * TEMPR) > anova(mod3.lm) Analysis of Variance Table Response: PUPAMASS Df Sum Sq Mean Sq F value Pr(>F) FOOD 1 0.161984 0.161984 99.7353 1.088e-13 TEMPR 2 0.001065 0.000532 0.3277 0.7220 FOOD:TEMPR 2 0.003984 0.001992 1.2264 0.3017 Residuals 52 0.084455 0.001624
Kéttényezős ANOVA interakcióval és kovariánssal > mod4.lm <- lm(pupamass ~ FOOD * TEMPR + STARTMASS) > anova(mod4.lm) Analysis of Variance Table Response: PUPAMASS Df Sum Sq Mean Sq F value Pr(>F) FOOD 1 0.161984 0.161984 97.8787 1.857e-13 TEMPR 2 0.001065 0.000532 0.3216 0.7264 STARTMASS 1 0.000298 0.000298 0.1804 0.6729 FOOD:TEMPR 2 0.003738 0.001869 1.1294 0.3312 Residuals 51 0.084402 0.001655
Hipotézisvizsgálatok A modell egy vagy több prediktorának szignifikanciáját állapítjuk meg. Ha a hibatagok függetlenek és normális eloszlásúak. Két beágyazott modell (a szűkebb modell magyarázó változóinak halmaza részhalmaza a bővebb modellének) összehasonlítható egy F-teszttel: anova(model1, model2).
Hipotézisvizsgálatok Egy általánosan végzett tesz az aktuális modell nullmodellhez való hasonlítása (nincsenek prediktorok, csak a konstans (intercept)): anova(model). (A modell egészének szignifikanciája.) Egyedi prediktorok F-próbával, vagy egy t-próbával summary(model) tesztelhetők. Kerüljük a t-tesztek használatát kettőnél több szintű kvalitatív predictorok (faktorok) esetén!
A modellezés céljai Predikció: Megfigyelünk új X-eket és a hozzá tartozó Y -t szeretnénk megbecsülni. A predikciós teljesítmény javul az olyan változók eltávolításáaval, amik nem nagyon játszanak szerepet. Automatikus változó szelekciók jól működhetnek. A változók közötti kapcsolat megértése. Manuális szelekció jobb. Gyakran mindkettő célunk. Nam tanácsos teljesen automatikus szelekciós módszerekre hagyatkozni.
Változó szelekciós módszerek I. Akaike Information Criterion (AIC) AIC = 2logLik + 2p, ahol p a paraméterek száma. Általános, normál lineáris modelleken túl is használható. A step() függvény ezt használja. Lépésenkénti keresés a lehetséges modellek terében. Szekvenciálisan távolít el (vagy vesz be) változókat. Minimalizálja az AIC-ot.
Változó szelekciós módszerek II. Tesztelésen alapulnak. F -teszttel hasonlítják össze a beágyazott modelleket. Nem igazán jó módszer: a beválasztott változók sorrendje nagyon számít. Rosszabb, mint a kritériumra épülő módszerek. Manuális változó szelekcióra használható. drop1(model,test="f")
Automatikus változó szelekció > mod5.lm <- step(mod4.lm, trace = 0) > anova(mod5.lm) Analysis of Variance Table Response: PUPAMASS Df Sum Sq Mean Sq F value Pr(>F) FOOD 1 0.161984 0.161984 101.35 3.585e-14 Residuals 56 0.089503 0.001598
Két modell összehasonlítása > anova(mod4.lm, mod5.lm) Analysis of Variance Table Model 1: PUPAMASS ~ FOOD * TEMPR + STARTMASS Model 2: PUPAMASS ~ FOOD Res.Df RSS Df Sum of Sq F Pr(>F) 1 51 0.084402 2 56 0.089503-5 -0.005101 0.6165 0.6877 Nincs szignifikáns különbség a modellek között. Válasszuk a szűkebb modellt!
Manuális változó szelekció > drop1(mod4.lm, test = "F") Single term deletions Model: PUPAMASS ~ FOOD * TEMPR + STARTMASS Df Sum of Sq RSS AIC F value Pr(F) <none> 0.08-364.89 STARTMASS 1 5.291e-05 0.08-366.85 0.0320 0.8588 FOOD:TEMPR 2 3.738e-03 0.09-366.38 1.1294 0.3312
Konfidencia-intervallumok Tartományok a paraméterek lehetséges értékeire. A hatásnagyságok becslésére hasznosabb, mint a p-érték. A p-értékek a statisztikai szignifikanciát mutatják, nem pedig a gyakorlati jelentőséget. > confint(mod4.lm) 2.5 % 97.5 % (Intercept) 0.28712994 0.33963231 FOODlimited -0.15362149-0.07630159 TEMPRheated -0.04029847 0.03192612 TEMPRroom -0.06188462 0.01129474 STARTMASS -0.54923885 0.65664283 FOODlimited:TEMPRheated -0.05702646 0.04739676 FOODlimited:TEMPRroom -0.02174418 0.08834948
Diagnosztika A lineáris modell feltételeinek ellenőrzése. Korrekt-e a modell szisztematikus része (linearitás)? A modell véletlen részét (ɛ) tekintve: konstans variancia, korrelálatlanság, normalitás. Torzító pontok keresése (olyan pontok, amelyeknek a többi pontnál sokkal nagyobb hatása van az illesztett modellre).
Diagnosztikus módszerek Lehetnek numerikusak vagy grafikusak. Általában a grafikus módszereket preferáljuk, mert informatívabbak. reziduális ábrák, normalitást ellenőrző ábrák. Gyakorlatilag lehetetlen megállapítani egy modellről, hogy teljesen korrekt-e. A diagnosztikák célja: leellenőrizni, hogy a modell nem durván rossz-e. Több figyelmet kell fordítani arra, hogy ne kövessünk el nagy hibákat, mint arra, hogy a modellünk optimális-e. Négy hasznos ábra: plot(model)
Diagnosztikus ábrák Residuals 0.15 0.00 0.15 Residuals vs Fitted 0.20 0.22 0.24 0.26 0.28 0.30 0.32 39 43 33 Standardized residuals 3 0 2 Normal Q Q 33 39 43 2 1 0 1 2 Fitted values Theoretical Quantiles Standardized residuals 0.0 1.0 Scale Location 43 33 39 0.20 0.22 0.24 0.26 0.28 0.30 0.32 Standardized residuals 4 0 2 33 39 Residuals vs Leverage Cook's distance 43 0.0 0.1 0.2 0.3 0.4 0.5 0.6 1 0.5 0.5 1 Fitted values Leverage
Illeszkedés ellenőrzése >plot(mod4.lm,1,pch=20) Residuals 0.15 0.05 0.05 0.10 0.15 Residuals vs Fitted 39 43 33 0.20 0.22 0.24 0.26 0.28 0.30 0.32 Fitted values lm(pupamass ~ FOOD * TEMPR + STARTMASS)
Reziduumok normalitása >plot(mod4.lm,2,pch=20) Normal Q Q Standardized residuals 3 2 1 0 1 2 3 39 33 43 2 1 0 1 2 Theoretical Quantiles lm(pupamass ~ FOOD * TEMPR + STARTMASS)
A variancia állandóságának ellenőrzése >plot(mod4.lm,3,pch=20) 0.20 0.22 0.24 0.26 0.28 0.30 0.32 0.0 0.5 1.0 1.5 Fitted values Standardized residuals lm(pupamass ~ FOOD * TEMPR + STARTMASS) Scale Location 43 33 39
Torzító pontok keresése >plot(mod4.lm,5,pch=20) Residuals vs Leverage 33 Standardized residuals 4 2 0 2 39 43 Cook's distance 1 0.5 0.5 1 0.0 0.1 0.2 0.3 0.4 0.5 0.6 Leverage lm(pupamass ~ FOOD * TEMPR + STARTMASS)
Hogy detektáljuk a problémákat? Illeszkedés ellenőrzése: A reziduumokban nem lehet trend (y = 0). Ha van, meg kell változtatni a modellt (transzformáció, nemlineáris modell etc). Reziduumok normalitása: QQ-ábra. A reziduumokat az "ideális" normális eloszlású megfigyelésekhez hasonlítjuk. Normális eloszlás esetén a pontok lineáris trendet követnek (y = x). Egyébként ferdeséget jeleznek. Scale-location ábra: a variancia homogenitását lehet vele ellenőrizni.
Hogy detektáljuk a problémákat? Residuals vs. Leverage ábra: Torzító pontok keresése. A pontoknak az adott Cook távolság (Cook s distance) szinteken belül kell lennie. A számozott pontok lehetnek gyanúsak. Cook-féle távolság: az illeszkedés megváltozásának standardizált mértéke, ha az adott megfigyelést kivesszük az adatok közül.
Cook s distance plot >plot(mod4.lm,4,pch=20) Cook's distance Cook's distance 0.00 0.05 0.10 0.15 0.20 33 39 43 0 10 20 30 40 50 60 Obs. number lm(pupamass ~ FOOD * TEMPR + STARTMASS)
Lineáris modell - korlátok Nagyon sok kapcsolatot nem írható le egyszerű lineáris modellel, mivel a függő változó lehet nem folytonos (és nem normális) eloszlású (pl. gyakoriságok, bináris adatok); a magyarázó változók hatása a függő változóra lehet, hogy nem lineáris; a megfigyelési egységek lehet, hogy nem függetlenek; a variancia lehet, hogy nem konstans.
Általánosított lineáris modellek (Generalized Linear Models) Az általános lineáris modell általánosítása: Megengedi, hogy az eloszlás nem normális legyen (pl. Poisson, binomiális ill., multinomiális (exponenciális eloszláscsalád)). A variancia állandóságának feltétele sem olyan szigorú, mint a hagyományos lineáris modelleknél.
Hogy általánosít ez a módszer? A függő változót most is a magyarázó változók lineáris kombinációjából becsüljük. A függő és magyarázó változók egy ún. link függvénnyel vannak összekapcsolva: η = β 0 + β 1 X 1 + β 2 X 2 +... + β k X k, lineáris egyenlet, ahol η lineáris prediktor, X magyarázó változók, β együtthatók. Maximum likelihood (ML) módszerrel illesztünk. g(y ) = η link függvény. glm(formula, family = gaussian,...) Súgó a függvény családról:?family
Gyakorisági adatok regressziója (count regression) A függő változó gyakorisági adat (pozitív egész). Ha az összes lehetőség egy adott korlátos szám, akkor binomiális modellt használunk. Van-nincs (0-1) adatok esetén a binomiális modell használatos (logisztikus regresszió). Ha a gyakoriságok elegendően nagyok, akkor az általános lineáris modell is jó lehet. Egyéb esetekben a Poisson és - kevésbé gyakran - a negatív binomiális modell használható.
Poisson regresszió Ha Y Poisson eloszlású µ > 0 várható értékkel, akkor: P (Y = y) = eµ µ y, y = 0, 1, 2,... y! E(Y ) = var(y ) = µ.
Honnan származhatnak Poisson-eloszlású adatok? Ha a gyakoriságok egy előre rögzített számú megfigyelésből származnak, akkor a függő változót binomiálisként modellezhetjük. Kis siker valószínűségek, és nagyszámú összes lehetőség esetén alkalmazhatjuk a Poisson közelítést. (Pl. ritka incidenciája egy adott fajnak egy földrajzi területen.) Ha gyakoriságokat számolunk egy adott időintervallumban, területen, térrészben, anyagmennyiségben, és a siker valószínűsége arányos az intervallum hosszával, térrész térfogatával stb., és független más eseményektől. (Pl. bejövő telefonhívások, földrengések száma stb.) Fontos: Poisson-eloszlású véletlen változók összege is Poisson. (Hasznos, ha csak aggregált adataink vannak.)
Földhasználati példa 36 mintavételi terület esetén vannak adataink a következőkről: Weedcover Az adott transzekt teljes gyomborítottsága százalékosan. Totspeciesnb A gyomnövény fajok száma. N input Éves nitrogén bevitel. Transectpos A transzekt elhelyezkedése a földterületen. 0 - a transzekt közvetlenül a terület szélén helyezkedik el, 1 - belül van. Transect pair Ugyanahhoz a földhöz tartozó transzekt párok azonosítója.
Földhasználati példa Noncrop area A tanulmányozott transzekt körül húzott 500 m sugarú körbe eső nem művelt terület százalékos aránya (főleg füves terület, de lehet erdős, beépített, mocsaras vagy nyílt vizes terület). Modellezni szeretnénk a gyomnövény fajok számát és a gyomborítottságot a nitrogén bevitel, a nem művelt terület aránya és a transzekt pozíció függvényében.
Az adatok struktúrája > str(land) data.frame : 42 obs. of 10 variables: $ SampleArea : Factor w/ 42 levels "AG30E ","AG30I ",..: 31 32 33 34 $ Weedcover : int 53 44 48 29 61 45 33 33 36 38... $ Totspeciesnb : int 29 21 37 28 29 21 36 29 38 13... $ Intensity : int 1 1 1 1 1 1 2 2 2 2... $ N_input : int 0 0 0 0 0 0 113 113 113 113... $ Herbicide_use: int 0 0 0 0 0 0 1 1 1 1... $ Transectpos : Factor w/ 2 levels "0","1": 1 2 1 2 1 2 1 2 1 2... $ Transect_pair: int 16 16 17 17 18 18 19 19 20 20... $ Noncrop_area : int 49 50 41 43 55 53 21 21 9 8... $ Farmer : Factor w/ 5 levels "AG","ET","NL",..: 5 5 5 5 5 5 5 5
Density plot >plot(density(totspeciesnb)) density.default(x = Totspeciesnb) Density 0.00 0.01 0.02 0.03 0 10 20 30 40 50 60 N = 42 Bandwidth = 4.453
Boxplot >plot(totspeciesnb Transectpos) Totspeciesnb 10 20 30 40 50 0 1 Transectpos
Hegedűábra >vioplot(totspeciesnb[transectpos==0],totspeciesnb[transectpos== col="white") 10 20 30 40 50 1 2
Szórásdiagram >plot(totspeciesnb Noncrop area) 0 10 20 30 40 50 60 10 20 30 40 50 Noncrop_area Totspeciesnb
Feltételes szórásdiagram >coplot(totspeciesnb Noncrop areatransectpos,pch=20) 0 10 20 30 40 50 60 10 20 30 40 50 0 10 20 30 40 50 60 Noncrop_area Totspeciesnb 0 1 Given : Transectpos
Interakciós ábra >interaction.plot(as.factor(n-input),transectpos,totspeciesnb) mean of Totspeciesnb 15 20 25 30 35 40 45 Transectpos 0 1 0 34 68 92 100 113 270 as.factor(n_input)
Lineáris modell > mod1.lm <- lm(totspeciesnb ~ N_input * Transectpos + + Noncrop_area) > summary(mod1.lm) Call: lm(formula = Totspeciesnb ~ N_input * Transectpos + Noncrop_area) Residuals: Min 1Q Median 3Q Max -13.5241-4.7578-0.3224 4.1886 17.9341 Coefficients: Estimate Std. Error t value Pr(>t) (Intercept) 29.88544 3.68671 8.106 1.01e-09 N_input -0.03013 0.02115-1.424 0.162731 Transectpos1-15.68275 3.60955-4.345 0.000104 Noncrop_area 0.13763 0.06801 2.024 0.050266 N_input:Transectpos1 0.01105 0.02881 0.384 0.703520 Residual standard error: 7.437 on 37 degrees of freedom Multiple R-Squared: 0.5816, Adjusted R-squared: 0.5364 F-statistic: 12.86 on 4 and 37 DF, p-value: 1.172e-06
Reziduum vs. becsült érték ábra >plot(mod1.lm,1,pch=20) 10 15 20 25 30 35 10 0 10 20 Fitted values Residuals lm(totspeciesnb ~ N_input * Transectpos + Noncrop_area) Residuals vs Fitted 33 8 31
Normalitás vizsgálat (Normal QQ-plot) >plot(mod1.lm,2) 2 1 0 1 2 2 1 0 1 2 3 Theoretical Quantiles Standardized residuals lm(totspeciesnb ~ N_input * Transectpos + Noncrop_area) Normal Q Q 33 8 31
Szórás-becsült érték ábra (Scale-location plot) >plot(mod1.lm,3,pch=20) 10 15 20 25 30 35 0.0 0.5 1.0 1.5 Fitted values Standardized residuals lm(totspeciesnb ~ N_input * Transectpos + Noncrop_area) Scale Location 33 8 31
Problémák Enyhén nemlineáris trend. Nem konstans variancis. Enyhén nem normális eloszlású hibatag. Próbáljuk meg transzformálni az adatokat, pl. logaritmus transzformáció!
Lineáris modell log transzformált függő változóval > mod2.lm <- lm(log(totspeciesnb + 1) ~ N_input * Transectpos + + Noncrop_area) > summary(mod2.lm) Call: lm(formula = log(totspeciesnb + 1) ~ N_input * Transectpos + Noncrop_area) Residuals: Min 1Q Median 3Q Max -0.55314-0.20587 0.02715 0.18937 0.64625 Coefficients: Estimate Std. Error t value Pr(>t) (Intercept) 3.406e+00 1.422e-01 23.945 < 2e-16 N_input -1.374e-03 8.161e-04-1.684 0.100570 Transectpos1-6.005e-01 1.393e-01-4.312 0.000115 Noncrop_area 4.777e-03 2.624e-03 1.821 0.076760 N_input:Transectpos1 4.096e-05 1.111e-03 0.037 0.970800 Residual standard error: 0.2869 on 37 degrees of freedom Multiple R-Squared: 0.6147, Adjusted R-squared: 0.5731 F-statistic: 14.76 on 4 and 37 DF, p-value: 2.685e-07
Reziduum vs. becsült érték ábra >plot(mod2.lm,1,pch=20) 2.6 2.8 3.0 3.2 3.4 3.6 0.6 0.4 0.2 0.0 0.2 0.4 0.6 Fitted values Residuals lm(log(totspeciesnb + 1) ~ N_input * Transectpos + Noncrop_area) Residuals vs Fitted 8 31 33
Normal QQ-plot >plot(mod2.lm,2,pch=20) 2 1 0 1 2 2 1 0 1 2 Theoretical Quantiles Standardized residuals lm(log(totspeciesnb + 1) ~ N_input * Transectpos + Noncrop_area) Normal Q Q 8 31 42
Scale-location plot >plot(mod2.lm,3,pch=20) 2.6 2.8 3.0 3.2 3.4 3.6 0.0 0.5 1.0 1.5 Fitted values Standardized residuals lm(log(totspeciesnb + 1) ~ N_input * Transectpos + Noncrop_area) Scale Location 8 31 42
A két modell összehasonlítása > summary(mod1.lm)$adj.r.squared [1] 0.5364204 > summary(mod2.lm)$adj.r.squared [1] 0.573088 Nem nagy javulás. Jobb illeszkedés. Nehézkes interpretáció.
Poisson modell > mod1.pois <- glm(totspeciesnb ~ N_input * Transectpos + + Noncrop_area, family = poisson) > mod1.pois Call: glm(formula = Totspeciesnb ~ N_input * Transectpos + Noncrop_area Coefficients: (Intercept) N_input Transectpos1 3.3428928-0.0009255-0.5800613 Noncrop_area N_input:Transectpos1 0.0057278-0.0006015 Degrees of Freedom: 41 Total (i.e. Null); Null Deviance: 198.2 Residual Deviance: 76.93 AIC: 293.5 37 Residual
summary(mod1.pois) Call: glm(formula = Totspeciesnb ~ N_input * Transectpos + Noncrop_area, family = poisson) Deviance Residuals: Min 1Q Median 3Q Max -2.6342-1.1127-0.1734 0.8111 3.1884 Coefficients: Estimate Std. Error z value Pr(>z) (Intercept) 3.3428928 0.0975010 34.286 < 2e-16 N_input -0.0009255 0.0005436-1.702 0.08868 Transectpos1-0.5800613 0.1018254-5.697 1.22e-08 Noncrop_area 0.0057278 0.0018755 3.054 0.00226 N_input:Transectpos1-0.0006015 0.0008987-0.669 0.50329 (Dispersion parameter for poisson family taken to be 1) Null deviance: 198.232 on 41 degrees of freedom Residual deviance: 76.934 on 37 degrees of freedom AIC: 293.51 Number of Fisher Scoring iterations: 4
Hatások tesztelése A summary(model) közelítő Wald teszteket csinál. Az SE-k lehet, hogy túlbecsültek, és így elvesztünk szignifikáns eredményeket. A deviancia alapú tesztek jobbak. A deviancia azt méri, hogy a modell mennyire van közel a tökéleteshez. (A lineáris modell esetén: deviancia = RSS.) Chi 2 eloszlású. A determinációs együttható (R-négyzet a lineáris modelleknél): > 1-77/198 [1] 0.6111111
Anova a Poisson modellre > anova(mod1.pois, test = "Chi") Analysis of Deviance Table Model: poisson, link: log Response: Totspeciesnb Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev P(>Chi) NULL 41 198.232 N_input 1 15.488 40 182.744 8.302e-05 Transectpos 1 96.027 39 86.717 1.133e-22 Noncrop_area 1 9.332 38 77.384 0.002 N_input:Transectpos 1 0.451 37 76.934 0.502
Poisson modell interakciókkal > mod2.pois <- glm(totspeciesnb ~ (N_input + Noncrop_area + + Transectpos)^2, family = poisson) > anova(mod2.pois, test = "Chi") Analysis of Deviance Table Model: poisson, link: log Response: Totspeciesnb Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev P(>Chi) NULL 41 198.232 N_input 1 15.488 40 182.744 8.302e-05 Noncrop_area 1 9.914 39 172.829 0.002 Transectpos 1 95.445 38 77.384 1.521e-22 N_input:Noncrop_area 1 1.016 37 76.368 0.313 N_input:Transectpos 1 0.462 36 75.906 0.497 Noncrop_area:Transectpos 1 3.123 35 72.783 0.077
A két modell összehasonlítása > anova(mod1.pois, mod2.pois, test = "Chi") Analysis of Deviance Table Model 1: Totspeciesnb ~ N_input * Transectpos + Noncrop_area Model 2: Totspeciesnb ~ (N_input + Noncrop_area + Transectpos)^2 Resid. Df Resid. Dev Df Deviance P(>Chi) 1 37 76.934 2 35 72.783 2 4.151 0.126
Modell szelekció > drop1(mod2.pois, test = "Chi") Single term deletions Model: Totspeciesnb ~ (N_input + Noncrop_area + Transectpos)^2 Df Deviance AIC LRT Pr(Chi) <none> 72.783 293.359 N_input:Noncrop_area 1 73.747 292.323 0.964 0.32607 N_input:Transectpos 1 74.329 292.905 1.546 0.21367 Noncrop_area:Transectpos 1 75.906 294.482 3.123 0.07719
Diagnosztikus ábrák 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3 1 0 1 2 3 Predicted values Residuals Residuals vs Fitted 8 33 31 2 1 0 1 2 3 1 0 1 2 3 Theoretical Quantiles Std. deviance resid. Normal Q Q 8 33 31 2.4 2.6 2.8 3.0 3.2 3.4 3.6 0.0 0.5 1.0 1.5 Predicted values Std. deviance resid. Scale Location 8 33 31 0.00 0.05 0.10 0.15 0.20 0.25 0.30 3 1 1 2 3 4 Leverage Std. deviance resid. Cook's distance 1 0.5 0.5 1 Residuals vs Leverage 39 42 41
Illeszkedés ellenőrzése >plot(mod1.pois,1,pch=20) 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3 2 1 0 1 2 3 Predicted values Residuals glm(totspeciesnb ~ N_input * Transectpos + Noncrop_area) Residuals vs Fitted 8 33 31
Parciális reziduális ábrák >library(gam) > par(mfrow=c(1,3),pty="s") >plot.gam(mod1.pois,resid=t,pch=20) >par(mfrow=c(1,1)) 0 50 100 150 200 250 2 1 0 1 2 3 N_input partial for N_input 2 1 0 1 2 3 partial for Transectpos Transectpos 0 1 0 10 20 30 40 50 60 2 1 0 1 2 3 Noncrop_area partial for Noncrop_area
Illeszkedés ellenőrzése Az ábrák majdnem ugyanúgy használhatók, mint a lineáris modell esetén. A normalitás általában nem teljesül tökéletesen. A parciális reziduálisok ellenőrzésére a plot.gam használható a gam csomagból.
Túlszóródás Poisson változó esetén az átlag és a variancia megegyezik. A variancia függvényt az átlag teljesen meghatározza, nem szabad paraméter. Az ún. diszperziós paraméter 1. Gyakran túlságosan szigorú ez a feltétel. Gyakran túlszóródás (overdispersion) van. A túlszóródást a reziduális deviancia és a hozzá tartozó szabadsági fokból határozható meg. Többé-kevésbé egynelőnek kell lenniük. Ha nagyon különbözőek, akkor az ún. quasilikelihood módszert használhatjuk, amellyel a modellparaméterek a hiba eloszlás teljes ismerete nélkül határozhatók meg.
A diszperziós paraméter ellenőrzése > deviance(mod1.pois)/df.residual(mod1.pois) [1] 2.079286
Null deviance: 198.232 on 41 degrees of freedom Residual deviance: 76.934 on 37 degrees of freedom Poisson modell túlszóródással > mod1.qpois <- glm(totspeciesnb ~ N_input * Transectpos + + Noncrop_area, family = quasipoisson) > summary(mod1.qpois) Call: glm(formula = Totspeciesnb ~ N_input * Transectpos + Noncrop_area, family = quasipoisson) Deviance Residuals: Min 1Q Median 3Q Max -2.6342-1.1127-0.1734 0.8111 3.1884 Coefficients: Estimate Std. Error t value Pr(>t) (Intercept) 3.3428928 0.1426271 23.438 < 2e-16 N_input -0.0009255 0.0007952-1.164 0.251962 Transectpos1-0.5800613 0.1489530-3.894 0.000398 Noncrop_area 0.0057278 0.0027436 2.088 0.043767 N_input:Transectpos1-0.0006015 0.0013147-0.458 0.649948 (Dispersion parameter for quasipoisson family taken to be 2.139865)