bruk av r – eksempler5 1926-2007. selv om det ser ut som trendlinjen i figur 1 viser synkende...

108
1 Bruk av R – eksempler © Halvor Aarnes, Biologisk institutt, UiO2009 Innholdsfortegnelse Tidsserieanalyse Haldenvassdraget .................................................................................. 1 Galapagos og artsrikdom ........................................................................................................ 11 El nino .............................................................................................................................................. 19 Mer Galapagos og artsrikdom .............................................................................................. 23 Predasjon og Hollings eksperiment ................................................................................ 25 Tetthetsuavhengig vekst ........................................................................................................ 28 Binomial generalisert modell (GLM).............................................................................. 31 Kursoppgaver .................................................................................................................................. 39 Simulert lineær regresjonsmodell .................................................................................. 51 pH og vann ....................................................................................................................................... 59 Lys og elektromagnetisk stråling .................................................................................. 61 Entropi og informasjonsteori ............................................................................................ 74 Estimering av sannsynlighetstetthet ........................................................................... 76 Enzymreaksjon og ikke-lineær regresjon .................................................................... 80 Prinsipalkomponenter og matriseregning .................................................................... 83 Mikset effektmodeller............................................................................................................. 93 Overlevelsesanalyse ................................................................................................................. 97 Optimalisering og simplex metode ................................................................................ 106 Tidsserieanalyse Haldenvassdraget Tidsserieanalyse er studier av hvordan en variabel X utvikler seg over tid. Trenden viser utviklingen, mens sesongvariasjonen er typiske svingningsmønstre. I tillegg er det tilfeldig variasjon som ikke følger noe mønster. Autokorrelasjon er korrelasjon mellom nærstående måleverdier i tidsserien. Tidsseriemodellen kan brukes til å lage prognoser om fremtidig utvikling. Data fra A. Johanson: Haldenvassdraget. Haldenvassdragets brukseierforening 2002. Nedslagsfelt: 1594 km 2 . Vannføringen i Haldenvassdraget måles ved Ørje, Brekke og Tistedal.

Upload: others

Post on 19-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

1  

Bruk av R – eksempler © Halvor Aarnes, Biologisk institutt, UiO2009

Innholdsfortegnelse Tidsserieanalyse Haldenvassdraget .................................................................................. 1 

Galapagos og artsrikdom ........................................................................................................ 11 

El nino .............................................................................................................................................. 19 

Mer Galapagos og artsrikdom .............................................................................................. 23 

Predasjon og Hollings eksperiment ................................................................................ 25 

Tetthetsuavhengig vekst ........................................................................................................ 28 

Binomial generalisert modell (GLM) .............................................................................. 31 

Kursoppgaver .................................................................................................................................. 39 

Simulert lineær regresjonsmodell .................................................................................. 51 

pH og vann ....................................................................................................................................... 59 

Lys og elektromagnetisk stråling .................................................................................. 61 

Entropi og informasjonsteori ............................................................................................ 74 

Estimering av sannsynlighetstetthet ........................................................................... 76 

Enzymreaksjon og ikke-lineær regresjon .................................................................... 80 

Prinsipalkomponenter og matriseregning .................................................................... 83 

Mikset effektmodeller ............................................................................................................. 93 

Overlevelsesanalyse ................................................................................................................. 97 

Optimalisering og simplex metode ................................................................................ 106 

 

Tidsserieanalyse Haldenvassdraget

Tidsserieanalyse er studier av hvordan en variabel X utvikler seg over tid. Trenden viser utviklingen, mens sesongvariasjonen er typiske svingningsmønstre. I tillegg er det tilfeldig variasjon som ikke følger noe mønster. Autokorrelasjon er korrelasjon mellom nærstående måleverdier i tidsserien. Tidsseriemodellen kan brukes til å lage prognoser om fremtidig utvikling. Data fra A. Johanson: Haldenvassdraget. Haldenvassdragets brukseierforening 2002. Nedslagsfelt: 1594 km2. Vannføringen i Haldenvassdraget måles ved Ørje, Brekke og Tistedal.

Page 2: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

2  

Gjennomsnittlig vannføring i året ved Tistedal måles i m3/sek og omregnes til årlig vannmengde i millioner m3 som har passert Tistedal. I tillegg takkes Haldenvassdragets brukseierforening for å stille tilleggsdata til rådighet. Følgende variable i datasettet: AAR – Årstall fra 1926-2007 M3 – millioner m3 årlig vannføring som har passert Tistedal MMORJ – millimeter årlig nedbør ved Ørje. Tidsserier er populære forskningsobjekter. #Leser inn datasettet tista3.txt tista<-read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/ plantefys/matematikk/ tista3.txt",header=T) attach (tista) names(tista) [1] "AAR" "M3" "MMORJ"

#Oppsummering av datasettet summary(tista) AAR M3 MMORJ Min. :1926 Min. : 271.1 Min. : 421.0 1st Qu.:1946 1st Qu.: 586.4 1st Qu.: 730.5 Median :1966 Median : 737.4 Median : 796.5 Mean :1966 Mean : 743.5 Mean : 819.3 3rd Qu.:1987 3rd Qu.: 874.1 3rd Qu.: 923.0 Max. :2007 Max. :1367.0 Max. :1343.0 dim(tista) [1] 82 3 str(tista) 'data.frame': 82 obs. of 3 variables: $ AAR : int 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 ... $ M3 : num 960 1324 925 909 958 ... $ MMORJ: num 762 1073 890 742 924 ...

#Lager et tidsserieobjekt regn<-ts(MMORJ,start=c(1926,1),frequency=1) #Lager et plot av tidsserien ts.plot(regn,col="red",ylab="Årlig nedbør (mm)",xlab="År",main=" Årlig nedbør ved Ørje") lines(smooth.spline(AAR,MMORJ),lty=2,col="green",lwd=3) #Lager en lineær modell m1<-lm(MMORJ~AAR) #Plotter modellen som en linje abline(m1)

Page 3: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

3  

Figur 1. Årlig nedbør ved Ørje fra 1926. Det er en signifikant økning i nedbøren i perioden. Oppsummering av lineær modell som viser relasjon mellom nedbør og årstall. summary(m1) Call: lm(formula = MMORJ ~ AAR) Residuals: Min 1Q Median 3Q Max -360.71 -112.90 -18.89 93.88 459.14 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2970.7882 1437.4250 -2.067 0.0420 * AAR 1.9273 0.7309 2.637 0.0100 * --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 156.7 on 80 degrees of freedom Multiple R-squared: 0.07997, Adjusted R-squared: 0.06847 F-statistic: 6.953 on 1 and 80 DF, p-value: 0.01005 #Definerer objektet halden som en tidsserie halden<-ts(M3,start=c(1926,1),frequency=1) #Plotter tidsserie par(bg="lightyellow") ts.plot(halden,col="red",ylab=expression(paste("Vannføring ", (10^6*m^3))),xlab="År",main="Haldenvassdraget til Iddefjorden") #Lager en lineær modell vannføring ~ årstall m2<-lm(M3~AAR) #Skriver inn trendlinjen abline(m2)

Page 4: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

4  

#Lager en tekstboks legend("top",c("Vannføring","Trend"),lty=c(1,1),lwd=c(3,3),col=c("red","green"))

Figur 2. Tidsserie av vannføringen til Iddefjorden fra 1926. Selv om nedbøren øker signifikant er det ikke tilsvarende økning i vannføringen. Betyr dette at mer vann forsvinner tilbake til atmosfæren ved evapotranspirasjon ? Er det blitt mer vegetasjon som gir økt fordampning ? Det kunne være interessant å se på temperaturmålinger fra Met.inst i samme perioden for å se om det eventuell har vært en temperaturstigning i den samme perioden. #Lager en oppsummering av modellen summary(m2) Call: lm(formula = M3 ~ AAR) Residuals: Min 1Q Median 3Q Max -483.27 -141.95 -10.44 123.15 642.14 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1837.6083 1919.6722 0.957 0.341 AAR -0.5564 0.9761 -0.570 0.570 Residual standard error: 209.2 on 80 degrees of freedom Multiple R-squared: 0.004045, Adjusted R-squared: -0.008405 F-statistic: 0.3249 on 1 and 80 DF, p-value: 0.5703

Modellen viser med en p-verdi 0.341 at det ikke har skjedd en signifikant endring i vannføringen i vassdraget i perioden

Page 5: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

5  

1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør ved Ørje ts.plot(halden,col="red",ylab=expression(paste("Nedbør(mm), Vannføring ",(10^6*m^3))),xlab="År",main="Nedbør Ørje og vannføring Tista") lines(AAR,MMORJ,col="blue") lines (smooth.spline(AAR,M3),lty=2,col="green",lwd=3) lines (smooth.spline(AAR,MMORJ),lty=2,col="cyan",lwd=3) legend("top",c("Vannføring Tistedal","mm nedbør Ørje", "Kurveglatting vannføring","Kurveglatting nedbør"),lty=c(1,1,1,1), lwd=c(3,3,3,3),col=c("red","blue","green","cyan"))

Figur 3. Det er et rimelig godt samsvar mellom årlig vannføring til Iddefjorden og årlig nedbør ved Ørje. Det er sykliske svingninger #Lager en ny modell vannføring ~ mm nedbør ved Ørje m2<-lm(M3~MMORJ) summary(m2) Call: lm(formula = M3 ~ MMORJ) Residuals: Min 1Q Median 3Q Max

Page 6: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

6  

-241.49 -80.15 -16.22 59.84 302.97 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -153.5248 62.5465 -2.455 0.0163 * MMORJ 1.0949 0.0749 14.617 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 109.4 on 80 degrees of freedom Multiple R-squared: 0.7276, Adjusted R-squared: 0.7242 F-statistic: 213.7 on 1 and 80 DF, p-value: < 2.2e-16

Det kan lages følgende modell som beskriver sammenhengen mellom årlig vannføring ved Tistedal og millimeter årsnedbør ved Ørje. Standardfeil sees i koeffisienttabellen over:

ø 10 · 153.525 1.095 · ø #Korrrelasjon mellom vannføring og nedbør cor(M3,MMORJ) [1] 0.8529805

Korrelasjonen 0.85 viser at ut fra årsnedbøren ved Ørje får man et godt estimat av vannføringen til Iddefjorden

Tidsserie fra 1898-2007 Vi laster inn et nytt datasett med variable AAR: Årstall fra 1898-2007 VANNF: m3/sek ved Femsjøens utløp NEDBOR – millimeter nedbør ved Ørje detach(tista) #Laster inn nytt datasett femsjoe<-read.table("D://bio2110/2009/femsjoen2.txt", header=T) attach(femsjoe) names(femsjoe) [1] "AAR" "VANNF" "NEDBOR" fem<-ts(VANNF,start=c(1898,1),frequency=1) par(bg="lightyellow") ts.plot(fem,col="red",ylab=expression(paste("Vannføring ", (m^3/sek))),xlab="År",main="Avløp ved Femsjøen") lines (smooth.spline(AAR,VANNF),lty=2,col="green",lwd=3)

Page 7: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

7  

Figur 4. Haldenvassdraget avløp i m3/sekund ved Femsjøens utløp. fem2<-ts(NEDBOR,start=c(1898,1),frequency=1) ts.plot(fem2,col="blue",ylab=expression(paste("Nedbør ved Ørje ", (mm/år))),xlab="År",main="Nedbør ved Ørje") lines (smooth.spline(AAR,NEDBOR),lty=2,col="green",lwd=3)

Figur 5. Nedbør ved Ørje. Måler vi over en lenger tidsperiode får vi nå en signifikant økning i nedbøren ved Ørje fra 1898. Dette blir ytterligere signifikant, hvor vi fra 1926 bare så

Page 8: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

8  

en tendens. Imidlertid gjenspeiles ikke den økte nedbøren ved Ørje i økt vannføring ut av Femsjøen. Økt fordampning ? Korrelasjon med NAO ? #Lager en ny modell m4<-lm(NEDBOR~AAR) summary(m4) Call: lm(formula = NEDBOR ~ AAR) Residuals: Min 1Q Median 3Q Max -368.11 -113.40 -20.46 93.96 465.82 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2446.3858 874.6962 -2.797 0.006111 ** AAR 1.6618 0.4479 3.710 0.000329 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 149.2 on 108 degrees of freedom Multiple R-squared: 0.113, Adjusted R-squared: 0.1048 F-statistic: 13.76 on 1 and 108 DF, p-value: 0.0003294 abline(model3,col="red") Modell m4 viser en signifikant økning i nedbøren ved Ørje fra 1898.

Avløp i m3/sekund ved Femsjøen fordelt på måned fem<-read.table("D://bio2110/2009/fem2.txt", header=T) attach(fem) names(fem) [1] "AAR" "M3SEK" str(fem) 'data.frame': 1248 obs. of 2 variables: $ AAR : num 1898 1898 1898 1898 1898 ... $ M3SEK: num 54.5 17.6 16.7 19 40.2 ... summary(fem) AAR M3SEK Min. :1898 Min. : 1.46 1st Qu.:1924 1st Qu.: 12.36 Median :1950 Median : 18.26 Mean :1950 Mean : 23.49 3rd Qu.:1975 3rd Qu.: 31.06 Max. :2001 Max. :133.48

fem3<-ts(M3SEK,start=c(1898,1),frequency=12) par(bg="lightyellow")

Page 9: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

9  

ts.plot(fem3,col="blue",ylab=expression(paste("Vannføring ", (m^3/sek))),xlab="År",main="Vannutløp Femsjøen") lines (smooth.spline(AAR,M3SEK),lty=2,col="red",lwd=3)

Figur Vannføring angitt som avløp ved Femsjøens utløp boxplot(split(fem3,cycle(fem3)),col="blue",names=month.abb, xlab="Måned", ylab=expression(paste("Vannføring ", (m^3/sek))),main="Vannutløp Femsjøen 1898-2001")

Page 10: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

10  

Figur. Boksplot av vannføring ved Femsjøens utløp fra 1898-2001. Den svarte streken i boksen angir median-verdi, boksen angir interkvartilområdet. Prikket linje angir verdier som ligger i området 1.5 ganger interkvartilområdet. Svarte rundinger er utliggere som viser atypiske verdier. acf(M3SEK,col="red",main="Vannutløp Femsjøen m^3/sek)")

Figur. Autokorrelasjon viser de sykliske svingningene som man kan se på figuren.

Page 11: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

11  

Galapagos og artsrikdom Johnson og Raven (1973) undersøkte fordeling av planter og artsrikdom på 29 øyer på Galapagos, et datasett som er mye brukt i undervisning av regresjon. Datasettet inneholder navn på øyene, antall arter og endemismer; areal, høyde og avstand til nærliggende øyer med tilhørende areal. Michael P. Johnson & Peter H. Raven: Species Number and Endemism: The Galápagos Archipelago Revisited. Science, Vol. 179, No. 4076 (Mar. 2, 1973), pp. 893-895

Se nærmere behandling av datasettet i: Faaraway, J.J. Linear models with R. Chapman & Hall/CRC 2005 Faraway, J.J. Extending linear model with R. Chapman & Hall/CRC 2006. #Leser inn data og studerer datasettet galapagos<-read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/plantefys/ matematikk /galapagos.txt",header=T) attach(galapagos) names(galapagos) [1] "Sted" "Art" "Endemisk" "Areal" [5] "Elevation" "Naerest.avst" "Stcruz.avst" "Naerest.areal" str(galapagos) 'data.frame': 29 obs. of 8 variables: $ Sted : Factor w/ 29 levels "Baltra","Bartolome",..: 1 2 3 4 5 6 7 8 9 10 ... $ Art : int 58 31 3 25 2 18 10 8 2 97 ... $ Endemisk : int 23 21 3 9 1 11 7 4 2 26 ... $ Areal : num 25.09 1.24 0.21 0.1 0.05 ... $ Elevation : int 100 109 114 46 5 120 168 90 112 198 ... $ Naerest.avst : num 0.6 0.6 2.8 1.9 1.9 8 34.1 0.4 2.6 1.1 ... $ Stcruz.avst : num 0.6 26.3 58.7 47.4 1.9 ... $ Naerest.areal: num 1.84 572.33 0.78 0.18 903.82 ... summary(galapagos) Sted Art Endemisk Areal Baltra : 1 Min. : 2.00 Min. : 1 Min. : 0.01 Bartolome : 1 1st Qu.: 12.00 1st Qu.: 8 1st Qu.: 0.34 Caldwell : 1 Median : 44.00 Median :19 Median : 2.85 Champion : 1 Mean : 87.34 Mean :27 Mean : 270.73 Coamano : 1 3rd Qu.: 97.00 3rd Qu.:33 3rd Qu.: 59.56 Daphne.Major: 1 Max. :444.00 Max. :95 Max. :4669.32 (Other) :23 Elevation Naerest.avst Stcruz.avst Naerest.areal Min. : 5.0 Min. : 0.2 Min. : 0.00 Min. : 0.03 1st Qu.: 90.0 1st Qu.: 0.7 1st Qu.: 10.70 1st Qu.: 0.52 Median : 186.0 Median : 2.8 Median : 47.40 Median : 2.85

Page 12: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

12  

Mean : 360.8 Mean :10.2 Mean : 58.53 Mean : 270.09 3rd Qu.: 458.0 3rd Qu.:10.7 3rd Qu.: 85.90 3rd Qu.: 59.56 Max. :1707.0 Max. :47.4 Max. :290.20 Max. :4669.32 dim(galapagos) [1] 29 8

