I denne opgave skal I se på data fra artiklen
Prediction of full load electrical power output of a base load operated combined cycle power plant using machine learning methods, hvor man ønsker at prædiktere
Full Load Electrical Power Output (PE målt i mega watt)
time for time baseret på fire forklarende variable. De fire forklarende
variable er Ambient Temperature (AT målt i grader celsius),
Vacuum (Exhaust Steam Pressure) (V målt i cm Hg),
Atmospheric Pressure (AP målt i mbar) og
Relative Humidity (RH målt i procent). Datafilen PowerOutput.csv har søjlerne AT, V, AP, RH, PE, men
der er også tilføjet følgende søjler,
Indlæs data som en datatabel. Opskriv regressionsmodellen,
hvor middelværdien af PE
afhænger lineært af de fire forklarende variable AT, V, AP og RH.
Lav en figur, hvor residualerne i modellen afsættes mod AT.
Hvad ser du i denne figur (to ting) ?
Betragt nu regressionsmodellen med de seks forklarende
variable AT, V, AP, RH, AT2 og AT3.
Lav igen en figur, hvor residualerne i modellen afsættes mod AT.
Betragt nu regressionsmodellen med alle ni forklarende
variable AT, V, AP, RH, AT2, AT3, V2, AP2 og ATRH. Reducer den fulde multiple regressionsmodel ved successivt at fjerne led
i modellen (backward selektion). Lav en tabel, som for hvert trin
angiver den variabel der fjernes i modellen og den tilhørende -værdi. Hvor meget stiger power output med når luftfugtigheden falder fra
80 til 60 procent ?
Opskriv slutmodellen ved backward selektionsproceduren, og lav
et -test for reduktion fra den fulde model til
slutmodellen. Lav et qqplot af residualerne i slutmodellen. Angiv Resultat nummer,
for hvordan et qqplot vurderes
Angiv et 95%-konfidensinterval for regressionsparameteren, der ganges på
den forklarende variabel (luftfugtighed) i slutmodellen.
Det oprindelige datasæt har 9568 målinger, hvoraf jeg har givet jer 5000
ovenfor til at vælge en model. I
filen PowerOutputTest.csv er de
resterende 4568 målinger. Indlæs data fra PowerOutputTest.csv som en datatabel.
Benyt den estimerede model ovenfor til at prædiktere PE
for de nye data fra PowerOutputTest.csv. Lav en figur, hvor forskel mellem den målte og prædikterede værdi af
PE afsættes mod AT. Udregn kvadratroden af den gennemsnitlige værdi af
den kvadrerede forskel mellem den målte og prædikterede værdi af
PE. Sammenlign med skøn over spredningen i din slutmodel ovenfor.
Betragt den første måling i datafilen PowerOutputTest.csv.
Lav både et 95%-konfidensinterval for middelværdien af PE og
et 95%-prædiktionsinterval.
På et raffinaderi går råolien igennem flere processer, og undervejs skal
man vurdere, hvad det nuværende produkt bedst kan anvendes til.
Dette kræver mange tidskrævende analyser, og man er derfor interesseret i
simple alternative analysemetoder. I skal i denne opgave se på anvendelsen af
NIR-spektre til bestemmelse af cetantallet for dieselolie. Data er fra artiklen
IPA: A deep CNN based on Inception for Petroleum Analysis.
Filen TrainY124.txt indeholder data for
124 prøver med cetantal varierende mellem 19.0 og 71.1.
Filen har 124 rækker og 3891 søjler, hvor den sidste søjle
er cetantallet bestemt ved en kompliceret analysemetode.
I skal i opgaven etablere en model ved henholdsvis backward selektion og
ved ridge regression. I artiklen omtales partial least squares,
som giver en model, der er af samme type (lineær), som de to modeller I
skal betragte.
Der betragtes også to ikke-lineære og noget mere komplicerede modeller
i artiklen. Hvert NIR-spekter er målt ved 3890 bølgelængder (fra 4500 til
12000 ).
Indlæs data som en matriks Traen med
brug af indlæsningskommandoen np.loadtxt. Placer NIR-spektrene i en matrix
og cetantallet (søjle 3891) i vektoren cetan
(python: T=Traen[:,0:3890]). Angiv, hvor mange olieprøver der har et cetantal under 27.
Kør forward selektionsalgoritmen, hvor der inkluderes op til 20
led. Illustrer proceduren med en figur som i afsnit 9.4
baseret på output fra forward. Et kald til cvForward giver følgende crossvalidation prædiktionsspredninger (tager meget lang tid at køre).
Hvor mange variable, fundet ved forward selektion, vil du medtage
i en model til beskrivelse af cetantallet ?Synes du at cetantallet er velbestemt ud fra NIR-spektret.
Du skal nu bruge ridge regression til at
beskrive cetantallet ud fra
NIR-spektrene. Med alle 3890 forklarende variable inkluderet tager det
lang tid at køre cvRidge.
Jeg har derfor lavet et mindre datasæt hvor der kun medtages 350 bølgelængder, nemlig
søjlerne 501-750 og 3751-3850 blandt de 3890 søjler.
Det reducerede datasæt med spektrene er i filen Train124subset.txt.
Indlæs filen og brug denne delmængde af spektret til at lave
ridge regression. Lav en tabel med krydsvalideringsspredning
for -værdierne
. Lav også en figur, hvor afsættes mod . Vælg en værdi af ,
som du vil bruge til at beskrive data med.
Lav en figur med det observerede cetantal afsat
mod det forventede cetantal, og indsæt
identitetslinjen i denne figur.
Du kan eventuelt lade dig inspirere af koden i
den skjulte kode
Ridge regression i python.
Hvilken model foretrækker du, modellen fra forward selektion
eller modellen fra ridge regression ?
Kommentar omkring data. I artiklen omtales 249 prøver, der deles op i et
træningssæt med 174 prøver og et testsæt med 75 prøver. Imidlertid ser det
ud til, at 70 ud af de 75 i testsættet er indeholdt i de 174 prøver i
træningssættet. Jeg har derfor set bort fra testsættet i artiklen, og
bruger kun træningsættet fra artiklen i denne og den følgende opgave.
De 174 prøver i artiklens træningssæt har jeg delt op på et nyt træningsæt med
124 prøver og et nyt testsæt med 50 prøver. Jeg har gjort dette på en
sådan måde, at fordelingen af cetantallet i træningssættet og testsættet
ligner hinanden. Sammenligning med ridge regression baseret på alle 3890 variable i spektrene:
Følgende tabel viser cross-validation prædiktionsspredning
for nogle få værdier
af regulariseringsparameteren
Denne opgave er en fortsættelse af den foregående opgave.
Udover datasættet med 124 olieprøver er der også et
andet datasæt med 50 olieprøver. Vi kan bruge dette datasæt til
et uafhængigt tjek af, hvor god modellen er til at prædiktere.
Det nye datasæt er i filen TestY50.txt, som
har samme struktur som TrainY124.txt (men altså 50 rækker i
stedet for 124 rækker).
Indlæs som i foregående opgave data fra filen
TrainY124.txt og dan en matriks med spektrene og en vektor
cetan med cetantallene for de 124 prøver. Indlæs dernæst data fra filen
TestY50.txt og dan en matrik Ttest med spektrene og en vektor
cetantest med cetantallene for de 50 nye prøver.
Betragt først forward selektionsmodellen fra foregående opgave,
hvor der medtages 10 variable. Estimer modellen baseret på og
cetan, og lav prædikterede værdier for prøverne med spektre i
Ttest.
Dette kan gennemføres under brug af koden i det skjulte punkt
Bruge slutmodellen til prædiktion. Udregn testspredningen som kvadratroden af den gennemsnitlige værdi
af den kvadrerede afstand mellem prædiktion og den sande værdi,
det vil sige
Overrasker værdien dig ?
Betragt nu ridge regression, hvor regulariseringsparameteren
vælges til
Benyt funktionen ridge til at finde
og spredningsskøn
baseret på spektrene i og respons i cetan. Angiv den første koordinat i vektoren
Udregn de prædikterede værdier for de nye data med spektre i
Ttest (se koden i det skjulte punkt
Ridge prædiktion i python)Lav en figur hvor de observerede værdier for de nye data
afsættes mod de prædikterede værdier. Indsæt
identitetslinjen i figuren. Hvad er den største abolutte prædiktionsfejl, og hvor optræder den ?
Udregn testspredningen som kvadratroden af den gennemsnitlige værdi
af den kvadrerede afstand mellem prædiktion og den sande værdi. Sammenlign denne værdi med cross-validation prædiktionsspredningen
Som nævnt i starten af foregående opgave betragtes i artiklen
IPA: A deep CNN based on Inception for Petroleum Analysispartial least squares og to mere avancerede metoder.
Desværre kan vi ikke bruge de testspredniger der nævnes i artiklen,
men vi kan lave en ny beregning for partial least squares baseret på de data
I har betragtet i denne og den foregående opgave.
I partial least squares skal man vælge et antal "komponenter", og vælges 8
får man en cross-validation prædiktionsspredning på 2.14. Benyttes
8 komponenter bliver testspredningen fra de 50 prøver i
TestY50.txt 1.54. Overordnet set, giver de tre metoder
forward selektion, ridge regression og
partial least squares lige gode resultater.
Til bestemmelse af mængden af protein i en prøve bruges ofte et
Bradford assay.
Lys med en bølgelængde på 595 nm sendes gennem prøven og absorbansen
måles. Ud fra en kalibreringskurve laves der et skøn over proteinmængden.
Imidlertid er respons som funktion af proteinmængden kun lineær i et
mindre område, hvilket øger usikkerheden i metoden.
I artiklen
Linearization of the Bradford Protein Assay fra 2010 (baseret på artikel fra 1996)
foreslås at bruge forholdet
mellem absorbans ved bølgelængderne 590 nm og 450 nm, hvor teori og
praksis peger på en lineær sammenhæng i et større område.
I skal i denne opgave se på data fra artiklen,
hvor det er muligt at lave et test for linearitet.
For hver af 6 proteinmængder er der lavet 3 målinger af absorbans ved
både 590 og 450 nm, svarende til brønd A, B og C i tabellen nedenfor.
Data er i i filen TreGentagBradford.csv, der
har tre søjler, hvor første søjle indeholder proteinmængden BSA
(Bovine serum albumin, ),
den anden søjle er en variabel gruppe, der
koder for BSA-gruppe (med værdierne G1,G2,G3,G4,G5,G6), og
den tredje søjle indeholder absorbansratio.
Data er gengivet i den følgende tabel, hvor søjlen F
indeholder forholdet mellem måling ved 590 nm og 450 nm.
Et relevant spørgsmål for data af denne type er, om man skal tage gennemsnit
for hver bølgelændge af de tre målinger, før man beregner forhold,
eller om man skal lave forholdet for hver brønd og tage gennemsnit af
disse. Formodentligt giver det en meget lille forskel, men
da respons er lineær for forholdet, vil det være bedst
at betragte forholdet for hver brønd og så
tage gennemsnit. Et andet spørgsmål, I skal overveje nedenfor, er, om man skal basere
kalibreringskurven på gennemsnit af de tre forhold for hver
proteinmængde, eller om man skal basere beregningerne på alle
18 datapunkter.
Opstil normalfordelingsmodellen, hvor hver BSA-gruppe har sin
egen middelværdi af absorbansratio, og alle grupperne har den samme varians. Analyser modellen i python, og angiv skøn over spredningen i modellen.
Opstil regressionsmodellen, hvor middelværdien af absorbansratio
afhænger lineært af BSA. Analyser modellen i python, og angiv skøn over spredningen i modellen. Hvis man kun betragter data bestående af 6 proteinmængder og 6
absorbansratioer, som hver er gennemsnit af tre målinger, vil en
regressionsmodel give et skøn over spredningen på 0.02665.
Kan du forstå dette i sammenligning med det skøn, du fik
ovenfor (svaret kan godt være "nej") ?
Forklar, at regressionsmodellen er en undermodel af modellen,
hvor hver BSA-gruppe har sin egen middelværdi af absorbansratio
(den ensidede variansanalysemodel). Lav et test for reduktion fra den ensidede variansanalysemodel
til regressionsmodellen. Angiv den -fordeling, der bruges.
Er -værdien stor nok, til at du vil acceptere regressionsmodellen ?
Beregn et 95%-konfidensinterval for hældningen i den lineære
sammenhæng mellem middelværdien af Absorbansratio og BSA. Hvis man igen betragter regressionsmodellen baseret på de 6 gennemsnit,
bliver konfidensintervallet Sammenlign dette med det
konfidensinterval du lige har fundet.
Betragt en ny prøve med ukendt indhold af proteinmængden BSA, hvor
absorbansratio er målt tre gange med værdierne 0.979, 0.977, 0.984.
Angiv et 95%-konfidensinterval for det ukendte indhold af BSA. Hvis man igen betragter regressionsmodellen baseret på de 6 gennemsnit,
og en ny måling som er 0.980 (gennemsnittet af de tre målinger ovenfor),
bliver konfidensintervallet
Ved fremtidig brug af kalibreringskurven til bestemmelse af proteinindholdet
vil du da vælge at bruge kurven og spredningskøn baseret på alle 18 datapunkter,
eller vil du bruge kurven og spredningsskøn baseret på de 6 gennemsnit ?
I denne sidste opgave er det meningen, at I
hovedsageligt skal bruge metoderne fra de 6 første øvelser
(undtagelsen er det sidste spørgsmål). I artiklen
Use of Multiple Linear Regression Models for Setting Water Quality Criteria for Copper: A Complementary Approach to the Biotic Ligand Model
betragtes forskellige modeller til at beskrive giftigheden af
kobber i vandløb. Giftigheden, under givne forhold, findes ved at lave en
række forsøg med forskellige koncentrationer af kobber i det vand
hvor vandlopper
(Daphnia magna)
opholder sig i et givet tidsrum. Som beskrivelse af giftigheden bruges
den koncentration af kobber under
hvilken 50 procent af vandlopperne dør. Denne kaldes
acute EC50
(Half maximal effective concentration).
Som modeller for EC50-koncentrationen har man på
den ene side en simplificeret
model, hvor man kun bruger vandets hårdhed som forklarende
variabel i en regressionsmodel. På den anden side har man
en kompliceret multipel regressionsmodel med 10 forklarende
variable, som ifølge forfatterne ikke har vundet indpas i
vandkvalitetsprogrammer. Forfatterne betragter i stedet
en mere simpel multipel regressionsmodel med tre forklarende
variable, henholdsvis DOC (dissolved organic carbon, mg/L),
hårdhed (mg/L)
og pH. I opgaven her skal I betragte data for EC50-koncentrationen af kobber
(g/L Cu). Den bedste skala
at betragte data på er ved at logaritmetransformere værdierne
(dog ikke pH, som allerede er på en log-skala).
Filen Dmagna.csv indeholder variablene
DOC, hardness, pH og
EC50. Der er data for 302 målinger.
Lad logEC50 være logaritmen til acute EC50, og for
nemhed i notationen lad være logaritmen til DOC og
være logaritmen til hardness. En analyse af den multiple
regression af logEC50 på , og pH viser, at modellen
kan reduceres til
Du kan eventuelt køre en multipel regressionsanalyse og se, at
parametertabellen ikke strider mod
og
Denne analyse giver anledning til at indføre et indeks,
her kaldet giftIndex, på formen
Fra data ses, at dette indeks svinger omkring værdien
Opgaven her går ud på at lave nogle (lidt usædvanlige) undersøgelser
for at se, om den multiple regressionsmodel kan forbedres ved at
inkludere flere variable. Specifikt skal I
se, om produktet indeholder information om
giftindex ved at dele data op i grupper efter denne variabel.
Indlæs data og dan variablene logEC50, , og pH.
Dan dernæst giftIndex. Tjek at gennemsnit af målingerne af giftIndeks er
Konstruer en kategorisk variabel gruppe,
der deler op i tre grupper, , og , efter om
er mindre end 25, er mellem 25 og 35 eller over 35.
I python (pandas) kan dette gøres med kommandoen
Dan nu to datasæt, giftA og giftC, med værdierne af
giftIndex hørende til gruppe og til gruppe . Der er
60 observationer i gruppe og 96 i gruppe .
For de 60 prøver i gruppe er der 14, der har en værdi af
giftIndex under (konstater, at dette er rigtigt).
Opstil en statistisk model til beskrivelse af observationen 14,
og lav et 95%-konfidensinterval for sandsynligheden for, at
værdien af giftIndex er under i gruppe .
For de 96 prøver i gruppe er der 29, der har en værdi af
giftIndex under
Undersøg, om der er samme frekvens af prøver med en
værdi af giftIndex under
i de to grupper og .
Opstil en statistisk model til beskrivelse af værdierne af
giftIndex i giftA og giftC. Lav et test for hypotesen, at der er samme middelværdi
af giftIndex i de to grupper og .
Betragt nu giftIndex for alle 3 grupper dannet
ud fra faktoren gruppe.
Opstil en statistisk model for data, og undersøg først, om
der er samme varians for de tre grupper, og dernæst, om der er samme
middelværdi for de tre grupper.
Ovenstående analyse viser, at der er information i produktet
, der kan bruges til at beskrive
giftIndex, og dermed kan bruges til at
beskrive logEC50.
I dette delspørgsmål skal I
analysere en multipel regressionsmodel til beskrivelse af
logEC50, hvor I som forklarende variable
ud over , og pH også bruger alle produkter af disse,
det vil sige, variablene
Opskriv den multiple regressionsmodel,
hvor alle 9 forklarende variable inddrages.Reducer modellen ved brug af backward selektion.
Lav et test for reduktion fra startmodel til slutmodellen
fremkommet ved backward selektion.Angiv et
95%-konfidensinterval for regressionskoefficienten
hørende til variablen i slutmodellen.I din slutmodel, hvor meget stiger middelværdien af logEC50 hvis
dissolved organic carbon stiger fra 2 til 10 ?
Overvej, hvilke figurer du ville lave til kontrol af
slutmodellen (du skal ikke lave figurerne).
Sammenlign endelig skøn over spredning i slutmodellen med
skøn over spredning i den multiple regressionsmodel
hvor kun de tre forklarende variable , og pH inddrages.
Er det rimeligt at bruge denne
sidste simple model ?