Skip to end of metadata
Go to start of metadata

Du har funnet ut at du vil lage ditt eget varsel for julitemperaturen i Trondheim. Du har to brilliante ideer til hvordan du kan forutsi neste sommers temperatur:

  • Bruk gjennomsnittet av temperaturen i juli 2015 som estimat for alle dager i juli 2017.
  • Bruk snittemperaturen for 1. juli 2015 som estimat for 1. juli 2017, osv.

For å avgjøre hvilken som er best, vil du sjekke hvor godt modellene passer temperaturdata for 2016. Du har hentet data fra yr.no og lagret de i scriptet vaerdata.m.

Et vanlig mål på modellnøyaktighet er roten av snittet av kvadrert feil. Hvis \( \hat{y}_i \)  er estimatet og  \( y_i \)  er faktisk temperatur i dag nr. \( i \) , er formelen: \( RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^n (\hat{y}_i - y_i)^2} \) .

Hvilken metode later til å skulle fungere best?

Utdelt kode

 vaerdata.m
vaerdata.m
juli_2015 = [ 13.0, 19.7, 17.7, 13.0, 16.3, 15.9, 10.6, 9.9, 9.0, 8.8, 12.8, 17.0, 15.2, 12.8, 11.9, 10.0, 11.5, 12.0, 11.5, 12.1, 13.4, 13.2, 11.3, 12.3, 13.0, 12.3, 12.7, 13.2, 13.2, 10.6, 10.2 ];
juli_modell1 = repmat(mean(juli_2015), 1, length(juli_2015));
juli_modell2 = juli_2015;
juli_2016 = [ 15.8, 14.6, 11.4, 13.6, 13.3, 10.6, 11.5, 14.2, 13.4, 14.3, 16.5, 14.5, 12.6, 12.0, 11.7, 12.1, 12.4, 12.4, 14.5, 17.1, 23.3, 20.1, 16.7, 18.2, 20.6, 16.3, 16.9, 15.4, 15.8, 13.9, 13.0 ]; 

Videoforklaring (18:49)

Del 1 (8:48)Del 2 (10:01)
Generelt om problemløsning, og introduksjon og forklaring av problemet.Matlab-løsning av oppgaven.

 

Løsningsforslag

 Hvis du har prøvd selv, trykk her for å se svaret...

Modell 1 har en RMSE på 3.5217 Celsius, mens modell 2 har en RMSE på 4.3179 Celsius. Modell 1 later derfor til å fungere best.

rmse.m
function result = rmse(modell_data, faktiske_data)
	result = sqrt(mean((modell_data - faktiske_data) .^ 2));
end
I kommandovindu
% Først kjører vi scriptet vaerdata.m for å lage våre variabler med data.
vaerdata
% Deretter kaller vi vår rmse-funksjon for å regne ut rmse-verdiene for de to modellene.
rmse(juli_modell1, juli_2016)
rmse(juli_modell2, juli_2016)
  • No labels