galapagos Sted Art Endemisk Areal Elevation Naerest.avst Stcruz.avst 1 Baltra 58 23 25.09 100 0.6 0.6 2 Bartolome 31 21 1.24 109 0.6 26.3 3 Caldwell 3 3 0.21 114 2.8 58.7 4 Champion 25 9 0.10 46 1.9 47.4 5 Coamano 2 1 0.05 5 1.9 1.9 6 Daphne.Major 18 11 0.34 120 8.0 8.0 7 Darwin 10 7 2.33 168 34.1 290.2 8 Eden.Rock 8 4 0.03 90 0.4 0.4 9 Enderby 2 2 0.18 112 2.6 50.2 10 Espanola 97 26 58.27 198 1.1 88.3 11 Fernandina 93 35 634.49 1494 4.3 95.3 12 Gardner.a 58 17 0.57 49 1.1 93.1 13 Gardner.b 5 4 0.78 227 4.6 62.2 14 Genovesa 40 19 17.35 76 47.4 92.2 15 Isabela 347 89 4669.32 1707 0.7 28.1 16 Marchena 51 23 129.49 343 29.1 85.9 17 Onslow 2 2 0.01 25 3.3 45.9 18 Pinta 104 37 59.56 777 29.1 119.6 19 Pinzon 108 33 17.95 458 10.7 10.7 20 Las.Plazas 12 9 0.23 25 0.5 0.6 21 Rabida 70 30 4.89 367 4.4 24.4 22 San.Cristobal 280 65 551.62 716 45.2 66.6 23 San.Salvador 237 81 572.33 906 0.2 19.8 24 Santa.Cruz 444 95 903.82 864 0.6 0.0 25 Santa.Fe 62 28 24.08 259 16.5 16.5 26 Santa.Maria 285 73 170.92 640 2.6 49.2 27 Seymour 44 16 1.84 30 0.6 9.6 28 Tortuga 16 8 1.24 186 6.8 50.9 29 Wolf 21 12 2.85 253 34.1 254.7 Naerest.areal 1 1.84 2 572.33 3 0.78 4 0.18 5 903.82 6 1.84 7 2.85 8 17.95 9 0.10 10 0.57 11 4669.32 12 58.27 13 0.21 14 129.49 15 634.49 16 59.56 17 0.10 18 129.49 19 0.03 20 25.09 21 572.33 22 0.57 23 4.89 24 0.52 25 0.52

Page 13: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

13  

26 0.10 27 25.09 28 17.95 29 2.33

> Vi lar S være artsrikdom og A være areal på øyene. Vi skal undersøke forskjellige modeller for å se hvor godt de beskriver sammenhengen mellom artsrikdom og areal. Straks det gjelder tellinger av individer, arter eller hendelser som forekommer tilfeldig i tid og rom bør man ha Poisson-fordeling i tankene. Det første man skal gjøre da man har et datasett er å lage alle typer forskjellige grafiske framstillinger for å se om det er sammenhenger.

~ ~ Vi forsøker først en lineær modell med normalfordeling N(μ,σ2) og ser av figuren at dette ble en modell som beskriver datasettet meget dårlig. par(bg="lightyellow") plot(Areal,Art,col="blue",ylab="Antall arter", main="Galapagos") mod1<-lm(Art~Areal) abline(mod1,col="green",lty=3,lwd=3)

Vi kan deretter prøve med ikke-lineær regresjon (nls) for en potensmodell

Page 14: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

14  

mod2<-nls(Art~b0*Areal^b1,start=list(b0=5,b1=0.7)) coef(mod2) summary(mod2) Formula: Art ~ b0 * Areal^b1 Parameters: Estimate Std. Error t value Pr(>|t|) b0 33.39781 10.04868 3.324 0.00256 ** b1 0.29857 0.04412 6.766 2.89e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 60.04 on 27 degrees of freedom Number of iterations to convergence: 10 Achieved convergence tolerance: 1.863e-06 f<-function(x)coef(mod2)[1]*x^(coef(mod2)[2]) curve(f,0,4500,col="magenta",lty=3,lwd=3,add=T) Man kan også forsøke med en selvstartende assymptotisk regresjonsmodell SSasymp(), som estimerer asymptoten (Asym), responsparameter (R0)når input er lik 0 (β0) og naturlige logaritmen til hastighetskonstanten (lrs). Deretter brukes estimatene av koeffisientene som ovenfor. mod2B<-nls(Art~SSasymp(Areal,Asym,R0,lrc)) abline(h=coef(mod2B)["Asym"],col ="cyan",lty=2,lwd=3) Vi kan logtransformere prediktor (uavhengig variabel, forklaringsvariabel) :

~ log log plot(log(Areal),Art,col="blue",pch=16,ylab="Antall arter", main="Galapagos") mod3<-lm(Art~log(Areal)) abline(mod3,col="green",lty=3,lwd=3)

Page 15: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

15  

Vi kan finne loglikelihood for modellene mod1,mod2,mod3. logLik(mod1) 'log Lik.' -171.5861 (df=3) logLik(mod2) 'log Lik.' -158.8675 (df=3) logLik(mod3) 'log Lik.' -164.5773 (df=3)

Siden modell2 er ikke-lineær vil AIC-verdien vi bestemmer for denne bli feil, men loglikelihood blir riktig. Vi kan sammenligne modell1 og modell3 med AIC, og den beste modellen har laveste AIC-verdi. AIC(mod1) [1] 349.1721 AIC(mod2) [1] 323.735

Vi kan nå så på en log-logmodell

log ~ log log log plot(log(Areal),log(Art),col="blue",pch=16,cex=1.5,ylab="log(Antall arter)", main="Galapagos") mod4<-lm(log(Art)~log(Areal)) abline(mod4,col="green",lty=3,lwd=3) logLik(mod4) 'log Lik.' -32.06901 (df=3) AIC(mod4) [1] 70.13803

Page 16: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

16  

Vi kan prøve en generalisert lineær modell med log-linkfunksjon (family=poisson), men ser at dette er ingen god modell ut fra AIC-verdien. mod5<-glm(Art~log(Areal),family=poisson) logLik(mod5) 'log Lik.' -398.0133 (df=2) AIC(mod5) [1] 800.0266

Regresjonsdiagnostikk Vi har til nå ikke sett på om forutsetningene for regresjon er oppfylt.. Antar at ε ~N(0,σ2) dvs. feilene er uavhengige, har lik varianse og er normalfordelt. Uvanlige observasjoner passer ofte ikke inn i modellen. Diagnostikk kan være grafisk eller numerisk. Vi kan ikke observere feilene, bare feilresidualene. Utliggere er punkter som ikke passer i modellen. Må skille mellom uvanlige observasjoner og store ikke uvanlige residualer. En utligger i en modell behøver ikke være utligger i en annen modell. For store datasett representerer noen få utliggere ikke noe problem, verre er det med klynger av utliggere. Sjekk for feil innlesing av data. Vitenskapelige oppdagelser kan følge fra uvanlige avvik mod7<-lm(Art~Areal+Elevation+Stcruz.avst+Naerest.avst+Naerest.areal) plot(fitted(mod7),residuals(mod7),xlab="Tilpasset (Fitted)",ylab="Residualer", col="blue",main="Galapagos") abline(h=0,lty=2,col="green",lwd=3)

Page 17: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

17  

Figuren indikerer at variansen er ikke konstant. Vi kan kvadratrottransformere responsvariabel, og ser at residualene ser bedre ut mod8<-lm(sqrt(Art)~Areal+Elevation+Stcruz.avst+Naerest.avst+Naerest.areal) plot(fitted(mod8),residuals(mod8),xlab="Tilpasset (Fitted)",ylab="Residualer", col="blue",main="Galapagos") abline(h=0,lty=2,col="green",lwd=3)

qqnorm(residuals(mod7),ylab="Residualer",col="blue") qqline(residuals(mod7),col="red",lwd=3) qqnorm(residuals(mod8),ylab="Residualer",col="blue") qqline(residuals(mod8),col="red",lwd=3)

Page 18: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

18  

Shapiro-Wilk test Nullhypotesen er at residualene er normalfordelt. Høy p-verdi gjør at nullhypotesen ikke kan forkastes. P-verdien er ikke noe godt mål og denne bør kombineres med et QQ-plot. shapiro.test(residuals(mod7)) Shapiro-Wilk normality test data: residuals(mod7) W = 0.9292, p-value = 0.05244 shapiro.test(residuals(mod8)) Shapiro-Wilk normality test data: residuals(mod8) W = 0.974, p-value = 0.6718

Vi ser at det bare er modell8 som tilfredsstiller godt at residualene er normalfordelte Durban-Watsontest for korrelasjon: library(lmtest) dwtest(Art)~Areal+Elevation+Stcruz.avst+Naerest.avst+Naerest.areal) Er det sammenheng mellom høyde på øyene og antall arter ? plot(Art,Elevation, col="blue",pch=16,cex=1.5, ylab="Høyde", xlab="Antall arter",main="Galapagos") mod9<-lm(Elevation~Art) abline(mod9,lty=2,col="green",lwd=3)

Slik kan man fortsette å studere datasettet, og forsøke å finne en god modell. ?glm

Page 19: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

19  

El nino Værfenomenet El nino. AAR- årstall, TEMP- overflatetemperatur i havet (oC) elnino<-read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/ plantefys/matematikk /elnino2.txt",header=T) attach (elnino) names(elnino) [1] "AAR" "TEMP" summary(elnino) AAR TEMP Min. :1951 Min. :18.57 1st Qu.:1965 1st Qu.:21.07 Median :1979 Median :22.73 Mean :1979 Mean :23.02 3rd Qu.:1994 3rd Qu.:24.92 Max. :2008 Max. :29.15 dim(elnino) [1] 684 2 str(elnino) 'data.frame': 684 obs. of 2 variables: $ AAR : num 1951 1951 1951 1951 1952 ... $ TEMP: num 25.1 25.4 25.9 25.3 24.9 ... #Lager et tidsserieobjekt klim<-ts(TEMP,start=c(1951,1),frequency=12) #Lager et plot av tidsserien par(bg="lightyellow") ts.plot(klim,col="red",ylab="Temperatur (oC)",xlab="År",main=" El nino")

Page 20: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

20  

#Trendanalyse periode<-stl(klim,"period") plot(periode,col="blue",main="Trendanalyse minimumstemp 1937-2009")

