I denne uges øvelser skal du blive fortrolig med den
statistiske model for regressionsanalysen. Desuden skal du
prøve at bruge funktionen lm i R til
analysen. Denne funktion skal du også bruge i
øvelse 6 og 7. Opgaverne 5.1-5.4 skal være forberedt hjemmefra og gennemgås ved tavlen til
øvelserne. Efter øvelsen skal der afleveres en rapport over opgave 5.5.
Et mål for udviklingen af kompleksiteten af computerchips er
antallet af transistorer på en chip. På adressen
Transistor count
kan man finde en tabel med antallet af transistorer for
108 chips produceret i perioden 1971-2016.
Moore's lov
siger, at antallet af transitorer på en chip
fordobles cirka hvert andet år. Dette blev formuleret af Gordon Moore,
som var medstifter af Intel (Moore's udsagn går helt tilbage til
1965 og 1975).
I skal nedenfor undersøge dette udsagn
ved at se på de log2 transformerede antal transistorers
afhængighed af produktionsår. Ved at bruge to-talslogaritmen
opnår vi, at en fordobling af antal transistorer svarer til
en stigning på 1.Filen Moore.csv indeholder data.
Filen har to søjler, hvor første søjle er produktionsår regnet
med udgangspunkt i 1950 (en værdi på 24 svarer således til 1974),
og anden søjle er
antal transistorer på chippen.
Indlæs data, og dan variablene
Aar og Antal
med indholdet af de to søjler.
Dan endvidere variablen log2Antal=log2(Antal) med de
log2 transformerede antal transistorer.
Lav en figur, hvor log2Antal tegnes
op mod Aar (Aar langs førsteaksen og
log2Antal langs andenaksen).
Er det rimeligt at sige, at der er en lineær
sammenhæng mellem de to variable?
Opskriv den lineære regressionsmodel for data. Estimer parametrene
i modellen, og lav figurer til modelkontrol.
I residualplottet skal du indtegne to vandrette linjer, der skærer
andenaksen i punkterne ±2sr, hvor sr er skønnet over
spredningen i regressionsmodellen.
Beregn 95%-konfidensintervaller for henholdsvis skæring og hældning
i den lineære sammenhæng mellem middelværdien af log2Antal og
Aar. Eftervis, at konfidensintervallet for hældningen,
fundet gennem et kald til confint, er korrekt ved at bruge
oplysninger i output fra summary.
Overvej, om data er i overensstemmelse med en teori,
der siger, at antallet af transitorer på en chip
fordobles hvert andet år?
I denne opgave skal I se på muligheden for at prædiktere den tid, der
skal bruges til at teste et program ud fra oplysning om, hvor lang
tid der er brugt på at kode programmet.
Data i filen Testtid.csv indeholder oplysninger for 95 programmer.
Filen har to søjler, hvor første søjle
er tid brugt på at kode, og anden søjle er tid brugt på at teste programmet
(begge tider er i timer).
Data er simulerede ud fra oplysningerne i figur 3 i artiklen
Software effort estimation with multiple linear regression: review and practical application. I opgaven her skal I etablere en lineær sammenhæng mellem
middelværdien af logaritmen til testtiden og logaritmen til kodningstiden,
og bruge denne sammenhæng til at
prædiktere testtiden ved forskellige givne værdier af
kodningstiden.
Lad logKode være en vektor med logaritmen til kodningstiderne, og
lad logTest være en vektor med logaritmen til testtiderne.
Lav en figur, hvor logTest
afsættes mod logKode.
Er det rimeligt at sige, at der er en
lineær sammenhæng mellem de to variable?Opskriv den lineære regressionsmodel for data, og estimer parametrene i
denne via lm og summary.
Indtegn den fundne linje i figuren med data. Prøv i ord at beskrive sammenhængen i data, ud fra hvad du ser i figuren.
Lav et test, for hypotesen at hældningen er nul. Hvad bliver
konklusionen af dit test?
Lav dernæst et 95%-konfidensinterval for hældningen.
Kommenter på betydningen af, at hældningen ser ud til at være væsentlig
mindre end 1.Lav et skøn over ændringen i middelværdi af logTest
mellem en værdi af logKode på 2 og 4,
og sammenhold denne med spredningen
omkring regressionslinjen (jævnfør din egen beskrivelse af
sammenhængen i data sidst i foregående spørgsmål).
Lav et 95%-konfidensinterval for middelværdien af logTest,
når logKode er 6. Lav dernæst et prædiktionsinterval for en kommende måling,
når logKode er 6. Prøv at forklare, hvorfor prædiktionsintervallet er noget bredere end
konfidensintervallet.
I dette spørgsmål skal du beregne konfidensintervallet og
prædiktionsintervallet i mange punkter og indtegne disse som en kurve i figuren fra spørgsmål (a).
Du kan finde inspiration til konstruktion af figuren
i afsnit 5.5 i det skjulte punkt "Test dig selv".
Til beregningen kan du kalde predict
med nye datapunkter givet ved
data.frame(logKode=c(0:100)*0.07).
Ved beskrivelse at et stykke software bruges flere forskellige mål.
I denne opgave skal I se på forholdet mellem to mål, nemlig antal
linjer med kode (loc) og McCabe kompleksitet (MC,
også kaldet cyclomatic complexity). McCabe kompleksiteten måler
antallet af stier gennem koden. Hvis for eksempel programmet har et
if-statement, giver dette to stier.
Lav en figur, hvor loc
afsættes mod MC, og hvor
førsteaksen går fra 0 til 6, og andenaksen går fra 0 til 35.Opstil regressionsmodellen M1, hvor middelværdien af loc afhænger
lineært af MC. Estimer denne model via lm,
og indtegn den fundne linje. Angiv et 95%-konfidensinterval for hældning og for skæring.
Kan det antages, at hælningen er nul, svarende til at antal kodelinjer
ikke er influeret af McCabe kompleksiteten? Angiv et 95%-konfidensinterval for middelværdien af
loc (linjens værdi), når MC har værdien 1.
Kompleksiteten er altid større end eller lig med 1, hvorfor
skæringen α med andenaksen ikke har en umiddelbar fortolkning.
Dog har værdien α=0 den fortolkning, at middelværdien af
antal kodelinjer er proportional med kompleksiteten.
Lav et t-test,
for at skæringen med andenaksen er i punktet nul.
Er det rimeligt at sige, at linjen går gennem (0,0)?
Opskriv regressionmodellen M2, hvor middelværdien af loc er
proportional med MC (linjen har skæring med andenaksen i nul).
Estimer denne model i R ved
et passende kald til lm. Angiv et 95%-konfidensinterval for hældningen i model M2. Angiv et 95%-konfidensinterval for middelværdien af antal
kodelinjer (linjens værdi),
når kompleksiteten er 1. Prøv at beskrive i ord forskellen mellem de to konfidensintervaller i dette
spørgsmål og de to konfidensintervaller i spørgsmål (a).
Vend tilbage til data og problemstilling i opgave 5.2. Forestil dig, at
vi for et program har brugt 27 timer til at teste programmet.
Desværre har vi forlagt registreringen af den tid, der blev brugt til at
kode programmet.
Lav et 95%-konfidensinterval for den tid, der blev brugt til at
kode programmet.
Hertil kan du bruge funktionen inversReg
omtalt i den skjulte
kode i
underafsnit 5.5.1. Funktionen findes i filen
Rfunktioner.txt.
I denne opgave skal I bruge en lineær regressionsmodel til at sige noget
om værdien af den forklarende variabel ud fra en målt responsværdi.
For data her er den forklarende variabel antallet
af personer i en større flok, for eksempel på en togperron,
og respons er et mål beregnet ud fra et billede på et
overvågningskamera, for eksempel antallet af pixels i billedet,
der klassificeres som tilhørende mennesker (personpixels).
Data i filen CrowdCounting.csv har to søjler,
hvor første søjle er antal personer i billedet, og
den anden søjle er antal personpixels. Der er data fra
96 billeder. Data er simulerede i overensstemmelse med situationen
vist i figur 2 i artiklen
Counting people with low-level features and Bayesian regression.
Lav en figur, hvor antal personpixels afsættes mod antal personer.
Styr start og slut på førsteaksen og andenaksen med
tilføjelsen xlim=c(0,60),ylim=c(0,25000) til
plot.
Synes du, at der er en lineær sammenhæng i data?
Synes du, at sammenhængen er god med henblik på at estimere antal personer
ud fra antal personpixels?
Opskriv den lineære regressionsmodel, hvor respons er
antal personpixels, og den forklarende variabel er
antal personer. Find skøn og 95%-konfidensinterval for hældning og skæring, og
indtegn den skønnede linje i figuren fra foregående spørgsmål.
Angiv også et skøn over spredningen σ
omkring den lineære sammenhæng.Lav figurer, der kan bruges til modelkontrol, og kommenter på
disse figurer.
Betragt situationen med et nyt billede, hvor antal personpixels
er målt til 12000.
Beregn et 95%-konfidensinterval for antal peroner i dette tilfælde. Gentag beregningen for tre andre billeder, hvor antal personpixels er målt til
henholdsvis 15000, 16000 og 17000.
Lav en tabel med resultaterne for de fire billeder.Hvis vi siger, at billederne viser personer på en togperron, og
personalet har en politik med at åbne et ekstra venteværelse, hvis der
er flere end 40 personer på perronen, hvor stor skal antal personpixels
i billedet så være, før du vil åbne for det ekstra venteværelse?