Regresjon#
Regresjon
Regresjon er en metode for å finne et funksjonsuttrykk som passer best mulig med observerte data.
Oppgaver
Hva menes med at funksjonen vi får i en regresjon, er en modell?
Programmet nedenfor utfører en regresjon av løseligheten til natriumklorid.
a) Forklar hva programmet gjør.
b) Hva tror du funksjonen polyfit gjør? Hva returnerer den?
Kopier programmet over i en egnet editor og kjør programmet.
a) Hva slags modell har vi fått? Skriv ned funksjonsuttrykket.
b) Skriv ut a og b. Hva har funksjonen polyfit gitt oss? Stemmer det med det du trodde i oppgave b?
Legg til egnede aksetitler.
Prøv å endre polynommodellen ved å endre graden til polynomet slik at vi får en mer passende modell. Hint: Du må endre linje 10 og 14.
import numpy as np
import matplotlib.pyplot as plt
# Data
T = [0,20,40,60,80,100]
sol_NH3 = [88.5, 56.0, 34.0, 20.0, 11.0, 7.0]
sol_NaCl = [35.7, 35.9, 36.4, 37.1, 38.0, 39.2]
# Regresjon
a, b = np.polyfit(T, sol_NaCl, 1) # polynomgrad = 1
# Lager modellpunkter som kan plottes
x = np.linspace(0,200,10000)
y = a*x + b
plt.plot(T, sol_NaCl, marker = 'o', linestyle = ' ', label = 'Datapunkter')
plt.plot(x, y, label = "Modell")
plt.legend()
plt.xlabel("Sett inn aksetittel")
plt.ylabel("Sett inn aksetittel")
plt.show()
Vi har et datasett som viser temperaturen en god vårdag i april.. Modifiser programmet ovenfor slik at det gjør regresjon av disse dataene. Du kan få et hint nedenfor dersom du trenger hjelp til å lese av datafila.
Hint
Du kan enten lese av lenka direkte, eller laste ned fila og lese den fra datamaskinen din.
import pandas as pd
data = pd.read_csv("https://raw.githubusercontent.com/andreasdh/realprog/master/docs/datafiler/temperatur.txt", sep = ";")
tid_min = data["tid_min"]
temp = data["temp_C"]