acf(MINT,col="blue", main="Autokorrelasjon

Page 21: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

21  

Maurtue Vi har et simulert datasett som viser antall maurtuer per prøveflate i en granskog og furuskog, og vi ønsker å undersøke om det er noen signifikante forskjeller. Vi starter med en parametrisk analyse hvor vi beregner gjennomsnitt, standardavvik og lager et boksplot av data read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/plantefys/ matematikk /maurtue.txt ", header=T) attach(tue) names(tue) middel<-tapply(antall,habitat,mean) #forventet verdi furu gran 7.00 10.75 sd<-tapply(antall,habitat,sd);sd #standardavvik furu gran 2.190890 1.500000 par(bg="lightyellow") boxplot(antall~habitat,ylim=c(0,16),col="lightgreen",ylab=”Antall”)

Page 22: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

22  

anova(lm(antall~habitat)) Analysis of Variance Table Response: antall Df Sum Sq Mean Sq F value Pr(>F) habitat 1 33.750 33.750 8.7805 0.01806 * Residuals 8 30.750 3.844 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Vi ser først på nullmodellen som gir forventet verdi: modell0<-lm(antall~1) #nullmodell summary(modell0) mean(antall) Vi lager en linær modell og ser hvordan habitat påvirker antall arter. Habitatfuru blir brukt som referense og settes lik 0, og vi ser at den blir lik intercept. mod1<-lm(antall~habitat) summary(mod1) Call: lm(formula = antall ~ habitat) Residuals: Min 1Q Median 3Q Max -3.000 -1.000 -0.375 1.250 3.000 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 7.0000 0.8004 8.746 2.29e-05 *** habitatgran 3.7500 1.2655 2.963 0.0181 * --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.961 on 8 degrees of freedom Multiple R-squared: 0.5233, Adjusted R-squared: 0.4637

Page 23: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

23  

F-statistic: 8.78 on 1 and 8 DF, p-value: 0.01806 mod2<-glm(antall~habitat,poisson) summary(mod2) AIC(mod1)

Mer Galapagos og artsrikdom Følgende datasett fra Galapagos-øyene er fra Preston,F.W. The commonness and rarity of species. Ecology 29(1948)254-283 Preston, F.W. The canonical distribution of commonness and rarity. Ecology 43 (1962) 185-215. Arealet er gitt i km2. Også behandlet I Gotelli, N.J. & Ellison, A.M. A primer of ecological statistics. Sinauer Assoc. Inc. 2004. Oppgavesettet tar for seg sammenhengen mellom antall arter (A) og størrelsen på øyer (S), som ofte følger en potensfunksjon:

log log · log hvor b og d er konstanter. Vi ser at dette i et plot log(A) versus log(S) blir en rett linje med intercept log(b) og stigningskoeffisient d. Når vi bruker kommandoen log() i R betyr det grunntall e, skriv log10() hvis man ønsker logaritmer med grunntall 10. galapspec<-read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/plantefys/ matematikk /galapspec2.txt ", header=T) attach(galapspec) names(galapspec) galapspec ISLAND AREAL ANTALL 1 Isabela 5824.9 325 2 Floreana 165.8 319 3 SanCristobal 505.1 306 4 Santiago 525.8 224 5 SantaCruz 1007.5 193 6 Pinta 51.8 119 7 Pinzon 18.4 103 8 Fernandina 634.6 80 9 Espanola 46.6 79 10 Seymour 2.6 52 11 Gardner 19.4 48 12 SantaFe 0.5 48 13 Gardner 116.6 47 14 Marchena 4.8 42 15 Rabida 11.4 22 16 Genovesa 4.7 14 17 Wolf 2.3 7

Page 24: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

24  

par(bg="lightyellow") plot(AREAL,ANTALL, col="blue",pch=16,cex=1.5, ylab="Antall arter", xlab="Størrelse, km^2",main="Galapagos") modell2<-lm(ANTALL~AREAL) summary(modell2) abline(modell2,col="red",lwd=3) par(bg="lightyellow") plot(log10(AREAL),log10(ANTALL), col="blue",pch=16,cex=1.5, ylab="log(antall arter)", xlab="log(areal, km^2)",main="Galapagos") modell1<-lm(log10(ANTALL)~log10(AREAL)) summary(modell1) Call: lm(formula = log10(ANTALL) ~ log10(AREAL)) Residuals: Min 1Q Median 3Q Max -0.59575 -0.32767 0.02589 0.25759 0.45894 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.32157 0.14203 9.305 1.28e-07 *** log10(AREAL) 0.32976 0.07188 4.587 0.000356 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 0.3208 on 15 degrees of freedom Multiple R-squared: 0.5838, Adjusted R-squared: 0.5561 F-statistic: 21.04 on 1 and 15 DF, p-value: 0.0003558 abline(modell1,col="red",lwd=3)

Page 25: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

25  

Vi får den lineære sammenhengen:

log log b · log ø 1.32157 0.32976 · log

20.9686 2.136781 · Størrelse km Det betyr at når arealet øker 10 ganger så øker antall arter ca. 2 ganger. dotchart(galapspec $AREA,galapspec$ISLAND,col=4,xlab="AREAL (km^2)") dotchart(galapspec $ANTALL,galapspec$ISLAND,col=4,xlab="Antall arter")

Predasjon og Hollings eksperiment Funksjonelle responskurver type I, II, og III (Hollingkurver), Michaelis-Menten kurver etc. er viktige for å kunne beskrive responsen i biologiske og økologiske systemer, bl.a. ved predasjon. Funksjonell respons er raten som en predator dreper bytte. Slike hyperbolske kurver er kjent fra Michaelis-Menten enzymkinetikk hvor reaksjonshastighet plottes mot substratkonsentrasjon. Monodkurve (1942) har substratkonsentrasjon på x-aksen og spesifikk vekstrate på y-aksen, og har samme form som Michaelis-Menten kurven. Funksjonell responskurve for Nicholson-Bailey-modell beskriver relasjonen mellom antall verter og tettheten av parasitter. Kurven er også et resultat av C.Hollings simulerte ”predator-byttedyr” eksperiment fra 1959 basert på gjenfinning av sandpapirbiter.

Page 26: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

26  

Type I funksjonell respons er den enkleste, hvor b er en annen type bytte.

Tre forskjellige typer Holling kurver hvor B er byttedyrtettheten og n/t er antall byttedyr spist per tidsenhet:

Hollings eksperiment går ut på at en forsøksperson skal finne igjen sandpapirbiter bare ved berøring med fingerspissene, uten å se. Sandpapirbiter legges ut på et stort hvitt ark. Man dekker til øynene og søk foretas bare med fingerspissene i en gitt tidsperiode. Antall sandpapirbiter per arealenhet er uavhengig variabel, x, varieres under eksperimentet og man teller opp hvor mange man kan finne igjen i et gitt tidsrom (avhengig variabel, y), og disse plottes mot hverandre. Total tid t er summen av søketid (ts) og handteringstid (th):

·

hvor h er handteringstid per bytte.

1 1 1

1

1

Hvis konsentrasjonen av bytterdyr B er meget lag så vil aHh bli liten og n/t er proporsjonal med aB, slik det er i den enkleste Lotka-Volterra modellen med type I respons. Hvis byttedyrkonsentrasjonen er stor så vil n/t nærme seg 1/h. Vi har den maksimale spiseraten k=1/h:

1

Halvmetningskonstanten D=1/ah 1

Vi dividerer teller og nevner på ah og får Hollings funksjonell responstype type II

Page 27: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

27  

1

Hollings type III responskurve er sigmoid:

a<-0.8 h<-0.8 D<-1/(a*h) k<-1/h par(bg="lightyellow") curve(a*x,0,2,xlab="Byttetetthet", ylab="Antall byttedyr drept per predator",col=2,lwd=3, main="Funksjonell responskurver") curve(k*x/(D+x),0,2,add=T,col=3,lty=2,lwd=3) curve(k*x^2/(D^2+x^2),0,2,add=T,col=4,lty=3,lwd=3) legend("topleft",c("Type I","Type II","Type III"),lty=1:3,col=2:4,lwd=c(3,3,3))

Forskjellene kommer tydeligere fram hvis man plotter byttdyrtetthet versus antall byttedyr drept per predator per byttedyr a<-0.8 h<-0.8 D<-1/(a*h) k<-1/h par(bg="lightyellow") curve((a*x)/x,0,2,xlab="Byttetetthet", ylab="Antall byttedyr drept per predator per byttedyr",col=2,lwd=3,

Page 28: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

28  

ylim=c(0,0.8),main="Funksjonell responskurver") curve(k*x/(D+x)/x,0,2,add=T,col=3,lty=2,lwd=3) curve(k*x^2/(D^2+x^2)/x,0,2,add=T,col=4,lty=3,lwd=3) legend("bottomright",c("Type I","Type II","Type III"),lty=1:3,col=2:4,lwd=c(3,3,3))

Tetthetsuavhengig vekst Anta at du planter en plante, neste år er det 4 planter, deretter 64 og 256. Vi kan lage en modell som beskriver denne geometriske veksten: n0=1 n2=4·n1 n3=4·n2=4·4·n1 n4=4·n3=4·4·4·n1 Vi ser at det er forskjell i økning i antall planter år for år, men forholdet nt+1/nt blir konstant: n<-c(1,4,16,64,256) t<-c(1,2,3,4,5) par(bg="lightyellow") plot(t,n, xlab="Tid (år)",ylab="Antall planter",pch=16,col=2,cex=2) diff<-n[2:5]-n[1:4];diff #forskjellen fra år til år varierer [1] 3 12 48 192 ratio<-n[2:5]/n[1:4];ratio #ratio er konstant [1] 4 4 4 4

Vi kan lage følgende modell og bruke den til å prediktere antall planter

Page 29: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

29  

· lambda<-4 tid<-seq(0,8,1) n0<-1 nt<-n0*lambda^tid;nt [1] 1 4 16 64 256 1024 4096 16384 65536

Vi kan ha forskjellige startverdier for n0, og vi bruker deretter sapply(), og deretter matplot() for å plotte matrisen: n0b<-c(1,5,10,15) #Forskjellige startverdier n0 lamda<-4 tidb<-seq(0,4,1) ntb<-sapply(n0b,function(x) x*lambda^tidb);ntb [,1] [,2] [,3] [,4] [1,] 1 5 10 15 [2,] 4 20 40 60 [3,] 16 80 160 240 [4,] 64 320 640 960 [5,] 256 1280 2560 3840 matplot(tidb,ntb,pch=1:5,col=2:5,xlab="Tid (år)",ylab="Antall")

Page 30: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

30  

Logaritmisk skala, og vi ser nå at vi får paralelle linjer med intercept i startverdien matplot(tidb,log(ntb),pch=1:5,col=2:5,cex=1.5,xlab="Tid (år)",ylab="ln(Antall)")

Kontinuerlig eksponentiell vekst kan beskrives av differensialligningen

·

hvor r er per capita vekstrate. Analytisk løsning av denne er:

Vi kan finne doblingstiden:

2 · 2 2

Page 31: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

31  

Binomial generalisert modell (GLM) Datasettet menarche er hentet fra MASS (W.N. Venable and B.D. Ripley). Datasettet viser alderen for første menstruasjon hos jenter fra Warsawa i 1965. Variablene Total viser antall jenter, Age er midtpunktet i aldersgruppen og Menarche er antall som har hatt mensturasjon. library(MASS) library(help=MASS) ?menarche data(menarche) menarche Age Total Menarche 1 9.21 376 0 2 10.21 200 0 3 10.58 93 0 4 10.83 120 2 5 11.08 90 2 6 11.33 88 5 7 11.58 105 10 8 11.83 111 17 9 12.08 100 16 10 12.33 93 29 11 12.58 100 39 12 12.83 108 51 13 13.08 99 47 14 13.33 106 67 15 13.58 105 81 16 13.83 117 88 17 14.08 98 79 18 14.33 97 90 19 14.58 120 113 20 14.83 102 95 21 15.08 122 117 22 15.33 111 107 23 15.58 94 92 24 15.83 114 112 25 17.58 1049 1049

Vi kan først utføre en logistisk regresjon på ratio, men vi må huske på å angi totalantallet som weights: attach(menarche) names(menarche) ratio<-Menarche/Total #ratio jenter som har hatt menstruasjon par(bg="lightyellow") plot(Age,ratio,col=4,pch=16,cex=1.5) modell1<-glm(ratio~Age, family=binomial,weights=Total)

Page 32: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

32  

summary(modell1) Call: glm(formula = ratio ~ Age, family = binomial, weights = Total) Deviance Residuals: Min 1Q Median 3Q Max -2.0363 -0.9953 -0.4900 0.7780 1.3675 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -21.22639 0.77068 -27.54 <2e-16 *** Age 1.63197 0.05895 27.68 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 3693.884 on 24 degrees of freedom Residual deviance: 26.703 on 23 degrees of freedom AIC: 114.76 Number of Fisher Scoring iterations: 4 #predikterer y-verdier fra modellen y<-predict(modell1,type="response")#predikterer y-verdier lines(Age,y,col=3,lwd=3) #type=”response” gjør at sannsynlighetene beregnes direkte

Vi kan også undersøke data ved å lage en binomial modell basert på ja eller nei til menstruasjon, og som gir samme resultat: ja<-Menarche nei<-Total-Menarche janei<-cbind(ja,nei) modell2<-glm(janei~Age,family=binomial) summary(modell2) Call:

Page 33: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

33  

glm(formula = janei ~ Age, family = binomial) Deviance Residuals: Min 1Q Median 3Q Max -2.0363 -0.9953 -0.4900 0.7780 1.3675 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -21.22639 0.77068 -27.54 <2e-16 *** Age 1.63197 0.05895 27.68 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 3693.884 on 24 degrees of freedom Residual deviance: 26.703 on 23 degrees of freedom AIC: 114.76 Number of Fisher Scoring iterations: 4

Vi ser at residual-deviansen ikke er vesentlig større enn antall frihetsgrader, slik at vi har ingen tydelig overdispersjon. Hadde det vært overdispersjon kunne man ha forsøkt family=quasibinomial. I koeffisienttabellen finner vi som foran intercept (-21.226) og stigningskoeffsient (1.632) med tilhørende standardfeil (SE) og z-verdien er meget signifikant <2e-16 ***. coef(modell2) (Intercept) Age -21.226395 1.631968 #Konfidensintervall for parameterverdiene confint(modell2) Waiting for profiling to be done... 2.5 % 97.5 % (Intercept) -22.786603 -19.763832 Age 1.520103 1.751327 janei ja nei [1,] 0 376 [2,] 0 200 [3,] 0 93 [4,] 2 118 [5,] 2 88 [6,] 5 83 [7,] 10 95 [8,] 17 94 [9,] 16 84 [10,] 29 64 [11,] 39 61 [12,] 51 57 [13,] 47 52 [14,] 67 39 [15,] 81 24 [16,] 88 29 [17,] 79 19 [18,] 90 7 [19,] 113 7 [20,] 95 7

Page 34: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

34  

[21,] 117 5 [22,] 107 4 [23,] 92 2 [24,] 112 2 [25,] 1049 0

#ANOVA anova(modell2,test="Chisq") Analysis of Deviance Table Model: binomial, link: logit Response: janei Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL 24 3693.9 Age 1 3667.2 23 26.7 0.0

Endringen i Deviance i ANOVA-testen gir 26.7 testet som kjikvadrat med 1 frihetsgrad. I den logistiske fordelingen har vi kommandoene dlogis(),plogis(),qlogis() og rlogis(. Vi kan bruke qlogis() til å finne kvantilene til ratio og plotte disse. Vi ser at logit er symmetrisk omkring 0. ratio<-Menarche/Total #ratio jenter som har hatt menstruasjon ratio logitp<-qlogis(ratio) logitp plot(Age,logitp, col=4,pch=16) abline(modell2,col=3,lwd=3) #Alternativ måte å lage linjetilpasningen linpred<-modell2$linear.predictors lines(Age,linpred,col=2,lwd=3)

For en logistisk regresjon har vi at logaritmen til odds, kalt logit, er lik:

1

Page 35: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

35  

Logit vil si logistisk invers transformasjon. Logittransformasjon omdanner sannsynligheter til log(odds). Hvis vi tar eksponentialfunksjonen for en parameter β, exp(β) dss. eβ, så blir dette effekten av parameteren på odds. I vår modell ovenfor har vi:

1 21.22639 1.63197 · Alder

Vi kan beregne oss tilbake fra log(odds) til sannsynligheten p for menstruasjon ved en gitt alder, siden:

1

Siden vi har at:

så blir odds lik:

Sannsynligheten p kan derfor skrives som et odds ratio:

1

coef(modell1) #Koeffisientene i modellen slope<-coef(modell1)["Age"] #stigningstall intercept<-coef(modell1)["(Intercept)"] #intercept alder<-seq(9,18,0.1) #lar alder gå fra 9 til 18 i trinn 0.1 logitalder<-intercept+slope*alder p<-exp(logitalder)/(1+exp(logitalder)) plot(alder,p,type="l",col=3,lwd=3,ylab="Sannsynlighet",xlab="Alder (år)") #Sammenligner med modellen points(Age,predict(modell1,type="response"),col=2)

Page 36: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

36  

Figuren viser sannsynligheten for å ha fått første menstruasjon ved en gitt alder for jenter i Warsawa 1965. Legg merke til at det nå er sannsynligheten p vi har på y-aksen. Vi kan finne alderen når 50% av jentene har fått mens, dvs. p=0.5 og det gir

1 21.22 1.63 ·Alder 21.22 1.63 · Alder 0 alder 13 år Vi kan se litt på hvordan logit oppfører seg. La oss ha p=0-1 og vi regner ut odds og logit, Inf er uendelig p<-seq(0,1,0.1);p #p-verdier fra 0-1 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 odds<-p/(1-p);odds # regner ut odds [1] 0.0000000 0.1111111 0.2500000 0.4285714 0.6666667 1.0000000 1.5000000 [8] 2.3333333 4.0000000 9.0000000 Inf logit<-log(odds);logit #regner ut logit [1] -Inf -2.1972246 -1.3862944 -0.8472979 -0.4054651 0.0000000 [7] 0.4054651 0.8472979 1.3862944 2.1972246 Inf

For binære data som inngår i en binær modell så blir Bernoulli-fordelingen:

1 Pr 0 1 P 1 Dette er lik den binomiale fordelingen når n=1. Logisk TRUE er det samme som x=1. Den binomiale fordelingen for sannsynligheten P(x) for å få x en en sort (suksess) og n-x av en annen sort (ikke suksess):

1 !

! !

Page 37: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

37  

Deviansen (D) for en binomial modell er i enkleste form:

2 · 1 · 1

Ved vanlig lineær normalfordelt regresjon bruker vi minste kvadraters metode og estimatet for parameterverdiene følger normalfordeling. Residualkvadratsummene, forskjellen mellom tilpasset modell og data skal da følge normalfordeling. For ikke-lineær regresjon er det tilsvarende begrepet devianse (D). Verdiene for β0 og β1 er de som gir maksimum likelihood. Vanligvis oppgis dette som -2·log(likelihoodratio), og som følger en kji-kvadratfordeling.

2 ~ Den fullstendige modellen er mettet, dvs. det er en parameterverdi for alle observasjonene. Deviansen for den modellen vi har funnet blir lik 2(log(nåværende modell-log(fullstendig modell)) I valget mellom flere modeller (modellseleksjon) kan man bruke AIC (Akaike Information Criterium), og den modellen med lavest AIC foretrekkes. AIC inneholder en straffeparameter hvis antall parametre i modellen øker, her betyr p antall parametere:

2 Eksempel Pakken car laget av John Fox og Sanford Weisberg inneholder flere datasett og benytter seg av pakkene MASS og survival. Vi skal se nærmere på datasettet Robey som har variablene region (Afrika, Asia, Latin Amerika, Nære Østen), tfr – total fødselsrate (antall barn per kvinne), contraceptors - % av gifte kvinner som bruker prevensjon. library(car) library(help=car) data() data(Robey) attach(Robey) names(Robey) [1] "region" "tfr" "contraceptors" ?Robey Robey

Page 38: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

38  

region tfr contraceptors Botswana Africa 4.8 35 Burundi Africa 6.5 9 Cameroon Africa 5.9 16 Ghana Africa 6.1 13 Kenya Africa 6.5 27 Liberia Africa 6.4 6 Mali Africa 6.8 5 Mauitius Africa 2.2 75 Niger Africa 7.3 4 Nigeria Africa 5.7 6 Senegal Africa 6.4 12 Sudan Africa 4.8 9 Swaziland Africa 5.0 21 Tanzania Africa 6.1 10 Togo Africa 6.1 12 Uganda Africa 7.2 5 Zambia Africa 6.3 15 Zimbabwe Africa 5.3 45 Bangladesh Asia 5.5 40 China Asia 2.5 72 India Asia 4.3 45 Indonesia Asia 3.0 50 Korea.Rep.of Asia 1.7 77 Pakistan Asia 5.2 12 Philippines Asia 4.3 34 Sri.Lanka Asia 2.7 62 Thailand Asia 2.3 68 Vietnam Asia 3.9 53 Belize Latin.Amer 4.5 47 Bolivia Latin.Amer 4.9 32 Brazil Latin.Amer 3.6 66 Columbia Latin.Amer 2.8 66 Costa.Rica Latin.Amer 3.6 70 Dom.Republic Latin.Amer 3.3 56 Ecuador Latin.Amer 3.8 53 El.Salvador Latin.Amer 4.6 47 Guatemala Latin.Amer 5.6 23 Haiti Latin.Amer 6.0 10 Jamaica Latin.Amer 2.9 55 Mexico Latin.Amer 4.0 55 Panama Latin.Amer 4.0 58 Paraguay Latin.Amer 4.6 48 Peru Latin.Amer 3.5 59 Trinidad.Tobago Latin.Amer 3.1 54 Egypt Near.East 4.6 40 Jordan Near.East 5.5 35 Morocco Near.East 4.0 42 Tunisia Near.East 4.3 51 Turkey Near.East 3.4 60 Yemen Near.East 7.0 7 summary(Robey) region tfr contraceptors Africa :18 Min. :1.700 Min. : 4.00 Asia :10 1st Qu.:3.600 1st Qu.:12.25 Latin.Amer:16 Median :4.600 Median :41.00 Near.East : 6 Mean :4.688 Mean :37.44 3rd Qu.:5.975 3rd Qu.:55.00 Max. :7.300 Max. :77.00 dim(Robey) [1] 50 3

Page 39: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

39  

par(bg="lightyellow") plot(Robey$region,Robey$tfr, col="lightgreen", xlab="Region", ylab="Antall barn per kvinne")

print(tapply(tfr,region,mean),dig=2) #gjennomsnittelig fødselstall Africa Asia Latin.Amer Near.East 5.9 3.5 4.0 4.8 anova(lm(tfr~region+contraceptors)) Analysis of Variance Table Response: tfr Df Sum Sq Mean Sq F value Pr(>F) region 3 44.304 14.768 46.922 6.666e-14 *** contraceptors 1 45.045 45.045 143.121 1.419e-15 *** Residuals 45 14.163 0.315 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Kursoppgaver

Vekst av klumpandemat Et utvalg fra datasett oppgave 1 BIO2150 høsten 2010. Vekst av klumpandemat (Lemna gibba L.) med forskjellige nitrogenkilder (nitrat, ammonium og ammoniumnitrat(2 mol N)), og forskjellige konsentrasjoner av N og P. For å unngå effekt av pseudoreplikater er det beregnet gjennomsnitt for hver eksperimentell enhet. FERTIL – N-kilde F1:KNO3; F2:NH4Cl; F3: NH4NO3. N – N-konsentrasjon (mM) 0.01 mM N; 0.1 mM N; 0.5 mM N; 1 mM N. P – P-konsentrasjon 0.5 mM P; 0.005 mM P

Page 40: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

40  

ROTLE – gjennomsnittsrotlengde (cm) beregnet fra 3 planter pH – pH i næringsmediet ved slutt av forsøket tvFROND – Total biomasse av frondene i karet målt som tørrvekt (g) fratrukket gjennomsnittlig starttørrvekt tvROT – Total biomasse av røttene i karet målt som tørrvekt (g) fratrukket gjennomsnittlig starttørrvekt. Det er flere data for P=0.5 enn P=0.005 Vi kan bl.a. se følgende resultater: høye konsentrasjoner av ammonium gir redusert rotvekst og lavere pH i vekstmediet. Lave konsentrasjoner N og P gir større rotvekst i forhold til vekst av fronder, viser ressursallokering. #innlesing av datasett lemna<-read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/plantefys/ matematikk /lemnah10.txt",header=T) attach(lemna) names(lemna) #egenskaper ved datasettet summary(lemna) str(lemna) head(lemna) #design par (mfrow=c(2,2),bg="lightyellow") plot.design(PH~FERTIL+as.factor(N)+as.factor(P),data=lemna,col=4) plot.design(ROTL~FERTIL+as.factor(N)+as.factor(P),data=lemna,col=4) plot.design(tvFROND~FERTIL+as.factor(N)+as.factor(P),data=lemna,col=4) plot.design(tvROT~FERTIL+as.factor(N)+as.factor(P),data=lemna,col=4)

#pH vs. FERTIL par (mfrow=c(2,2),bg="lightyellow") plot(FERTIL[N=="1"],PH[N=="1"], col="lightblue", xlab="FERTIL",ylab="pH", ylim=c(3,8),main="[N]=1 mM") plot(FERTIL[N=="0.5"],PH[N=="0.5"], col="lightblue", xlab="FERTIL",ylab="pH", ylim=c(3,8),main="[N]=0.5 mM")

Page 41: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

41  

plot(FERTIL[N=="0.1"],PH[N=="0.1"], col="lightblue", xlab="FERTIL",ylab="pH", ylim=c(3,8),main="[N]=0.1 mM") plot(FERTIL[N=="0.01"],PH[N=="0.01"], col="lightblue", xlab="FERTIL",ylab="pH", ylim=c(3,8),main="[N]=0.01 mM") #Rotlengde vs. FERTIL par (mfrow=c(2,2),bg="lightyellow") plot(FERTIL[N=="1"],ROTL[N=="1"], col="lightblue", xlab="FERTIL",ylab="Rotlengde (cm)", ylim=c(0,25),main=" Rotlengde [N]=1 mM") plot(FERTIL[N=="0.5"],ROTL[N=="0.5"], col="lightblue", xlab="FERTIL",ylab="Rotlengde (cm)", ylim=c(0,25),main="[N]=0.5 mM") plot(FERTIL[N=="0.1"],ROTL[N=="0.1"], col="lightblue", xlab="FERTIL",ylab="Rotlengde (cm)", ylim=c(0,25),main="[N]=0.1 mM") plot(FERTIL[N=="0.01"],ROTL[N=="0.01"], col="lightblue", xlab="FERTIL",ylab="Rotlengde (cm)", ylim=c(0,25),main="[N]=0.01 mM") #Tørrvekt rot vs. FERTIL par (mfrow=c(2,2),bg="lightyellow") plot(FERTIL[N=="1"],tvROT[N=="1"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt rot (g)", ylim=c(0,0.1),main="[N]=1 mM") plot(FERTIL[N=="0.5"],tvROT[N=="0.5"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt rot (g)", ylim=c(0,0.1),main="[N]=0.5 mM") plot(FERTIL[N=="0.1"],tvROT[N=="0.1"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt rot (g)", ylim=c(0,0.1),main="[N]=0.1 mM") plot(FERTIL[N=="0.01"],tvROT[N=="0.01"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt rot (g)", ylim=c(0,0.1),main="[N]=0.01 mM") #Tørrvekt frond vs. FERTIL par (mfrow=c(2,2),bg="lightyellow") plot(FERTIL[N=="1"],tvFROND[N=="1"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt frond (g)", ylim=c(0,0.2),main="[N]=1 mM") plot(FERTIL[N=="0.5"],tvFROND[N=="0.5"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt frond (g)", ylim=c(0,0.2),main="[N]=0.5 mM") plot(FERTIL[N=="0.1"],tvFROND[N=="0.1"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt frond (g)", ylim=c(0,0.2),main="[N]=0.1 mM") plot(FERTIL[N=="0.01"],tvFROND[N=="0.01"], col="lightblue", xlab="FERTIL",ylab="Tørrvekt frond (g)", ylim=c(0,0.2),main="[N]=0.01 mM")

Page 42: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

42  

#pakken lattice for plotting library(lattice) #pH som funksjon av N ved to P-konsentrasjoner bwplot(PH~FERTIL[P=="0.005"]|as.factor(N),data=lemna,ylab="pH", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.005 mM") bwplot(PH~FERTIL[P=="0.5"]|as.factor(N),data=lemna,ylab="pH", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.5 mM") #rotlengde som funksjon av N ved to P-konsentrasjoner bwplot(ROTL~FERTIL[P=="0.005"]|as.factor(N),data=lemna,ylab="Rotlengde (cm)", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.005 mM") bwplot(ROTL~FERTIL[P=="0.5"]|as.factor(N),data=lemna,ylab="Rotlengde (cm)", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.5 mM")

Page 43: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

43  

#tørrvekt frond som funksjon av N ved to P-konsentrasjoner bwplot(tvFROND~FERTIL[P=="0.005"]|as.factor(N),data=lemna,ylab="Tørrvekt frond (g)", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.005 mM",ylim=c(0,0.2)) bwplot(tvFROND~FERTIL[P=="0.5"]|as.factor(N),data=lemna,ylab="Tørrvekt frond (g)", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.5 mM", ylim=c(0,0.2)) #tørrvekt rot som funksjon av N ved to P-konsentrasjoner bwplot(tvROT~FERTIL[P=="0.005"]|as.factor(N),data=lemna,ylab="Tørrvekt rot (g)", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.005 mM",ylim=c(0,0.1)) bwplot(tvROT~FERTIL[P=="0.5"]|as.factor(N),data=lemna,ylab="Tørrvekt rot (g)", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.5 mM",ylim=c(0,0.1)) #Ratio tørrvekt frond/tørrvekt rot som funksjon av N ved to P-#konsentrasjoner bwplot(tvFROND/tvROT~FERTIL[P=="0.005"]|as.factor(N),data=lemna,ylab="Ratio biomasse frond/rot", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.005 mM",ylim=c(0,60)) bwplot(tvFROND/tvROT~FERTIL[P=="0.5"]|as.factor(N),data=lemna,ylab="Ratio biomasse frond/rot", xlab="Gjødseltype",main="Forskjellig N (mM) og P=0.5 mM",ylim=c(0,80))

Page 44: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

44  

Page 45: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

45  

#modeller med forskjellige responsvariable modell1<-lm(PH~FERTIL+ as.factor(N)+as.factor(P)) summary(modell1) #plotting av modell og testing av forutsetninger par(mfrow=c(2,2),bg="lightyellow") plot(modell1,lwd=3,col=4) #kontraster og modelldesign contrasts(FERTIL) contrasts(as.factor(N)) contrasts(as.factor(P)) modell2<-lm(ROTL~FERTIL+ as.factor(N)+as.factor(P)) summary(modell2) par(mfrow=c(2,2),bg="lightyellow") plot(modell2,lwd=3,col=4) modell3<-lm(tvROT~FERTIL+ as.factor(N)+as.factor(P)) summary(modell3)

Page 46: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

46  

par(mfrow=c(2,2),bg="lightyellow") plot(modell3,lwd=3,col=4) modell4<-lm(tvFROND~FERTIL+ as.factor(N)+as.factor(P)) summary(modell4) par(mfrow=c(2,2),bg="lightyellow") plot(modell4,lwd=3,col=4)

modell1<-lm(PH~FERTIL+ as.factor(N)+as.factor(P)) summary(modell1) Call: lm(formula = PH ~ FERTIL + as.factor(N) + as.factor(P)) Residuals: Min 1Q Median 3Q Max -1.412476 -0.580180 0.002804 0.559976 1.963601 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 7.6683 0.1890 40.563 < 2e-16 *** FERTILF2 -1.8211 0.1704 -10.690 < 2e-16 *** FERTILF3 -1.5754 0.1670 -9.436 6.62e-16 *** as.factor(N)0.1 -0.9591 0.1988 -4.823 4.49e-06 *** as.factor(N)0.5 -1.1553 0.1933 -5.976 2.77e-08 *** as.factor(N)1 -0.8761 0.1950 -4.492 1.72e-05 *** as.factor(P)0.5 -0.6858 0.1388 -4.939 2.76e-06 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 0.7541 on 112 degrees of freedom Multiple R-squared: 0.6329, Adjusted R-squared: 0.6132 F-statistic: 32.18 on 6 and 112 DF, p-value: < 2.2e-16 FERTIL1 , P 0.05 og N 0.01 brukes som referanser Modellen forklarer 63% av variasjonen av datasettet Gjødseltype og forskjellige konsentrasjoner av N og P er signifikante. Dataene behøver ikke være normalfordelte, men det er viktig at residualene i modellen er normalfordelte. par(mfrow=c(2,2),bg="lightyellow") plot(modell1,lwd=3,col=4)

Page 47: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

47  

#konfidensintervall for parameterestimater confint(modell1) 2.5 % 97.5 % (Intercept) 7.2937243 8.0428732 FERTILF2 -2.1586418 -1.4835528 FERTILF3 -1.9061585 -1.2445681 as.factor(N)0.1 -1.3530417 -0.5650864 as.factor(N)0.5 -1.5383476 -0.7722113 as.factor(N)1 -1.2624618 -0.4896905 as.factor(P)0.5 -0.9609358 -0.4107104 plot(residuals(modell1),predict(modell1),col=4)

#testing av normalfordeling av data #tilsvarende kan gjøre for de andre responsvariable #Sammenlign modell 2 med modellene 5 og 6 modell5<-lm(ROTL~FERTIL+N+P) summary(modell5)

Page 48: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

48  

par(mfrow=c(2,2),bg="lightyellow") plot(modell5,lwd=3,col=4) modell6<-lm(ROTL~FERTIL*N+P) summary(modell6) par(mfrow=c(2,2),bg="lightyellow") plot(modell6,lwd=3,col=4) #testing av normalfordeling qqnorm(PH,col=4) qqline(PH,col=2,lwd=2) hist(PH,col="lightgreen")

Bimodaliteten gjenspeiler de to hovedtyper av pH som følge av nitrat (mer basisk) og ammonium (surere). Dette representerer ikke noe problem så lenge som residualene i modellen blir normalfordelte. Tilsvarende vil det bli for rotlengder. #punktskymatrise fordelt på FERTIL 1,2 og 3 med forskjellig farge splom(lemna[4:7],groups=FERTIL,col=c(2,3,4),pch=c(1,2,3), cex=c(0.5,0.5,0.5))

Page 49: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

49  

#3D fordelt på FERTIL 1 (rød),2(grønn),3 (blå) library(lattice) print(cloud(ROTL~tvROT*tvFROND, groups=FERTIL,pch=1:3,col=c(2,3,4), scales=list(draw=F))) print(cloud(PH~ROTL+(tvFROND+tvROT), groups=FERTIL,pch=1:3,col=c(2,3,4), scales=list(draw=F)))

par(mar=c(12,4,4,2)) par(las=3)

Page 50: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

50  

boxplot(PH~FERTIL*N,col=c(rep("lightgreen",3),rep("lightblue",3),rep("tomato",3),rep("yellow",3)), ylab="pH",names=c("F1+0.01 mM N","F2+0.01 mM N","F3+0.01 mM N", "F1+0.1 mM N","F2+0.1 mM N","F3+0.1 mM N", "F1+0.5 mM N","F2+0.5 mM N","F3+0.5 mM N", "F1+1 mM N","F2+1 mM N","F3+1 mM N" ))

#lager ny kolonne med total biomasse lemna$BIOMASS<-lemna$tvROT+lemna$tvFROND #lager et nytt datasett for bare P=0.5 mM lemna2<-lemna[1:119,] #lager plot for [N] vs. biomasse for FERTIL 1 (nitrat) #regner ut gjennomsnitt, standardfeil og plotter dette plot(lemna2$BIOMASS[FERTIL=="F1"]~lemna2$N[FERTIL=="F1"], col=4,xlab="N-konsentrasjon (mM)", ylab="Total biomasse (g)") m<-tapply(lemna2$BIOMASS[FERTIL=="F1"],lemna2$N[FERTIL=="F1"],mean) s<-tapply(lemna2$BIOMASS[FERTIL=="F1"],lemna2$N[FERTIL=="F1"],sd) n<-tapply(lemna2$BIOMASS[FERTIL=="F1"],lemna2$N[FERTIL=="F1"],length) se<-s/sqrt(n) x<-c(0.01,0.1,0.5,1) points(x,m,pch=4,col=2,cex=2,lwd=2) arrows(x,m+se,x,m-se,angle=90, code=3,length=0.1,lwd=2,col=3)

Page 51: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

51  

#Altenativ med subset F1<-subset(lemna2,FERTIL=="F1") #plukker ut F1 par(bg="lightyellow") plot(F1$BIOMASS~F1$N,col=4,xlab="N-konsentrasjon (mM)", ylab="Total biomasse (g)",main="F1 (0.5 mM P)") m<-tapply(F1$BIOMASS,F1$N,mean) #gjennomsnitt s<-tapply(F1$BIOMASS,F1$N,sd) #standardavvik n<-tapply(F1$BIOMASS,F1$N,length) #n antall målinger se<-s/sqrt(n) #standardfeil x<-c(0.01,0.1,0.5,1) points(x,m,pch=4,col=2,cex=2,lwd=2) #plotter gjennomsnitt arrows(x,m+se,x,m-se,angle=90, code=3,length=0.1,lwd=2,col=3) lines(lowess(F1$BIOMASS~F1$N, f = 0.1, iter = 3,),col=2,lwd=2)

library(lattice) xyplot(lemna2$BIOMASS~lemna2$N|FERTIL)

Simulert lineær regresjonsmodell Vi simulerer en regresjonsmodell med to variable x1 og x2 ved å bruke rnorm() som lager tilfeldige normalfordelte variable. Generelt har vi en modell

Denne kan skrives på matriseform:

Dette betyr det samme som:

… 1 1 1 1

#simulert modell y=x1+10*x2+feil set.seed<-100 # start for slumpstallgenerator

Page 52: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

52  

x1<-rnorm(n=40,mean=10,sd=5) #dss rnorm(20,10,5) x2<-rbinom(40,2,0.5) #variabel x2 y<-x1+10*x2+rnorm(40,0,4) #variabel y med feilledd mod1<-lm(y~x1) mod2<-lm(y~x2) par(mfrow=c(1,2),bg="lightyellow") plot(x1,y, col=2) abline(mod1,col=2) plot(x2,y,col=4) abline(mod2,col=4) mod3<-lm(y~x1+x2) mod4<-lm(y~x1*x2) #interaksjon mod5<-lm(y~x1+x2-1)#minus intercept summary(mod1) summary(mod2) summary(mod3) summary(mod4) summary(mod5) step(mod4) #trinnvis gjennomgang av modell 4 anova(mod2,mod3)

summary(mod3) #modell i samsvar med start Call: lm(formula = y ~ x1 + x2) Residuals: Min 1Q Median 3Q Max -6.8505 -2.3642 0.2640 2.0274 6.4651 Coefficients:

Page 53: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

53  

Estimate Std. Error t value Pr(>|t|) (Intercept) -0.4632 1.4746 -0.314 0.755 x1 0.9193 0.1044 8.808 1.30e-10 *** x2 11.0007 0.7670 14.343 < 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 3.142 on 37 degrees of freedom Multiple R-squared: 0.8751, Adjusted R-squared: 0.8684 F-statistic: 129.6 on 2 and 37 DF, p-value: < 2.2e-16

confint(mod3)#konfidensintervall for parameterestimater mod3 2.5 % 97.5 % (Intercept) -3.4509292 2.524581 x1 0.7077879 1.130746 x2 9.4466810 12.554818

Vi ser at dette er i overenstemmelse med modellen vi hadde som utgangspunkt i simuleringen.

10 · Fra koeffisienttabellen får vi

0.46 0.92x 11.00x og med standardavvik for koeffisientene ser vi at dette er i samsvar med utgangspunktet. Modellen forklarer 87% av variasjonen i datasettet #plotter modell3 for å teste forutsetningene par(mfrow=c(2,2),bg="lightyellow") plot(mod3,col=4)

Forutsetningene er konstant varianse og normalfordelte feil-ledd, som testes med følgende plot. Plot av residualene mot

Page 54: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

54  

forklaringsvariabel i modellen bør gi en lineær sammenheng. Et plot av residualene (residuals()) mot tilpassete verdier (fitted()) bør ikke ha noe mønster. Normalsannsynlighetsplot av residualene, bør følge standard normalfordeling Generelt for multippel lineær regresjon, hvis yi er responsvariabel for objekt nummer i (i=1,2,…n) , og xi1,xi2,…xim er objektverdiene for m forklaringsvariable så har vi en multippel lineær regresjonsmodell:

hvor εi er feil i modellen. Parameterene βk, k=1,2,…,m kalles regresjonskoeffisientene til modellen og β0 (intercept, skjæring) er storgjennomsnittstallet. Regresjonskoeffisientene er stigningstallet i modellen og viser forventet endring i responsvariabel hvis forklaringsvariabelen endrer seg med en enhet, de andre forklaringsvariablene holdt konstant. Forventet respons E(Y), hvor Y={y1,y2,…,yn}, gitt X={x1,x2,…,xm} blir:

| , , … , Eller uttrykt i matriseform:

hvor YT (transformert) blir, for å slippe å skrive Y-vektoren på høykant blir

, , … , , , … , , , … , X er modellmatrise (designmatrise) med forklaringsvariablene, og ett-tallene tilsvarer intercept:

11

1

Ved matriseregning kan vi nå finne et estimat for regresjonskoeffisientvektoren:

forutsatt at XTX er inverterbar (ikke-singulær) Forventet verdi og varianse til estimatoren blir:

Variansene til regresjonskoeffisientene blir liggende på diagonalen til kovariansematrisen, og de elementene som ikke ligger på diagonalen er kovariansen mellom de forskjellige regresjonskoeffisientene.

Page 55: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

55  

Vi får følgende ANOVA-tabell for multippel lineær regresjon: Kilde til variasjon Kvadratsumm

(SS) Antall frihetsgrader df

Regresjon

m

Residual

n-m-1

Total

n-1

y hatt er den predikterte verdien for responsvariabel, og er gjennomsnitt for responsvariabel:

Forholdet mellom middelkvadratene (MS) gir F-verdien:

∑1

F-verdien brukes i en F-test for å teste nullhypoten : 0 1,2, … ,

Egg i pappkartong Veier Prior Solegg fra frittgående høns, 12 egg per eske, størrelse L/M. Variabel VEKT i gram. Gjennomsnittsvekten er 63g med standardavvik 5g. Bruk datasettet til bootstrap, og beregning av konfidensintervall. egg<-read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/plantefys/ matematikk /egg.txt",header=T) attach(egg) names(egg) hist(VEKT,col="wheat1",xlab="Vekt (g)",main="Vekt av egg") summary(egg) #oppsummering table(VEKT) VEKT 53 55 58 59 60 61 62 64 65 66 67 69 70 71 1 1 1 5 1 4 2 1 2 2 1 2 2 3 barplot(table(VEKT),col="wheat1",xlab="Vekt (g)",ylab="Antall egg") mean(VEKT) #gjennomsnittsvekt [1] 63.32143 sd(VEKT) #standardavvik [1] 5.084862

Page 56: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

56  

Gibberellin og vekst av erter Plantehormonet gibberellin regulerer strekningsvekst hos planter. Fra en kursoppgave fra plantefysiologilab MBV1020 Fysiologi. Strekningsvekst hos erter (Pisum sativum L, cv. Fenomen) vokst i potter i jord, 6 planter per potte. På et blad på erteplantene ansettes 10 mikroliter gibberellinløsning,GA3 løst i destillert vann, i følgende konsentrasjon per plante. Variabel GA 0.001 µg, 0.01 µg, 0.1 µg, 1 µg og 10 µg GA3 per plante. Etter 14 dager måles lengden av plantene, og for å unngå pseudoreplikasjon er det beregnet gjennomsnittslengden (cm) av seks planter i en potte, fra jordoverflaten til lengden av lengste plantedel inkludert slyngtråden. Variabel LENGD i cm. Det er også planter som får en ukjent gibberellinløsning. Gjennomsnittslengden av planter med ukjent løsning er 23.0 cm og standardavvik 2.6 cm. Den ukjente konsentrasjonen som studentene skal finne er 0.005 µg per plante (fasit). Oppgaven

Page 57: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

57  

brukes som et bioassay til å beregne ukjente konsentrasjoner av gibberellin. Dvergmutanter fungerer best. ga<-read.table("http://www.mn.uio.no/bio/tjenester/kunnskap/plantefys/ matematikk /ga.txt",header=T) attach(ga) names(ga) plot(log10(GA), LENGD,col=4,pch=16,xlab="log[GA3], µg",ylab="Lengde (cm)", main="Gibberellin og strekningsvekst av erteplanter") modell1<-lm(LENGD~log10(GA)) #lineær modell abline(modell1,col=2,lwd=2) summary(modell1) Call: lm(formula = LENGD ~ log10(GA)) Residuals: Min 1Q Median 3Q Max -8.94884 -2.81757 -0.09248 1.84807 10.58861 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 35.9488 0.8133 44.20 <2e-16 *** log10(GA) 7.2625 0.4667 15.56 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 4.895 on 52 degrees of freedom Multiple R-squared: 0.8232, Adjusted R-squared: 0.8198 F-statistic: 242.2 on 1 and 52 DF, p-value: < 2.2e-16

For en lineær modell finner lengde (cm) = 36 + 7·log([GA3]). Vi har brukt grunntall 10 (Briggske logaritmer), dvs. a=10

Bruk denne til å finne et konfidensintervall for den ukjente konsentrasjonen. Vi kan se av figuren at dette ikke er en optimal modell, og man bør forsøke alternative modeller med ikke-lineær regresjon.

Page 58: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

58  

Cytokinin og nedbrytning av klorofyll i hveteblad Plantehormonet cytokinin forsinker aldringsprosesser. Fra en kursoppgave fra plantefysiologilab MBV1020 Fysiologi. Ti hveteblad (vekt 0.19 g, SD=0.02 g) fra ca. 7 dager gamle hveteplanter ligger i mørke i løsninger med kinetin (et syntetisk cytokinin) i petriskåler. Etter en uke ekstraheres pigmenter fra plantene, måler absorbanse ved 652 nanometer. . Variabel KIN med konsentrasjoner 0.01, 0.1| ,1 og 10 mg kinetin per liter destillert vann. Variabel KLFYLL er mg klorofyll per g friskvekt blad. kin<-read.table("http:// www.mn.uio.no/bio/tjenester/kunnskap/plantefys/matematikk /kin.txt",header=T) attach(kin) names(kin) par(bg="lightyellow") plot(log10(KIN), KLFYLL,col=4,pch=16,xlab="log[kinetin], mg/L",ylab="mg klorofyll/g fr.vt.", main="Cytokinin og nedbrytning av klorofyll") modell1<-lm(KLFYLL~log10(KIN)) #lineær modell abline(modell1,col=2,lwd=2)

Page 59: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

59  

Forsøk en ikke-lineær regresjonsmodell.

pH og vann Vann har mange egenskaper som gjør det til et universalløsningsmiddel og fundament for alt liv vi kjenner. Vinkelen mellom hydrogenatomene er ca. 105o. Oksygen er elektronegativt og trekker på elektroner og gjør vannmolekylet polart med positivt ladet hydrogen og negativt ladet oksygen. Dette danner grunnlag for hydrogenbindinger ca. 20 kJ mol-1. At vann har størst tetthet ved 4oC (1.000 g cm-3) gjør at dype innsjøer ikke bunnfryser. Det betyr at 1 liter vann veier 1 kg. Molekylvekten for vann er 18. Det betyr at konsentrasjonen av vann er 55.5 mol per liter. Vann har høy overflatespenning (0.0728 N m-1 , 20oC) og høy fordampningsvarme (44.21 kJ mol-1, 20oC). Vannmolekyler kan dissosiere til hydrogenioner (H+), egentlig hydroniumioner H3O+) og hydroksylioner (OH-). Likevektskonstanten for dissosiasjon av vann (25oC) er:

1.8 · 10

Den lave likevektskonstanten betyr at få av vannmolekylene er dissosiert. Vi har:

10 pH defineres som minus logaritmen (grunntall 10) til konsentrasjonen av H+.

Page 60: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

60  

Hpluss<-numeric() #tom matrise pH<-numeric() Hpluss[1]<-1E-14 for (i in 1:13) { Hpluss[i+1]<-Hpluss[i]*10 } pH<- - log10(Hpluss) #pH tab<-cbind(Hpluss,pH) tab plot(log10(Hpluss),pH,type="l",col=4,lwd=3,main="pH",xlab="log[H+], molar")

Hpluss pH [1,] 1e-14 14 [2,] 1e-13 13 [3,] 1e-12 12 [4,] 1e-11 11 [5,] 1e-10 10 [6,] 1e-09 9 [7,] 1e-08 8 [8,] 1e-07 7 [9,] 1e-06 6 [10,] 1e-05 5 [11,] 1e-04 4 [12,] 1e-03 3 [13,] 1e-02 2 [14,] 1e-01 1

Page 61: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

61  

Vi ser e.g. at ved pH=3 er konsentrasjonen [H+]=10-3 M =0.001 M (molar), ved pH=7 er [H+]=10-7 M

Lys og elektromagnetisk stråling Energien til lys (E)er gitt ved Plancks konstant (h) ganger frekvens (ν), hvor c er lyshastigheten og lambda (λ) er bølgelengden til lyset

· ·

Vanligvis plukker vi ut et mol av verden som er lik Avogadros tall 6.022·1023 med partikler, og da blir energien per mol fotoner (N) lik

· · · ·

Energien til 1 mol blå fotoner (440 nm) blir: E=(6.022·1023 mol-1)(6.626·10-34 Js)·(6.82·1014 s-1)=272 kJ mol-1. Farge Bølgelengde

Λ (nm) e.g. λ (nm) Frekvens

hertz Energi kJ mol-1

Ultrafiolett 300-400 260 11.54·1014 460 Fiolett 400-425 410 7.31·1014 292 Blå 425-490 440 6.82·1014 272 Grønn 490-560 510 5.88·1014 242 Gul 560-585 570 5.26·1014 210 Oransje 585-640 620 4.84·1014 193 Rød 640-740 680 4.41·1014 176 Nær infrarød 740- 1000 3.00 120 Elektromagnetisk stråling i bølgelengdeområde som vår hjerne tolker som farger, med noen utvalgte bølgelengder (nanometer= nm = 10-9 meter) og deres frevens (Herz) og energi (kilojoule per mol) #Energi til 1 mol fotoner med forskjellig bølgelengde N<-6.022E23 #Avogadros tall, partikler per mol h<-6.626E-37 #Plancks konstant kJ s (joule sekund) c<- 2.998E17 #lyshastighet nanometer per sekund lambda<-seq(300,800,1) #bølgelengde nanometer E<-(N*h*c)/lambda #Energi til 1 mol fotoner plot(lambda,E,type="l",col=4,lwd=3,ylab="kJ/mol",xlab="Bølgelengde (nm)",

Page 62: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

62  

main=expression(E==frac(N*h*c,lambda))) Hz<-c/lambda #frekvens svingninger per sekund plot(lambda,Hz,type="l",col=4,lwd=3,ylab="Frevekns(Hz)",xlab="Bølgelengde (nm)", main=expression(v==frac(c,lambda)))

Energien til synlig lys som funksjon av bølgelengde

Ifølge Plancks strålingsfordelingsformel kan vi finne utsendelsen av elektromagnetisk stråling fra et objekt (”svart legeme”). Her er en utgave av Plancks formel;

,2

·1

·· · 1

Page 63: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

63  

Hvor h Plancks konstant h=6.6260693·10-34 J s Plancks kvantekonstant er en proporsjonalitet mellom energi (E) og frekvens angitt i Planck-Einstein ligningen:

Plancks konstant er en atomær konstant med meget lav verdi, men når den multipliseres med Avogadros tall (6.022·1023 mol-1) så blir energien målbar. Elektronvolt (eV) er en atomær måleenhet som angir energien til hvert enkelt foton, hvor h·c=1240 eV nm. Lyshastigheten c=299792458 m s-1 Boltzmanns konstant k= 1.3806505·10-23 J molekyl-1 K-1 Boltzmanns konstant er forholdet mellom den universelle gasskonstanten R og Avogadros tall:

8.314472 6.022 · 10

1.380683 · 10

8.314472/6.0220E23 [1] 1.380683e-23

Boltzmann konstant har samme enhet som entropi, energi relatert til temperatur, og kobler sammen entropi og sannsynlighet. T er absolutt temperatur (Kelvin) Vi kan se hvilken bølgelengde vi har maksimal strålingsenergi for sol (5800 K), en wolframtråd i en glødelampe (2900 K) og et objekt ved 20oC (293 K), ved å derivere Plancks strålingsformel og sette den deriverte lik 0 (Wiens lov, Wilhelm Wien). Sola har maksimal utstråling ved ca. 500 nm, en glødelampe maksimalt ved ca. 1000 nm og en objekt ved 20oC har maksimal utstråling ved ca. 9800 nm=9.8 µm, altså langbølget varmestråling. Deriverer Plancks strålingsformel og setter den førstederiverte lik 0 og finner røttene. Markerer maksimumspunktet med en grønn prikk. h<-6.6260693E-34 #Plancks kvantekonstant J s c<-2.998E8 #lyshastighet meter per sekund k<-1.3806505E-23 T<-5800 #Absolutt temperatur overflaten sola planck<-function(lambda) {(2*c^2*h/lambda^5)*1/(exp(h*c/(lambda*k*T))-1)} curve(planck,200*10^(-9),3000*10^(-9),type="l",col=2,lwd=3, xlab="Bølgelengde (m)",ylab="Irradianse (W/m^2 m)") legend("topright","T=5800 K") #førstederiverte

Page 64: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

64  

df<-D(expression((2*c^2*h/lambda^5)*1/(exp(h*c/(lambda*k*T))-1)),"lambda") #lager funksjon av førstederiverte dfdx<-function(lambda) eval(df) #finner røttene til førstederiverte library(rootSolve) rot<-uniroot.all(dfdx,c(400*10^(-9),1000*10^(-9)));rot [1] 5.02e-07 points(rot,planck(rot),pch=16,cex=2,col=3) Wien<-2.898E6/T;Wien #Bølgelengde (nm) med maksimal utstråling [1] 499.6552 T<-2900 #temperatur wolframtråd i glødelampe curve(planck,200*10^(-9),3000*10^(-9),type="l",col=4,lwd=3, xlab="Bølgelengde (m)",ylab="Irradianse (W/m^2 m)") legend("topright","T=2900 K") Wien<-2.898E6/T;Wien #Bølgelengde med maksimal utstråling [1] 999.3103 T<-293 curve(planck,2000*10^(-9),20000*10^(-9),type="l",col=3,lwd=3, xlab="Bølgelengde (m)",ylab="Irradianse (W/m^2 m)") legend("topright","T=293 K") Wien<-2.898E6/T;Wien #Bølgelengde med maksimal utstråling [1] 9890.785

Page 65: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

65  

Integrerer vi arealet under Plancks strålingsfordelingsformel finner vi den totale utstrålingen (energifluksen J) fra et objekt ifølge Stefan-Bolzmanns lov:

· · Hvor Stefan-Bolzmanns konstant σ=5.7·10-8 W m-2 K-4. Emmisiviteten ε=1 hvis all stråling blir sendt ut. Total mengde utstrålt energi er fjerde potens av absolutt temperatur. T0<-273.15 t<-seq(-20,100,0.1) T<-t+T0 sigma<-5.673E-8 #Stefan-Bolzmanns konstant J<-sigma*T^4 #fluks plot(t,J,type="l",lwd=3,col=4,xlab="Temperatur",ylab="J (W/m^2)",

Page 66: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

66  

main=expression(J==epsilon*sigma*T^4))

