Afsnit 7.7: Beregning i R

Jeg har lavet to funktioner til at lave forward selektionsanalysen. Funktionen forward finder variable og tilhørende -værdier baseret på alle data, og producerer en tabel med disse (og med spredningsskøn ). Input til funktionen er matricen med værdierne af de forklarende variable, vektoren med responsværdierne og et tal, der angiver, hvor mange trin der skal laves i forward selektionsalgoritmen.
Den anden funktion, cvForward, laver beregningerne hørende til cross-validation (LOOCV). Input er som til funktionen forward. Output er prædiktionsspredningen, når der kun medtages 1 variabel, når der medtages 2 variable og så videre op til det antal, der er angivet i kaldet til funktionen. Til beregning i R ligger de to funktioner i filen Rfunktioner.txt.
Det følgende skjulte punkt viser brugen af forward og cvForward på data vedrørende sedimenter i bunden af søer fra afsnit 7.5.

7.7.1 Forward selektion i R

Se opstartskoden (til/fra)

Kør koden, og se, at output fra de 6 første variable stemmer overens med tallene i tabellen i det foregående afsnit, og at alle -værdierne stemmer overens med det højre delplot i figuren i afsnit 7.5.
Ændr dernæst funktionskaldet forward(spek,LOI,15) til cvForward(spek,LOI,6), for at finde prædiktionsspredningen ved forward selektion når der medtages fra 1 til 6 variable. Beregningen tager lidt under et minut. Tjek, at de fundne værdier stemmer overens med tallene i tabellen i det foregående afsnit.

Kommentarer til koden

Åbn nu opstartskoden for at se definitionen på de to funktioner forward og cvForward. Her følger først lidt forklaring til koden i forward. Det essentielle trin i beregningen er "for"-løkken inde i forward-funktionen. Her prøver man for alle de forklarende variable, der endnu ikke er med i modellen, at tilføje en af disse og beregne spredningskønnet når variablen er tilføjet. I den efterfølgende kommando which.min(res) finder man nummeret på den variabel, der giver den mindste værdi af Estimation af den multiple regressionsmodel foregår ikke her med lm, som I ellers er vant til, men med funktionen lsfit. I den sidste er input ikke en modelformel, men derimod en matrice med værdierne af de forklarende variable. Efter at den nye variabel er fundet, estimeres den multiple regressionsmodel, og -værdier beregnes ud fra standard errors og opslag i en -fordeling.
Lad os dernæst se på opbygningen af funktionen cvForward. I denne indeholder matricen mat alle de kvadrerede prædiktionsfejl, rækker svarer til observationsnummer og søjle angiver, hvor mange led der tages med i forward selektion. "For-løkken" over er selve cross-validation skridtet, hvor den 'te observation tages ud, og træningssættet består af de resterende observationer. For hvert træningssæt gennemføres forward selektion, og hver gang en ny variabel er tilføjet, beregnes den prædikterede værdi for den observation, der er udeladt af træningssættet.

Resultat

Prædiktionsspredningen fra leave one out crossvalidation er mindst med 14 variable, og da dette næsten passer med, at -værdierne i figuren i afsnit 7.5 kommer op over 0.05, vælges dette antal.
Skønnet over spredningen fra den multiple regressionsmodel med de 14 variable fra en forward selektion er hvorimod prædiktionsspredningen er LOI-værdien ligger i disse data spredt ud mellem 5 og 74. Med en spredning omkring 8 kan vi konkludere, at NIRS-spektret giver brugbar viden om LOI-værdien, men med en del usikkerhed.

Test dig selv

Prøv at køre forward selektion på data i afsnit 7.4 med i alt 10 forklarende variable. Beregn også crossvalidation prædiktionsspredning.

Svar: Forward selektion

Forward selektion tager variable med i rækkefølgen , , , og SV, hvorefter -værdi bliver over 0.05. Crossvalidation giver mindst prædiktionsspredning med 4 variable.

ForegåendeNæste