Matematisk Statistik Introduktion SF1911 Statistik för bioteknik: Autumn 2016 Lab 3 för CBIOT3 Detta är handledningen till Laboration 3, ta med en en utskriven kopia av den till laborationen. Läs handledningen två gånger. Försäkra dig om att du förstår hur de MATLAB-kommandon som finns i den bifogade koden fungerar. Laborationen bedöms som godkänd eller ej godkänd. För att få deltaga i laborationen skall svar på förberedelseuppgifter kunna redovisas individuellt. Arbete i grupp är tillåtet med högst två, personer per grupp. Godkänd laboration ger 3 poäng till ordinarie tentamenstillfälle. 1 Problem 1 - Fördelning av nukleotider i DNA För DNA sekvenser så är det ibland av intresse att undersöka om fördelningen av nukleotiderna är uniform, dvs att alla relativa frekvenser av A,T, G, C i en sekvens är lika med 0.25. I filen dnadat.mat på hemsidan finns en sekvens av DNA (j.f.r. Problem 10.1.8 i övningarna). Undersök med χ 2 test om fördelningen är kan anses vara uniform på signfikansnivån 5 %.. Sida 1 av 5
2 Problem 2 - Logistisk Regression & statistisk validering av prediktionsförmåga För den här uppgiften behövs filerna logisticmle.m och kappa.m ifrån hemsidan. Koden nedanför slumpar fram data med logistisk fördelning enligt metoden som presenterats på föreläsning 13 och övningarna 11.1.2-1.1.2. De riktiga parametrarna för modellen kan ändras och finns i variabeln realbeta. Kör koden och se att ni får betaestimate som är nära realbeta. realbeta=[2 3]; n=10000; p=unifrnd(0,1,[1,n]); e=log(p./(1-p)); x=normrnd(0,1,[1,n]); y1=realbeta(1)+realbeta(2)*x+e; y=(sign(y1)+1)/2; oneoutcomefrequency=sum(y)/n %Calculate the frequency of 1s in the outcomes [betaestimate,stderr,phat,deviance] = logisticmle(y,x); betaestimate Precis som med linjär regression går det att beräkna konfidensintervall och p-värde för modellens parametrar. I den här uppgiften ska vi dock använda ett annan metod för att utv rdera modellen. Vi använder modellen för att prediktera utfallen på en annan datamängd, kallas för testsett/ testmängd, som inte använts för att bygga modellen. Datamängden som användes för att optimera modellen kallas träningssett. Testsettet har precis som datamängden, som modellen byggdes ifrån, kända utfall (x, Y ). Genom att jämföra de av modellen predikterade utfallen med de kända så, går det att få fram ett mått på modellens prediktionsförmåga. Anledningen till att ha ett separat testsett är att vi inte kan testa modellen på, samma data som modellen optimerades för när den byggdes, eftersom det inte testar modellens förmåga att generalisera d.v.s behandla nya data. Det är inte heller svårt att göra en modell med 100% träffsäkerhet för data som den använt. En sådan modell är oftast väldigt dålig på att generalisera d.v.s en dylik modell är skräddarsydd för de data som användes för att estimera den och kan ej förklara annat. Testmängden skapas genom att (slumpmässigt) välja stickprov ur datamängden att antingen läggas i träningssätett eller testsettet. Det är viktigt att samma dataobjekt inte ingår i båda. Sida 2 av 5
I praktiken brukar s.k. korsvalidering användas. Datasettet delas slumpvis upp i n lika stora delar, ofta 10 stycken. Varje del används sedan en gång som testsett för en modell som byggts med de övriga delarna. Det gör att allt data används en gång som testsett. I det här fallet kan skapar vi ett helt ny datamängd samt prediktionerna av den binära variabeln Y för att använda som testsett med koden nedanför: ptest=unifrnd(0,1,[1,n]); xtest=normrnd(0,1,[1,n]); etest=log(ptest./(1-ptest)); ytestreal=realbeta(1)+realbeta(2)*xtest+etest; ytestreal=(sign(ytestreal)+1)/2; ytestpred=betaestimate(1)+betaestimate(2)*xtest; ytestpred=(sign(ytestpred)+1)/2; För kategori data är det enklaste sättet att mäta prediktionsförmågan genom att använda träffsäkerheten (accuracy), dvs andelen som predikteras till rätt kategori i testsettet. Ett annat sätt är Cohen s kappa, betecknat med κ, vilket tar hänsyn till hur många som kan bli rätt på grund av slump. Detta gör att κ blir mer robust än träffsäkerhet men det blir också svårare att tolka. Formeln för κ är : κ = p o p e 1 p e = 1 1 p o 1 p e där p o är accuracy, och p e den hypotetiska sannolikheten att få rätt, m.h.a de observerade data (den explicita formeln utelämnas, men framgår av koden nedan). Om slumpen avgör prediktionsförmågan, är κ 0. Koden nedanför ger träffsäkerheten och Cohen s kappa för testsettet. Det andra stycket av koden ger samma sak men för en modell som predikterar att allt får samma utfall. diff=ytestreal-ytestpred; Sida 3 av 5
modelaccuracy=1-(sum(diff==1)+sum(diff==-1))/n cross=crosstab(ytestpred,ytestreal); kappa(cross) onemodelaccuracy=1-(sum((1-ytestreal)==1)+sum((1-ytestreal)==-1))/n cross2=crosstab(zeros(n,1)+1,ytestreal); cross2=[0, 0 ; cross2(1) cross2(2)]; kappa(cross2) Pröva med olika värden på de riktiga beta parametrarna och jämför modellen som predikterar att allt får samma utfall med den 1logistiska modellen. Vad händer med måtten träffsäkerhet och kappa? Sida 4 av 5
3 Problem 3 - ANOVA Börja med att ladda ner clouds.txt ifrån hemsidan. Filen innehåller mätningar på mängden regn i fem områden i Tasmanien mellan 1964 och 1971. Man undersökte i experimentet om användningen av cloud-seeding på verkade mängden regn. Använd tre-vägs ANOVA för att testa effekten av område, season och seeded. Jämför modellerna med och utan interaktionstermen. MATLABs funktion för n-vägs ANOVA är anovan. För att kunna använda funktionen så behöver mätningarna och deras kategorier läggas i vektorer. En vektor som innehåller allt mätdata ifrån alla områden och sen en vektor per variabel som innehåller vilken kategori som mätpunkten tillhör, dvs en för område, en för season och en för seeded. Kod för läsa in datat och spara det i varsin vektor finns nedan: clouds=dlmread( clouds.txt, \t,1,0); rain=[clouds(:,4) ; clouds(:,5) ; clouds(:,6) ; clouds(:,7) ; clouds(:,8)]; seeded=[clouds(:,2) ; clouds(:,2) ; clouds(:,2) ; clouds(:,2) ; clouds(:,2)]; season=[clouds(:,3) ; clouds(:,3) ; clouds(:,3) ; clouds(:,3) ; clouds(:,3)]; area=[zeros(108,1) ; zeros(108,1)+1 ; zeros(108,1)+2 ; zeros(108,1)+3... ; zeros(108,1)+4]; Sida 5 av 5