Vi kan lage et grovt estimat av hvor mye energi som sendes ut fra sola ved å integrere Plancks strålingsformel, som energitetthet:

,8

·1

·· · 1

Diameteren til sola er ca. 1.39·106 km. Solas masse (1.9891·1030 kg) består av ca. 74% hydrogen og 25% helium. Gjennomsnittsavstanden fra jorda til sola er en astronomisk enhet 1AU=149598000 km. Formelen for overflate av ei kule 4πr2. Vi finner hvor mange watt som totalt sendes ut fra sola (1.6·1027 W). Siden watt=joule/sekund multipliserer vi med antall sekunder per år og finnes ca. 4.9·1034 J/år, hvor størrelsesorden er det avgjørende. #integrerer ny utgavePlancks formel (W/m^2) T<-5800 h<-6.6260693E-34 #Plancks kvantekonstant J s k<-1.381E-23 #Boltzmanns konstant J/molekyl K^4 c<-2.99E8 #lyshastighet meter per sekund planck2<-function(lambda) {(8*pi*c^2*h/lambda^5)*1/(exp(h*c/(lambda*k*T))-1)} #energi Watt per kvadratmeter sendt ut fra sola integral<-integrate(planck2, 100*10^(-9),5000*10^(-9));integral 256973113 with absolute error < 15 rsol<-1.39E9/2;rsol #radius (meter) sola [1] 6.95e+08 overfl<-4*pi*rsol^2;overfl #overflate sola kvadratmeter [1] 6.069871e+18

Page 67: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

67  

#utstråling fra sola watt (W) watt<-integral$value*overfl;watt [1] 1.559794e+27 #watt= J/sekund #Utstråling fra sola per år i joule sek<-60*60*24*365 #sekunder per år j.aar<-watt*sek;j.aar #joule per år [1] 4.918965e+34

Vi kan gjøre det samme regnestykke ut fra Stefan-Bolzmanns lov #strålingsfluks fra sola fra Stefan-Boltzmanns lov sigma<-5.670E-8 #W/m^2 K^4 Stefan-Boltzmanns konstant T<-5800 #absolutt temperatur overflate sola J<-sigma*T^4; J #fluks W/m^2 [1] 64164532 j.lum<-J*overfl;j.lum #luminositet fra sola J/sekund [1] 3.894704e+26 j.aar2<-J*overfl*sek;j.aar2 #joule per år [1] 1.228234e+34 #Ca. samme størrelsesorden som beregnet over Vi prøver et annet regnestykke og sammenligne med hvor mye helium som dannes på sola ved fusjon, og hvor mye energi dette tilsvarer. Det er estimert at ca.700·106 tonn hydrogen omsettes per sekund, og gir 695·106 tonn helium ved fusjon. Helium har atomnummer to i periodesystemet, og ett atom helium-4 har to protoner og to neutroner. Hvilemassen for et proton: 1.00727252 u Hvilemassen for et nøytron: 1.008665 u En atomær masseenhet 1u=1.6605402·10-24g #Beregner energi ved fusjon på sola #beregnet hvilemasse for 4-helium i måleenheten u m1he<-2*1.00727252+2*1.008665;m1he # [1] 4.031875 m2he<-4.001506 #målt hvilemasse helium-4 massetap<-m1he-m2he;massetap #massetap ved fusjon [1] 0.03036904 u<-1.6605402E-24 #atomær masseenhet u (gram) c<-2.99E8 #lyshastighet meter per sekund #E=m*c^2 Einsteins ligning kobler masse og energi E<-massetap*u*c^2;E [1] 4.508404e-09 #Vi har nå energi g m^2 s-1 må regne om til kg #1J=kg m2 sek-1 #regner om E til joule E.J<-E/1000;E.J #bindingsenergi for 4 nukleoner (2p+2n)

Page 68: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

68  

[1] 4.508404e-12 #bindingsenergi per nukleon E.J.n<-E.J/4;E.J.n #bindingsenergi/nukleon (J) [1] 1.127101e-12 N<-6.02E23 #Avogadros tall #energi (joule) frigitt per mol helium #1 mol helium=4g j.molhe<-N*E.J.n;j.molhe [1] 678514814032 he.sek<-696E12;he.sek #g helium som dannes per sekund [1] 6.96e+14 molhe.sek<-he.sek/4;molhe.sek #mol helium per sekund [1] 1.74e+14 sek.aar<-60*60*24*365;sek.aar [1] 31536000 #energi (J/år) ved fusjon på sola fusjon<-j.molhe*molhe.sek*sek.aar;fusjon [1] 3.72319e+33

Utsendelse av energi J/år fra sola beregnet fra: integrering av Plancks strålingsformel: 4.9·1034 Stefan-Bolzmanns lov: 1.2·1034 beregning av fusjonsenergi: 3.7·1033 Tallmaterialet er noe usikkert for noen av verdiene, men blir i noenlunde samme størrelsesorden. Regnestykket kan perfeksjoneres, bl.a. ved å øke mengden helium som dannes i sola. Generelt regner man med at det sendes ut fra sola ca. 3.9·1026 joule per sekund (Js-1). Forskjellige lyskilder kan karakteriseres ut fra fargetemperatur målt i Kelvin, mer enn 5000 K gir blåaktige farger og rundt 2500 K gir gul-rødhvite farger. Lyset kan angis som et x,y,z kromatisitetsrom e.g. CIE1931 i form av fargekoordinater. kilde:wikipedia

Energimengde fra Sola som treffer Jorden Jordens diameter er ca. 12756 km. Solkonstanten, dvs. hvor mye solenergi som treffer normalt på den ytre atmosfæren ved middelavstand fra sola, er ca. 1360 Wm-2. Ca. 2.2·1025 J/år treffer jorda. Vi har beregnet jorda som en kule, men den er elipseformet. r.jord<-12756E3/2 #radius (meter) jorden overfl.jord<-4*pi*r.jord^2;overfl.jord #jordoverflate m^2 [1] 5.111859e+14

Page 69: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

69  

sol.konst<-1360 #solkonstant W/m^2 #solenergi (W) som treffer jorda J.jord<-sol.konst*overfl.jord ;J.jord #W/m^2 [1] 6.952129e+17 sek<-60*60*24*365 #sekunder per år J<-J.jord*sek;J #J/år [1] 2.192423e+25

Årlig fikseres ca. 105 petagram karbon (C) i fotosyntesen, tilsvarende 105·1015 g C/år. 1 mol C=12 g, og for hvert mol karbon som blir assimilert lagres 479 kJ i karbohydrater. biomasse<-105E15/12;biomasse #antall mol C per år [1] 8.75e+15 j.mol<-479 #kJ/mol # totalt lagret i netto fotosyntese j.tot<-biomasse*j.mol;j.tot [1] 4.19125e+18

Hvis vi antar at 1% av solenergien fanges opp av pigmenter i fotosyntesen så tilsvarer dette 2.2·1023 J/år. Vi ser at 4.2·1018 J/år blir assimilert i fotosyntesen per år. Energien som fanges i fotosyntese og kjemosyntese er den eneste fri energi som kan brukes til å opprettholde liv. Vi er nå ca. 7 milliarder mennesker på jorda. Bare for å leve trenger hvert menneske minst 3000 kcal person-1 dag-1. 1 kcal=4.187 kJ, dvs. 12561 kJ person-1 dag-1 dag<-3000*4.187;dag #antall kJ/(person dag) [1] 12561 pop<-7E9 #menneskepopulasjon behov<-dag*pop*365;behov #kJ/år 7 milliarder mennesker [1] 3.209335e+16

Det vil at at bare for å eksistere trenger menneskepopulasjon mat tilsvarende 3.2·1016 kJ/år = 3.2·1019 J/år I en næringskjede mistes ca. 90% av energien i hvert trinn. Det vil si at bare ca. 10% av energien fiksert i planter blir overført til kjøtt i et grasspisende dyr. Sammenlign med den energien som årlig bindes i fotosyntesen, så skjønner man at her er det noe som ikke går i hop. Menneskepopulasjonen øker med ca. 1 milliard hvert tolvte år. Lysmåling Fotometrisk lysmåling av belysningsstyrke, målenheten lux ,skjer med måling av synlig lys med en sensor som har samme

Page 70: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

70  

lysfølsomhetskurve som det menneskelige øyet. Fotometri brukes til å beskrive belysning slik som øyet oppfatter det. Standardkoeffesienter for dette er definert av Commission Internationale de Eclairage (C.I.E.). Maksimal følsomhet er ved 555 nm. Den fotopiske kurve kalles øyets lysfølsomhetskurve og den skotopiske kurve for et mørketilpasset øye. Fotometrisk måling av lys er derfor lite egnet i biologisk sammenheng.Enhetene for lysstyrke (luminous intensity) er candela, cd.Enheten for belysningsstyrke (illuminance) er lux. 1 lux er en lumen per kvadratmeter.

Fotosyntetisk fotonflukstetthet i området 400 – 700 nm måles i måleenheten mikromol per kvadratmeter per sekund (μmol m-2 s-1). Fotosyntetisk flukstetthet måles med en kvantesensor med cosinus-korrigert Si-fotodiode. Det er denne måten lys bør måles hvis man arbeider med planter.

Lys kan også måles radiometrisk Strålingsfluksen (”radiant flux”) er mengden av stråling som kommer pr. tidsenhet og har enheten watt (1 W = 1 J s-1).Innkommen strålingsflukstetthet eller irradianse (incident radiant flux density/irradiance) er strålingsfluksen fra alle retninger på en mottagende flate pr. enhetsareal av overflaten. Irradiansen har enheten watt per kvadratmeter (W m-2). Strålingsintensitet (”radiant intensity”) er strålingsfluksen som forlater en punktformig lyskilde per enhet av romvinkelen som omgir lyspunktet. Strålingsintensiteten har enheten watt per steradian W sr-1. Global solstråling er solirradiansen på en horisontal flate. Lyset består av direkte solstråling pluss diffus skystråling. Global solstråling måles med et pyranometer i enheten W m-2. Direkte solstråling er stråling som sendes ut fra solen fra en fast vinkel av soloverflaten, mottatt i normal retning på overflaten av denne lyskjeglen. Direkte solstråling måles med et pyrheliometer i W m-2. Fotosyntetisk irradianse er strålingsflukstettheten til PAR med måleenhet W m-2.

Trykkfargene CMYC (Cyan, Magenta, Yellow og Black) ser men nederst på siden på trykksaker

Page 71: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

71  

Prosessfarger for trykking, bruker fire typer beholdere for å lage farger. C+M+Y gir svart, men for å spare på fargene er det en egen beholder for svart.

#farger omdannet til RGB kode A<-as.data.frame(col2rgb(c("red","green","blue", "cyan","magenta", "yellow", "white","black"))) colnames(A)<-c("R", "G", "B", "C", "M", "Y","W","B");A R G B C M Y W B red 255 0 0 0 255 255 255 0 green 0 255 0 255 0 255 255 0 blue 0 0 255 255 255 0 255 0 rgb(1,0,0) #rød [1] "#FF0000"

Vi har: R [255,0,0] G [0,255,0] B [0,0,255] i alt 256 x 256 x 256 = 16777216 punkter Farger fra lysabsorbsjon: fargene som observeres blir ikke absorbert Visningsfarger: RGB (Red – Green – Blue)

Farger på planter skyldes forskjellige kjemiske stofferi plantene som har forskjellige absorbsjonsegenskaper. Grønnfarge skyldes klorofyll som befinner seg i tylakoidmembranene i kloroplastene. Karotenoider gir gule, oransje og rød farger og finnes også i kloroplastene eller i en egen for for plastider kalt kromoplaster. Pigmentene i kloroplastene er fettløselig og løses ikke i vann. Vannløselig

Page 72: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

72  

pigmenter finnes i vesentlig i vakuolene. Rød og blå farger skyldes anthocyaniner som er en type flavonoider, men rødfarge kan også komme fra betanidiner, og disse skiller seg fra de før nevnte ved å inneholde nitrogen. Brune farger skyldes garvestoffer og oksiderte fenoler. Karotenoider:

Anthocyaniner:

Page 73: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

73  

Betanidiner:

Fenoler og garvestoffer:

pie(rep(1,15),col=rainbow(15),radius=1,main="rainbow") RGB<-c(2,3,4) n<-100/3 a<-c(n,n,n) pie(a,col=RGB,radius=1,main="RGB")

Page 74: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

74  

CMYK<-c(5,6,7,"black") m<-100/4 b<-c(m,m,m,m) pie(b,col=CMYK,radius=1,main="CMYK")

Entropi og informasjonsteori Termodynamikk (varmelære) er vitenskapen om det som er mulig. Klassisk termodynamikk beskriver systemer i likevekt og i molare konsentrasjoner.

Sett under ett er jorda et endergonisk system hvor energien til å drive prosessene kommer fra sola. Irreversibel termodynamikk beskriver levende åpne systemer langt fra likevekt hvor det strømmer stoff og energi gjennom de biologiske systemene, og det avgis varme, arbeid og avfallsstoffer. Levende liv er dissipative (energiforbrukende) systemer.

Page 75: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

75  

Energigjennomstrømning kan gi mer organisert struktur. Organiserte strukturer kan også oppstå hvis deler av systemet plasserer seg energetisk gunstig i forhold til hverandre. Et system overlatt til seg selv vil etter en tid nå likevekt med maksimal entropi og maksimal uorden, livet dør. Entropi har måleenheten joule per Kelvin. Grunnen til at levende liv befinner seg langt fra likevekt er ifølge Erwin Schödinger (jfr. boka What is life ?) at livet tilføres negativ entropi fra omgivelsene, negentropi. Vi lever på den orden som er laget i de organiske molekylene i fotosyntese eller kjemosyntese. I plantene skapes orden i molekylene ved hjelp av sollys.

Dissipative levende systemer er karakterisert av flukser med stoff og energi. En fluks sier noe om hvor stoff eller energi som passerer per areal- og tidsenhet. Entropi er ikke bare et mål på fordeling av energi og energidissipering. Entropi har en dualisme og er også et mål på orden. Ved høy entropi er det stor grad av uorden, liten informasjon, og vi kan si lite om molekylenes plassering. Er entropien lav for eksempel i en krystall eller organisk molekyl inneholder systemet informasjon og vi kan forutsi hvor molekyler vil befinne seg. Hvis D er mål på uorden, det vil si alle mulige måter å ordne stoffet uten forandring i energi, så er entropien S lik:

ln

Page 76: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

76  

hvor k er Boltzmanns konstant 1.38·10-23 J molekyl-1 K-1, pi er sannsynligheten for en av tilstandene i. Den inverse 1/D blir et mål på orden. For ett mol blir entropien:

ln ln

hvor N er Avogadros tall (6.022·1023 mol-1) og R er den universelle gasskonstanten 8.314 J mol-1 K-1. Det ligger et statistisk aspekt (stokastisitet) i Avogadros tall, som er et gigantisk tall i seg selv. Fra Gibbs og Boltzmann med statistisk mekanikk, via Lars Onsager, Prigogine, Glansdorff, Nicolis, går det en linje videre til Claude E. Shannon med innføring av begrepene informasjonsteori og Shannon entropi (A mathematical theory of communication (1948)). Videreført av Jaynes i Information theory and statistical mechanics (1957). Shannon definerte entropi som hvor mange kanaler som var nødvendig for å kunne overføre en kodet binær sekvens av 0 og 1. Informasjonsteori brukes til å kvantifisere informasjon og til statistisk inferens. Det benyttes bl.a. i signalprosessering, datakompresjon (zip-tekst, mp3-lyd, bilde) eller sending av informasjon over en linje med støy. Informasjonsteori kan også brukes til å beskrive økologiske systemer. En lang rekke med A AAAAAAA… har entropi 0 siden vi vet at neste bokstav vil være en A. En mynt kan betraktes som et objekt med to muligheter, en terning er et objekt med seks muligheter. For begge er det et aspekt av stokastisitet (tilfeldighet) og determinisme (et begrenset antall utfall). Et myntkast har lavere entropi (2), enn entropien for utkomme av terningkast (6). Entropien kan uttrykkes i bl.a. måleenheten bits.

Estimering av sannsynlighetstetthet Et histogram (hist())kan brukes som et estimat for sannsynlighetstetthet, hvor man kan legge tinn prob=T. Funksjonen density() kan brukes til kjernetetthet estimering. Hvis man ikke vet hvilken fordeling observasjonene følger trenger man ikke-parametriske metoder. I pakken MASS til Venables and Ripley ligger datasettet geyser som viser ventetiden før utbrudd av geysiren Old Faithful i Yellowstone nasjonalpark. Vi kan definere sannsynlighetstettet:

lim1

2

Page 77: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

77  

h er en estimator og P(x-h<X<x+h) er observasjonene fra X som faller innenfor intervallet. Funksjonen for kjernetetthet estimering er:

1

hvor K er kjernefunksjon og h er en glattingsparameter (båndbredde). Som vanlig for tetthetsfunksjoner må:

1

Det finnes flere forskjellige kjernefunksjoner som kan defineres fra density(), hvor Gauss er default-verdien

1√2

Følgende blir eksempel på vektingsfunksjoner: 12 | | 1

0 æ

1 | | | | 1

0 æ

, 1

2

library(MASS) ventetid<-faithful$waiting A<-matrix(1:3,ncol=3) hist(ventetid,prob=T,xlab="Ventetid før utbrudd (min)",ylab="Frekvens",col="lightblue", main="Gauss kjerneestimat") lines(density(ventetid,width=12),col=2,lwd=3)

Page 78: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

78  

Pakken KernSmooth (M. Wand og B. Ripley) inneholder funksjoner for kjerneglatting library(KernSmooth) help(package="KernSmooth") Data for Old Faithful finnes også i geyser hvor variabel duration er varighet av utbruddet i minutter og waiting er ventetid til neste utbrudd. I pakken MASS lager kommandoen kde2d() et todimensjonalt kjernetetthetsestimat på et nettverk library(MASS) attach(geyser) summary(geyser) str(geyser) plot(duration, waiting,pch=16,col=2,main="Old Faithful")

tetthet<-kde2d(duration,waiting,n=50,lims=c(1,6,40,100))

Page 79: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

79  

image(tetthet, col = terrain.colors(20),xlab="Varighet (min)",ylab="Ventetid", main="Old Faithful")

persp(tetthet,phi=30,theta=30,ticktype="detailed", col="orange",shade=0.3, xlab="Varighet",ylab="Ventetid",main="Old Faithful")

contour(tetthet, col=2,xlab="Varighet (min)",ylab="Ventetid", main="Old Faithful")

Page 80: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

80  

Enzymreaksjon og ikke-lineær regresjon Datasettet Puromycin inneholder reaksjonshastighet (cpm/min) versus substratkonsentrasjon (ppm) i celler med eller uten behandling med puromycin. Vi ser først på datasettet uten puromycin og bruker den selvstartende funksjonen SsasmpOrig som er en asymptotisk regresjonsmodell som går igjennom origo library(datasets) data(Puromycin) attach(Puromycin) names(Puromycin) Puromycin #ikke-lineær regresjon selvstartende funksjon plot(conc[state=="treated"],rate[state=="treated"],ylim=c(0,220),col=4,cex=1.5, xlab="Substratkonsentrajon(ppm)", ylab=" Reaksjonshastighet (cpm/min)", main="SSasympOrig") mod1<-nls(rate~SSasympOrig(conc,Asym,lrc),data=Puromycin,subset=state=="treated") summary(mod1) x2<-seq(0,1.2,0.01) y2<-predict(mod1,list(conc=x2)) lines(x2,y2, ,col=2,lwd=3) points(conc[state=="untreated"],rate[state=="untreated"],col=3,pch=4,cex=1.5) mod2<-nls(rate~SSasympOrig(conc,Asym,lrc),data=Puromycin,subset=state=="untreated") summary(mod2) y22<-predict(mod2,list(conc=x2)) lines(x2,y22,col=3,lwd=3)

Page 81: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

81  

Vi ser at dette ikke er en velegnet tilnærming, og vi vil i stedet forsøke en Michaelis-Menten curve som burde følge enzymkinetikk. #Michaelis-Menten modell mm1<-nls(rate~Vm*conc/(Km+conc),data=Puromycin, subset=state=="treated",start=c(Vm=200,Km=0.05)) mm2<-nls(rate~Vm*conc/(Km + conc),data=Puromycin,subset=state=="untreated", start=c(Vm=160,Km=0.05)) plot(conc[state=="treated"],rate[state=="treated"], ylim=c(0,220),pch=2,col=2,cex=1.5, xlab="Substratkonsentrajon(ppm)", ylab=" Reaksjonshastighet (cpm/min)",main="Michaelis-Menten") points(conc[state=="untreated"],rate[state=="untreated"],col=3,pch=3,cex=1.5) x2<-seq(0,1.2,0.01) ym<-predict(mm1,list(conc=x2)) lines(x2,ym,col=2,lwd=3) ym2<-predict(mm2,list(conc=x2)) lines(x2,ym2,col=3,lwd=3) legend(0.7,80,levels(Puromycin$state),col=2:3,lty=1,pch=2:3)

Page 82: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

82  

Vi ser at dette er en bedre tilpasning. Eller via den selvstyrende funksjonen Ssmicmen #SSmicmen #ikke-lineær regresjon selvstartende funksjon plot(conc[state=="treated"],rate[state=="treated"],ylim=c(0,220),col=2,cex=1.5, xlab="Substratkonsentrajon(ppm)", ylab=" Reaksjonshastighet (cpm/min)", main="SSmicmen") mod3<-nls(rate~SSmicmen(conc,Vm,K),data=Puromycin,subset=state=="treated") summary(mod3) x2<-seq(0,1.2,0.01) y3<-predict(mod3,list(conc=x2)) lines(x2,y3,col=2,lwd=3) points(conc[state=="untreated"],rate[state=="untreated"],col=3,pch=4,cex=1.5) mod4<-nls(rate~SSmicmen(conc,Vm,K),data=Puromycin,subset=state=="untreated") summary(mod2) y4<-predict(mod4,list(conc=x2)) lines(x2,y4,col=3,lwd=3)

Page 83: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

83  

Andre eksempler på selvstartende funksjoner: SSasymp: asymptotisk regresjonsmodell SSbiexp: bieksponensiell modell SSfpl: fire parameters logistisk modell SSfol: første ordens kompartmentmodell SSgompertz: Gompertz vekstmodell SSlogis: logistisk regresjon SSweibull: Weibull vekstmodell

Prinsipalkomponenter og matriseregning Prinsipalkomponentanalyse er å se på variasjon i variablene i et datasett X={x1,x2,x3,…,xn} sett i relasjon til et sett nye variable som vi lager Y={y1,y2,y3,…,yn}, kalt prinsipalkomponenter. Mens X er korrelert, så er Y er ukorrelert. Hver av y-verdiene er en lineær kombinasjon av x-variablene, med tilhørende koffisienter a. De første prinsipalkomponentene skal kunne forklare mest mulig av variasjonen i datasettet. Første prinsipalkompoent (y1)er en lineær kombinasjon av X, og som forklarer det meste av variasjonen. Den andre prinsipalkomponent (y2) står normalt på den første (ortogonalt koordinatsystem) og hindrer derved at de blir korrelert. Vi har her n prinsipalkomponenter. Den andre prinsipalkomponenten skal forsøke å forklare mest mulig av den gjenværende variasjonen i datasettet, som blir igjen etter den første prinsipalkomponenten er funnet

Page 84: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

84  

I matriseform blir løsningen ·

hvor A er matrisen med koeffisienter. Koeffisientene må være slik at de gir maksimal varianse for y1. Vi kan la

, , , … , Forutsetning for første prinsipalkomponent er at:

· 1 hvor A1T er den transformerte koeffisientmatrisen. For den andre prinsipalkompoenten y2 har vi:

, , , … , Vi må sikre oss at første og andre prinsipalkomponent ikke blir korrelert og dette gjør vi ved:

· 1 · 0 Vi skal altså finne koeffisienter A1 slik at variansen for første prinsipalkomponenten y1 blir maksimal, samtidig som vi har begrensningen A1T·A1=1 Lagranges multiplikatormetode kan hjelpe oss i å løse dette problemet, oppkalt etter den berømte franske matematikeren Joseph-Louis Lagrange (1736-1813). Generelt er problemet å finne ekstremalverdiene for en funksjon f(x,y,z), eller i vårt tilfelle f(x,y,a). Hvis z kan uttrykkes som en funksjon av x og y, z=h(x,y) så består problemet i å finne maksimum av en ny funksjon F(x,y)=f(x,y,h(x,y). Imidlertid er det ikke sikkert at z kan uttrykkes som funksjon av x og y. Maksimumspunktet ligger på en kurve C som kan tenkes angitt som skjæring mellom to flater g1(x,y,z)=0 og g2(x,y,z)=0. Hvis vi lar t være en parameter som beveger seg langs kurven C hvor vi skal finne maksimum blir problemet nå forenklet til F(t)=f(x,y,z), og maksimumspunktet må finnes der hvor den førstederiverte er lik 0. F’(t)=0.

Page 85: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

85  

Vi har nå tre skalarligninger som må løses hvor konstantene λ1 og λ2 kalles Lagrange multiplikatorer. Uttryket som vektorfelt (partiellderiverte)

, ,

Det viser seg at løsningen av A1 er egenvektoren til kovariansematrisen for prøven, tilsvarende den største egenverdien. Egenvektorene til en kovariansematrise er lik prinsipalkomponentene til fordelingen. Man finner deretter de andre prinsipalkomponentene yi med tilhørende egenvektorer Ai. Kovariansematrisen,K, til prøven X er en matrise med variansene plassert i diagonalen. Matrisen som blir symmetrisk omkring diagonalen kalles også varianse-kovariansematrise. Kovariansene (cov()) mellom hvert par med variable står utenfor diagonalen. Her er et eksempel med fire variable (x1,x2,x3,x4): x1 x2 x3 x4

x1 var(x1) cov(x1,x2) cov(x1,x3) cov(x1,x4)

x2 cov(x2,x1) var(x2) cov(x2,x3) cov(x2,x4)

x3 cov(x3,x1) cov(x3,x2) var(x3) cov(x3,x4)

x4 cov(x4,x1) cov(x4,x2) cov(x4,x3) var(x4)

Generelt hvis X og Y er tilfeldige variable så vil variansen til summen være lik:

2 · , Kovariansen er et forventet (E) produkt:

, · , ·

Når x og y er ikke-korrelert er E(xy)=E(x)E(y) og kovariansen blir lik 0. Produktet av kovariansematrisen, K, og den inverse kovariansematrise (K-1) blir lik identitetsmatrisen I, en matrise med bare 1 på diagnolen og 0 for resten

Page 86: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

86  

Generelt har vi for en kvadratmatrise A en invers matrise (A-1) slik at

Hvor I er en identitetsmatrisen. Hvis alle variablene i en kovariansematrise er i form av enhetsvarianse så blir kovariansematrisen lik korrelasjonsmatrisen. I en korrelasjonsmatrise har man korrelasjonskoeffisientene (r) i stedet for kovarianse, og tallene i diagonalen blir lik 1. Generelt er korrelasjonskoeffisienten r er lik:

hvor cov(x,y) er kovariansen mellom variablene x og y, sx2 og sy2 er variansen til henholdsvis variablene x og y. Vi har også generelt for egenverdier og egenvektorer: Hvis man har en kvadratmatrise A så har vi følgende sammenheng:

· · hvor nu(v) er egenvektoren, og lambda (λ) er en skalar kalt egenverdi

· · v er en egenvektor med egenverdi λ. Kommandoen eigen() i R gir sorterte egenverdier for en matrise hvor den med størst absoluttverdi kommer først. Egenverdiene til kovariansematrisen, K, til datasettet blir {λ1,λ2,λ3,…,λn}. Vi har også AiT·Ai=1, hvor Ai er egenvektoren til kovariansematrisen. Variansen til prinsipalkomponent yi er lik egenverdien λi. Den totale variasjonen for prinsipalkomponentene blir lik summen av egenverdiene, og dette blir også lik den totale variansen i datasettet.

Summen av prinsipalkompoentene kan angis som trace til kovariansematrisen K

Page 87: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

87  

Prinsipalkomponent yi forklarer andelen Pi av den totale variasjonen i datasettet ved:

Vi repeterer litt om matriser: En matrise er en firkantet tabell med tall ordnet i rader og kolonner. En mxn matrise har m rader og n kolonner. Matriser med bare en kolonne eller en rad kalles en vektor En radvektor er en 1xn matrise og en kolonnevektor er en nx1 matrise. En vektor

, , … , (x1,x2,…,xn) er en 1xn matrise (radmatrise, radvektor) En kolonnevektor:

er en nx1 matrise (kolonnematrise). En 1x1 matrise er bare et tall, en skalar. Vi har en mxn matrise kalt A med m rader og n kolonner:

……

Hvis det er like mange rader som kolonner (m=n) så har vi en nxn kvadratmatrise. Vi kan transposere matrisen A vi startet med ved å bytte rader og kolonner og får den tranposerte matrisen AT:

……

Transposering av en radvektor gir en kolonnevektor, og transposering av en kolonnevektor gir en radvektor.

Page 88: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

88  

Hvis vi multipliserer en radvektor med den transposerte kolonnevektoren får vi et skalart kvadratprodukt:

· … ·

En matrise kalles symmetrisk hvis den er lik den transposerte matrisen:

En kvadratmatrise kalles en diagonalmatrise hvis alle komponentene er lik 0 bortsett fra diagonalen:

0 … 00

0 0

0

Hvis alle tallene i diagonalen er lik 1 og resten av komponentene er lik 0 har vi en identitetsmatrise (I) eller In:

|1 0 … 00

0

1

0

0

1

Hvis A er en nxn kvadratmatrise så kalles A inverterbar eller ikke-singulær hvis det finnes en invers matrise A-1 slik at A ganger A-1 er lik identitetsmatrisen:

· Hvis A=(aij) er en nxn kvadratmatrise så er trace A (tr(A)) lik summen av diagonalelementene:

Hvis vi har 3 variable x1, x2, x3 hver med 3 observasjoner ordnet i kolonner i en matrise A: #datamatrise x1,x2,x3 A<-matrix(c(3,5,6,1,3,2,2,1,1),ncol=3);A [,1] [,2] [,3] [1,] 3 1 2

Page 89: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

89  

[2,] 5 3 1 [3,] 6 2 1

Kovarianse til matrise A ovenfor: kovA<- cov(A);kovA #kovariansematrise [,1] [,2] [,3] [1,] 2.3333333 1.0 -0.8333333 [2,] 1.0000000 1.0 -0.5000000 [3,] -0.8333333 -0.5 0.3333333

Variansene står i diagonalen: var<-diag(cov(A));var #varianse i diagonalen [1] 2.3333333 1.0000000 0.3333333

Vi kan finne variansen for den første kolonnen i matrisen A: var1<-var(A[,1]);var1 #variansen for x1 [1] 2.333333

Eller vi kan alternativt finne alle variansene samtidig: varb<-apply(A,2,var);varb #alle variansene [1] 2.3333333 1.0000000 0.3333333

#regner ut variabel for x1, x2, x3 og ser at det stemmer x1<-c(3,5,6) var(x1) [1] 2.333333 x2<-c(1,3,2) var(x2) [1] 1 x3<-c(2,1,1) var(x3) [1] 0.3333333

#alternativ måte å lage datamatrisen A2<-cbind(x1,x2,x3);A2 x1 x2 x3 [1,] 3 1 2 [2,] 5 3 1 [3,] 6 2 1

En radmatrise med alle middelverdiene: m<-apply(A,2,mean);m #gjennomsnitt x1, x2,x3 [1] 4.666667 2.000000 1.333333

Vi kan finne egenverdiene og egenvektoren til kovariansematrisen: eigen(kovA) #egenverdier og egenvektorer $values [1] 3.197559e+00 4.691079e-01 1.782785e-17 $vectors [,1] [,2] [,3]

Page 90: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

90  

[1,] 0.8323497 0.50163583 0.2357023 [2,] 0.4518054 -0.86041634 0.2357023 [3,] -0.3210388 0.08969513 0.9428090

Vi kan sammenligne egenvektorene til kovariansematrisen med prinsipalkomponentene (PC) til matrise A og ser at de blir like: prcomp(A) #prinsipalkomponenter Standard deviations: [1] 1.788172e+00 6.849145e-01 2.601620e-17 Rotation: PC1 PC2 PC3 [1,] 0.8323497 0.50163583 0.2357023 [2,] 0.4518054 -0.86041634 0.2357023 [3,] -0.3210388 0.08969513 0.9428090

Første prinsipalkomponent (PC1) viser retningen (vektoren) gjennom datasettet som forklarer det meste av variasjonen, prinsipalkomponent PC2 som står normalt på første prinsipalkomponent forklarer nest mest av variasjonen. Vi kan transformere datamatrisen, bytte rader og kolonner AT<-t(A);Ainv #transformert matrise AT [,1] [,2] [,3] [1,] 3 5 6 [2,] 1 3 2 [3,] 2 1 1 A [,1] [,2] [,3] [1,] 3 1 2 [2,] 5 3 1 [3,] 6 2 1

Vi kan lage den inverse matrisen (A-1) med kommandoen ginv i pakken MASS: library(MASS) #Laster inn MASS Ainv<-ginv(A);Ainv #invers matrise A-1 [,1] [,2] [,3] [1,] -0.08333333 -2.500000e-01 0.4166667 [2,] -0.08333333 7.500000e-01 -0.5833333 [3,] 0.66666667 2.367762e-16 -0.3333333

Vi har at den inverse av inversmatrisen gir den opprinnelige matrisen (A-1)-1=A  ginv(ginv(A)) #invers av invers matrise

Page 91: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

91  

[,1] [,2] [,3] [1,] 3 1 2 [2,] 5 3 1 [3,] 6 2 1

Vi kan matrisemultiplisere (%*%) A-1·A som skal gi identitetsmatrisen I. Vi ser at vi får 1 på diagonalen og ca. 0 på de andre verdiene i matrisen Ainv%*%A #matrisemultiplikasjon A-1*A [,1] [,2] [,3] [1,] 1.000000e+00 1.110223e-16 5.551115e-17 [2,] 4.440892e-16 1.000000e+00 -2.220446e-16 [3,] -2.220446e-16 1.110223e-16 1.000000e+00

Kommandoen diag(x,n) lager en n x n-matrise med vektoren x på diagonalen. For eksempel en identitetsmatrise I3 med 1 på diagonalen, for øvrig 0: I3<-diag(1,3);I3 #identitetsmatrise I3 [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1

Vi kan finne determinanten til A (|A|): prod(eigen(A)$values) #determinanten til A [1] -12 1/det(ginv(A)) #alternativ måte å finne determinanten [1] -12

Trace er summen av diagonalelementene i en matrise e.g. identitetsmatrisen I3: trI3<-sum(diag(I3));trI3 #trace til I3 [1] 3

Vi finner trace til kovariansematrisen for datasettet (se over) som er lik summen av prinsipalkomponentene #trace til kovariansematrisen kovA trkovA<-sum(diag(kovA));trkovA [1] 3.666667 #som er lik summen av variansene var(x1)+var(x2)+var(x3) [1] 3.666667

prkompA<-prcomp(A) #prinsipalkompoentene til A print(prkompA,dig=4) #printer PC Standard deviations: [1] 1.788e+00 6.849e-01 2.602e-17 Rotation:

Page 92: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

92  

PC1 PC2 PC3 [1,] 0.8323 0.5016 0.2357 [2,] 0.4518 -0.8604 0.2357 [3,] -0.3210 0.0897 0.9428 summary(prkompA) #oppsummering Importance of components: PC1 PC2 PC3 Standard deviation 1.788 0.685 2.6e-17 Proportion of Variance 0.872 0.128 0.0e+00 Cumulative Proportion 0.872 1.000 1.0e+00

plot(prkompA,col="pink")

biplot(prkompA,col=4) #de to første prinsipalkomponenter

Generelt kan matriser benyttes til å løse m lineære ligninger med n ukjent. I faktoranalyse er det ikke vanlige kategoriske faktorvariable vi snakker om, men underliggende observasjoner som kan være vanskelig å måle. De bestemmes ved å se på korrelasjon mellom

Page 93: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

93  

variablene. Kommandoen factanal() utfører maksimum likelihood faktoranalyse på datamatrisen eller kovariansematrisen.

Mikset effektmodeller Mikset effektmodeller på longitudinelle data Replikater skal være uavhengige. Har vi data i tidsserie eller eller prøver samlet fra samme romlige lokalitet på et sted, så vil dette gi pseudoreplikasjon. Det er to hovedtyper pseudoreplikasjon: temporal pseudoreplikasjon (avhengige replikater i tid) eller romlig pseudoreplikasjon (avhengige replikat i rom). Et longitudinelt studium vil si at man følger de samme individene over tid ved gjentatte målinger. Dette vil gi temporal pseudireplikasjon siden målingene av hvert individ vil være korrelert. R.A. Fisher var den første som introduserte mikset effektmodeller, og at det fantes to hovedtyper kategoriske forklaringsvariable: fikserte effekter (fixed) som påvirker gjennomsnittet til responsvariabel, og randome effekter (tilfeldige effekter, random) som påvirker variansen til responsvariabel. Spesifiseres i modellen som e.g.fixed=y~1,random=~1|k/l/m som viser hierarki av randome effekter k,l,m. Mikset effektmodeller brukes i statistisk bildehandling i CT (komputer tomografi) og PET (positron emisjonstomografi) i medisinsk diagnostikk. Det finnes lineære mikset effektmodeller (lme) og ikke-lineære mikset effektmodeller (nlme,” Linear and Nonlinear Mixed Effects Models”. I R-pakken car (”companion to applied regression”) finnes datasettet Blackmoore for 138 tenåringsjenter med spiseforstyrrelser og 98 jenter i kontrollgruppen i et longitudinelt studium, begge angitt med antall timer fysisk trening de bedriver hver tuke. Følgende variable: subject: en kode for individene, age: alder(år), excercise: antall timer trening per uke, group: control (kontroll) og patient (jenter med spiseforstyrrelse). library(car) library(help=car) ?Blackmoor data(Blackmoor) head(Blackmoor) subject age exercise group 1 100 8.00 2.71 patient 2 100 10.00 1.94 patient

Page 94: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

94  

3 100 12.00 2.36 patient 4 100 14.00 1.54 patient 5 100 15.92 8.63 patient 6 101 8.00 0.14 patient str(Blackmoor) 'data.frame': 945 obs. of 4 variables: $ subject : Factor w/ 231 levels "100","101","102",..: 1 1 1 1 1 2 2 2 2 2 ... $ age : num 8 10 12 14 15.9 ... $ exercise: num 2.71 1.94 2.36 1.54 8.63 0.14 0.14 0 0 5.08 ... $ group : Factor w/ 2 levels "control","patient": 2 2 2 2 2 2 2 2 2 2 ...

attach(Blackmoor) names(Blackmoor) plot(age[group=="patient"],exercise[group=="patient"],cex=0.5,col=2, xlab="Alder (år)",ylab="Trening (timer/uke)") points(age[group=="control"],exercise[group=="control"],cex=0.5,col=4) legend("topleft",c("Spiseforstyrrelser","Kontroll"),col=c(2,4),pch=c(16,16))

Det ser ut som det er en trend at med økende alder driver jenter med spiseforstyrrelser flere timer trening per uke, sammenlignet med kontrollgruppen. Husk at korrelasjon ikke nødvendigvis betyr årsakssammenheng. Velger å logtransformere variabel exercise for å få normalfordeling, legger til 2 minutter for å unngå å få logaritmen til 0. Selv om det er noe avvik fra normalfordelingen. #normalfordeling av antall treningstimer

Page 95: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

95  

par(mfrow=c(2,2)) hist(exercise,col="orange") hist(log(exercise+2/60),col="lightgreen") qqnorm(exercise,col="orange") qqline(exercise,col=2,lwd=3) qqnorm(log(exercise+2/60),col="lightgreen") qqline(log(exercise+2/60),col=2,lwd=3)

R-pakken nlme hvor alder er en random effekt og spesifiseres I modellen #mikset effektmodell for longitudinelle data library(nlme) library(help=nlme) modell1<-lme(log(exercise+2/60)~I(age)*group,random=~I(age)|subject, data=Blackmoor) summary(modell1) Linear mixed-effects model fit by REML Data: Blackmoor AIC BIC logLik 3298.011 3336.787 -1641.006 Random effects: Formula: ~I(age) | subject Structure: General positive-definite, Log-Cholesky parametrization StdDev Corr (Intercept) 1.7975101 (Intr) I(age) 0.1293094 -0.789 Residual 1.0652557 Fixed effects: log(exercise + 2/60) ~ I(age) * group Value Std.Error DF t-value p-value (Intercept) -0.6631254 0.3144487 712 -2.108851 0.0353

Page 96: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

96  

I(age) 0.0408675 0.0260670 712 1.567784 0.1174 grouppatient -1.8103625 0.3992378 229 -4.534547 0.0000 I(age):grouppatient 0.1865994 0.0327300 712 5.701178 0.0000 Correlation: (Intr) I(age) grpptn I(age) -0.913 grouppatient -0.788 0.719 I(age):grouppatient 0.727 -0.796 -0.910 Standardized Within-Group Residuals: Min Q1 Med Q3 Max -2.8905709 -0.3704286 0.1452060 0.5219688 2.4850044 Number of Observations: 945 Number of Groups: 231

Det er en signifikant interaksjon mellom age og group modell2<-update(modell1,random=~I(age)-1|subject) summary(modell2) Linear mixed-effects model fit by REML Data: Blackmoor AIC BIC logLik 3334.773 3363.855 -1661.387 Random effects: Formula: ~I(age) - 1 | subject I(age) Residual StdDev: 0.09005119 1.168797 Fixed effects: log(exercise + 2/60) ~ I(age) * group Value Std.Error DF t-value p-value (Intercept) -0.6896150 0.2753220 712 -2.504758 0.0125 I(age) 0.0434506 0.0259756 712 1.672744 0.0948 grouppatient -1.8045541 0.3462113 229 -5.212292 0.0000 I(age):grouppatient 0.1860824 0.0324565 712 5.733279 0.0000 Correlation: (Intr) I(age) grpptn I(age) -0.908 grouppatient -0.795 0.722 I(age):grouppatient 0.727 -0.800 -0.903 Standardized Within-Group Residuals: Min Q1 Med Q3 Max -3.0224748 -0.4284757 0.1760905 0.5863989 2.4934537 Number of Observations: 945 Number of Groups: 231

anova(modell1,modell2) Model df AIC BIC logLik Test L.Ratio p-value modell1 1 8 3298.011 3336.787 -1641.005

Page 97: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

97  

modell2 2 6 3334.773 3363.855 -1661.387 1 vs 2 40.7624 <.0001

a #predikterer data fra modell #level=0 for estimat av fikserte effekter moddata<-expand.grid(age=seq(8,18,by=0.1),group=c("patient","control")) moddata$log.exercise<-predict(modell1,moddata,level=0) #tilbaketransformerer fra log til originale verdier moddata$exercise<-exp(moddata$log.exercise)-2/60 plot(moddata$age[1:101],moddata$exercise[1:101],type="l",col=2,lwd=3,xlab="Alder (år)", ylab="Trening (timer/uke)") points(moddata$age[102:202],moddata$exercise[102:202],type="l",col=4,lwd=3) legend("topleft",c("Spiseforstyrrelser","Kontroll"),col=c(2,4),pch=c(16,16))

Overlevelsesanalyse Overlevelelsesanalyse går ut på å finne tiden før en hendelse skjer. I en medisinsk undersøkelse kan dette dreie som om et sammenlignende randomisert studium av hvordan strålebehandling, kjemoterapi (cellegift), kirurgisk fjerning av svulst eller det å gjøre ingenting (kontrollgruppe) påvirker overlevelsestiden (dødstidspunkt) for kreftrammede. Et slikt studium kan også inneholde andre parametre som smertesymptomer, livskvalitet (må defineres) etc. Andre

Page 98: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

98  

undersøkelser, feilanalyse, kan være å undersøke levetiden for teknisk utstyr eller elektroniske komponenter. Overlevelsesdata er ikke normalfordelte, ofte er det positiv skew med lang flat kurve til høyre. Noen ganger vet man ikke den eksakte levetiden. Noen ganger avsluttes forsøket før død, eller utstyret er gått i stykker, og i dette siste tilfellet sier vi at individene er sensorert. Overlevelsesfunksjonen S(t) angir sannsynligheten (P) for at overlevelsestiden T er større eller lik en gitt tid t, og viser sannsynligheten for å være i live ved et gitt tidspunkt:

Ofte studerer man en gruppe individer med samme alder, en kohort (l. cohors- kve, innhegning, en gruppe romerske soldater). Hvis det ikke er noen sensorerte individer kan man lage et esimat av sannsynligheten, hvor n er antall observasjoner:

Hvis man har sensorerte data kan man bruke en Kaplan-Meier estimator (produktgrenseestimator) hvor overlevelsestiden rangeres fra den minste til den lengste. Estimatoren er en trappefunksjon som blir redusert med en faktor.Ved starten hvor alle lever er overlevelsen 1. Når tiden er kommet til første dødsfall/feil synker overlevelsen med et trinn 1-1/rt, hvor rt er andelen av populasjonen som fremdeles lever. I ethvert tidspunkt har man antall døde ved tidspunkt ti (d(ti)) og antall overlevende som er utsatt for å dø er r(ti). Kaplan-Meyer (KM) overlevelsesfunksjonen er:

Et estimat av variansen til Kaplan-Meyer estimat av overlevelsesfunksjonen er:

Tetthetsfunksjonen f(t) angir sannsynligheten for å dø/feil i tidsintervallet t+Δt. Hasardfunksjonen h(t) angir risikoen for å dø/feil i korte tidsintervall av t. I deler av tidsperioden er det høy risiko for død/feil, i andre er det mindre, for de som har overlevd til det angitte tidspunkt. For mennesker er det større sannsynlighet for å dø i barne-ungdomsalder, det er forskjell

Page 99: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

99  

på jenter og gutter, så minsker sannsynligheten, for deretter å øke igjen. Sannsynligheten for at man dør når man er 100 år er meget liten, men sannsynligheten for å dø når man er blitt 100 år er særdeles stor. Mors certa, hora incerta – døden er sikker, timen er usikker.

Hasardfunksjonen angir sannsynligheten for at en individ opplever en hendelse i et lite tidsintervall Δt, gitt at individet har overlevet til begynnelsen av tidsintervallet. Når vi lar dette tidsintervallet gå mot 0, og T er overlevelsestiden for individet har vi:

lim∆

∆ |

Vi lar H(t) være kumulativ hasard, det vil si integralet av hasardfunksjonen:

Kumulativ hasard H(t) er relatert til overlevelsesfunksjonen S(t):

Et estimat av hasardfunksjonen, h hatt,forholdet mellom antall individer d som har opplevd hendelsen (død/feil) i tidsintervallet per tidsenhet, forutsatt at de har overlevd til begynnelsen av tidsintervallet:

Et estimat av kumulativ hasard er:

Cox proporsjonal hasardmodell er en mye brukt regresjonsmodell for overlevelsesdata, hvor sensorert overlevelsestid er responsvariabel. Hvis hasardfunksjonen er konstant, hvilken den riktignok sjelden er, kan man lage en enkel modell:

Page 100: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

100  

For å kunne løse problemet med en varierende hasardfunksjon utviklet Cox i 1972 en regresjonsmodell som inneholder en baselinje hasardfunksjon h0(t), en hasardfunksjon hvor alle forklaringsvariablene til individene er lik null Cox,D.R.:Regression models and life-tables. J Royal Stat.Soc.,ser B,34 (1972)187-202

Vi bruker eksponentialfunksjonen på begge sider av likhetstegnet og får:

Hvor kommer uttrykket proporsjonal fra ? Jo, man kan se på hasard-ratio mellom to individer som blir konstant over tid. Hvis vi har to individer med datavektorer X1 og X2 med kovariable data fra to individer så vil hasard-ratio være konstant over tid:

||

eβTX er relativ riskfunksjon og angir hasard for hvert indiovid. Hva betyr eβi ? Jo, den sier noe om endringen i relativ risiko hvis kovariabel xi øker med en enhet, mens alle de andre kovariable holdes konstante. Parameterestimering i en Cox-modell utføres ved delvis likelihood. Fugit irreparabile tempus – tiden går ugjenkallelig (Vergil) Gaudeamus igitur, juvenes dum sumus – La oss være glade mens vi er unge. Pakken survival, som du laster ned fra CRAN, er laget av Therry Therneau, med port til R av Thomas Lumley I pakken datasets() finnes datasettet leukemia med overlevelsesdata for akutt myelogen leukemi. Varible time-tid, x hvorvidt forlenget kjemoterapi skulle benyttes eller ikke, status- sensoreringsstatus. Surv(time,status) er Kaplan-Meyer objektet. library(survival) library(help=survival) library(datasets) data() data(leukemia) ?leukemia leukemia time status x

Page 101: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

101  

1 9 1 Maintained 2 13 1 Maintained 3 13 0 Maintained 4 18 1 Maintained 5 23 1 Maintained 6 28 0 Maintained 7 31 1 Maintained 8 34 1 Maintained 9 45 0 Maintained 10 48 1 Maintained 11 161 0 Maintained 12 5 1 Nonmaintained 13 5 1 Nonmaintained 14 8 1 Nonmaintained 15 8 1 Nonmaintained 16 12 1 Nonmaintained 17 16 0 Nonmaintained 18 23 1 Nonmaintained 19 27 1 Nonmaintained 20 30 1 Nonmaintained 21 33 1 Nonmaintained 22 43 1 Nonmaintained 23 45 1 Nonmaintained

attach(leukemia) names(leukemia) #survfit overlevelsekurve for sensorerte data #Kaplan-Meyer kurve plot(survfit(Surv(time,status)~x, data=leukemia),col=4,ylab="Sannsynlighet overlevelse", xlab="Overlevelsestid",main="Myelogen leukemi")

modell<-survfit(Surv(time,status)~x) summary(modell) Call: survfit(formula = Surv(time, status) ~ x) x=Maintained time n.risk n.event survival std.err lower 95% CI upper 95% CI 9 11 1 0.909 0.0867 0.7541 1.000 13 10 1 0.818 0.1163 0.6192 1.000 18 8 1 0.716 0.1397 0.4884 1.000 23 7 1 0.614 0.1526 0.3769 0.999

Page 102: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

102  

31 5 1 0.491 0.1642 0.2549 0.946 34 4 1 0.368 0.1627 0.1549 0.875 48 2 1 0.184 0.1535 0.0359 0.944 x=Nonmaintained time n.risk n.event survival std.err lower 95% CI upper 95% CI 5 12 2 0.8333 0.1076 0.6470 1.000 8 10 2 0.6667 0.1361 0.4468 0.995 12 8 1 0.5833 0.1423 0.3616 0.941 23 6 1 0.4861 0.1481 0.2675 0.883 27 5 1 0.3889 0.1470 0.1854 0.816 30 4 1 0.2917 0.1387 0.1148 0.741 33 3 1 0.1944 0.1219 0.0569 0.664 43 2 1 0.0972 0.0919 0.0153 0.620 45 1 1 0.0000 NaN NA NA

modell #median tid før død Call: survfit(formula = Surv(time, status) ~ x) records n.max n.start events median 0.95LCL 0.95UCL x=Maintained 11 11 11 7 31 18 NA x=Nonmaintained 12 12 12 11 23 8 NA

d Pakken coin inneholder betinget inferensprosedyrer i permutasjonstestrammeverk og er skrevet av Hothorn, Hornik, Wiel og Zeileis. I denne pakken ligger datasettet glioma med 37 observasjoner og 7 variable for malign (ondartet) gliom med behandling med yttrium-90-merket biotin som radioimmunterapi (RIT). Gliom (gr. glia-lim) er svulster i støttevevet til nervecellene, gliaceller. Variable: no-pasient nummer, age-alder, sex-kjønn (Female-kvinne, Male-mann), histologi-faktor med nivå GBM (gradIV) og Grade3 (gradIII),time-overlevelsestid (mnd), event-sensoringindikator FALSE:sensorert, TRUE:død,group-faktor med nivåene kontroll (Control) og radioimmunoterapi (RIT) library(coin) library(help=coin) data(glioma) ?glioma glioma no. age sex histology group event time 1 1 41 Female Grade3 RIT TRUE 53 2 2 45 Female Grade3 RIT FALSE 28 3 3 48 Male Grade3 RIT FALSE 69 4 4 54 Male Grade3 RIT FALSE 58 5 5 40 Female Grade3 RIT FALSE 54 6 6 31 Male Grade3 RIT TRUE 25 7 7 53 Male Grade3 RIT FALSE 51 8 8 49 Male Grade3 RIT FALSE 61 9 9 36 Male Grade3 RIT FALSE 57 10 10 52 Male Grade3 RIT FALSE 57

Page 103: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

103  

11 11 57 Male Grade3 RIT FALSE 50 12 12 55 Female GBM RIT FALSE 43 13 13 70 Male GBM RIT TRUE 20 14 14 39 Female GBM RIT TRUE 14 15 15 40 Female GBM RIT FALSE 36 16 16 47 Female GBM RIT FALSE 59 17 17 58 Male GBM RIT TRUE 31 18 18 40 Female GBM RIT TRUE 14 19 19 36 Male GBM RIT TRUE 36 20 1 27 Male Grade3 Control TRUE 34 21 2 32 Male Grade3 Control TRUE 32 22 3 53 Female Grade3 Control TRUE 9 23 4 46 Male Grade3 Control TRUE 19 24 5 33 Female Grade3 Control FALSE 50 25 6 19 Female Grade3 Control FALSE 48 26 7 32 Female GBM Control TRUE 8 27 8 70 Male GBM Control TRUE 8 28 9 72 Male GBM Control TRUE 11 29 10 46 Male GBM Control TRUE 12 30 11 44 Male GBM Control TRUE 15 31 12 83 Female GBM Control TRUE 5 32 13 57 Female GBM Control TRUE 8 33 14 71 Female GBM Control TRUE 8 34 15 61 Male GBM Control TRUE 6 35 16 65 Male GBM Control TRUE 14 36 17 50 Male GBM Control TRUE 13 37 18 42 Female GBM Control TRUE 25

plot(survfit(Surv(time, event) ~ group, data=subset(glioma,histology=="Grade3")) ,col=4,lty=c(2,1),lwd=2,ylab="Sannsynlighet", xlab="Overlevelsestid (mnd.)",main= "GradIII glioma")

plot(survfit(Surv(time, event) ~ group, data=subset(glioma,histology=="GBM")) ,col=2,lty=c(2,1),lwd=2,ylab="Sannsynlighet", xlab="Overlevelsestid (mnd.)",main= "GradIV glioma")

Page 104: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

104  

Nå kan man se på figuren at det er forskjell i overlevelsestiden, men man kan kvantifisere det ved: surv_test(Surv(time,event)~group,data=subset(glioma,histology=="Grade3"),distribution="exact") Exact Logrank Test data: Surv(time, event) by group (Control, RIT) Z = 2.1711, p-value = 0.02877 alternative hypothesis: two.sided surv_test(Surv(time,event)~group,data=subset(glioma,histology=="GBM"),distribution="exact") Exact Logrank Test data: Surv(time, event) by group (Control, RIT) Z = 3.2215, p-value = 0.0001588 alternative hypothesis: two.sided #forskjell i histologi surv_test(Surv(time,event)~group|histology,data=glioma, distribution=approximate(B=8000)) Approximative Logrank Test data: Surv(time, event) by group (Control, RIT) stratified by histology Z = 3.6704, p-value < 2.2e-16 alternative hypothesis: two.sided surv_test(Surv(time,event)~group|sex,data=glioma, distribution=approximate(B=8000)) Approximative Logrank Test data: Surv(time, event) by group (Control, RIT) stratified by sex Z = 3.7427, p-value < 2.2e-16 alternative hypothesis: two.sided

Page 105: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

105  

Som også viser at det forskjell mellom de forskjellige typene glioma også når det gjelder kjønn Datasettet ocarcinoma i pakken coin med overlevelsestid for 35 kvinner med eggstokk-kreft i stadium II og IIA data(ocarcinoma) ?ocarcinoma ocarcinoma time stadium event 1 28 II TRUE 2 89 II TRUE 3 175 II TRUE 4 195 II TRUE 5 309 II TRUE 6 377 II FALSE 7 393 II FALSE 8 421 II FALSE 9 447 II FALSE 10 462 II TRUE 11 709 II FALSE 12 744 II FALSE 13 770 II FALSE 14 1106 II FALSE 15 1206 II FALSE 16 34 IIA TRUE 17 88 IIA TRUE 18 137 IIA TRUE 19 199 IIA TRUE 20 280 IIA TRUE 21 291 IIA TRUE 22 299 IIA FALSE 23 300 IIA FALSE 24 309 IIA TRUE 25 351 IIA TRUE 26 358 IIA TRUE 27 369 IIA TRUE 28 369 IIA TRUE 29 370 IIA TRUE 30 375 IIA TRUE 31 382 IIA TRUE 32 392 IIA TRUE 33 429 IIA FALSE 34 451 IIA TRUE 35 1119 IIA FALSE

plot(survfit(Surv(time,event)~stadium, data=ocarcinoma) ,col=3,lty=c(2,1),lwd=3,ylab="Sannsynlighet", xlab="Overlevelsestid")

Page 106: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

106  

# logrank test med eksakt to-sidet p-value surv_test(Surv(time, event)~stadium,data=ocarcinoma, distribution = "exact") Exact Logrank Test data: Surv(time, event) by stadium (II, IIA) Z = -2.3373, p-value = 0.01820 alternative hypothesis: two.sided #Cox-modell coxph(Surv(time, event)~stadium,data=ocarcinoma) Call: coxph(formula = Surv(time, event) ~ stadium, data = ocarcinoma) coef exp(coef) se(coef) z p stadiumIIA 1.12 3.08 0.497 2.26 0.024 Likelihood ratio test=5.79 on 1 df, p=0.0162 n= 35 Weibull-, Gompertz og Makeham-funksjonen benyttes innen demografi og overlevelsesanalyse for å beskrive risikoen for død i forskjellige alderstadier.

Optimalisering og simplex metode Pakken boot skrevet av Ripley inneholder forskjellige numeriske metoder for bootstrapping. Den inneholder også muligheter for lineær programmering med simplex metoden (simplex algoritme) som benyttes innen optimalisering og lineær programmering. Problemet er å finne et maksimum eller minimum av et lineært objekt:

Page 107: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

107  

for eksempel 2 3

Under et sett med lineære begrensninger

og/eller

og/eller

for eksempel

4 3 3 2 10

10 0 , 0, 0

Dette siste betyr at alle variablene er positive. Simplex-algoritmen vil maksimere eller minimere funksjonen ax med begrensningene A1x ≤ b1, A2X ≥ b2, A3x=b3 og x≥0 a er en vektor med lengde n som gir koeffisientene i objektfunksjonen. A1 er en m1xn matrise for begrensningene ≤ b1 er en vektor med lengde m1 som gir høyre siden av ≤ A2 er en m2xn matrise for begrensninger ≥ b2 er en vektor med lengde m2 som gir høyre side av ≥ A3 er en m3xn matrise for = b3 er en vektor med lengde m3 som gir høyre side av = For LP-problemet nevnt over får vi: library(boot) library(help=boot) ?simplex a<-c(2,-3,1) A1<-rbind(c(4,-3,1),c(2,1,-1), c(1,1,1)) b1<-c(3,10,10) simplex(a=a, A1=A1,b1=b1,maxi=T) Linear Programming Results Call : simplex(a = a, A1 = A1, b1 = b1, maxi = T) Maximization Problem with Objective Function Coefficients x1 x2 x3 2 -3 1 Optimal solution has the following values x1 x2 x3 0 0 3

The optimal value of the objective function is 3.

Page 108: Bruk av R – eksempler5 1926-2007. Selv om det ser ut som trendlinjen i Figur 1 viser synkende tendens, så er ikke dette signifikant. #Et nytt plot hvor vi også skriver inn nedbør

108  

Vi kan se på flatene som lager begrensningene til objektfunksjonen: x<-seq(0,10,1) y<-seq(01,10,1) f<- function(x,y){-4*x+3*y+3} z <- outer(x,y,f) z[is.na(z)]<- 1 op <- par(bg= "lightyellow") persp(x,y,z,theta=30,phi= 40,expand=0.5,col="lightgreen",ticktype="detailed", main=expression (z==-4*x+3*y+3)) g<- function(x,y){2*x+y+10} z <- outer(x,y,g) z[is.na(z)]<- 1 op <- par(bg= "lightyellow") persp(x,y,z,theta=30,phi= 40,expand=0.5,col="lightblue",ticktype="detailed", main=expression (z==2*x+y+10)) h<- function(x,y){-x-y+10} z <- outer(x,y,h) z[is.na(z)]<- 1 op <- par(bg= "lightyellow") persp(x,y,z,theta=30,phi= 40,expand=0.5,col="orange",ticktype="detailed", main=expression (z==-x-y+10))