Modellering av reelle datasett

<div class="alert alert-block alert-danger">

Info til lærer

Dette er opplegg for bruk av reelle data, der elevene henter ut delmengder av et datasett, gjennomfører regresjon, og diskuterer datasettets historiske utvikling. Datasettet vi bruker følger med når du laster ned notebooken.

Kompetansemål i S1:

<div class="alert alert-block alert-warning">

Mål for opplæringen er at eleven skal kunne

  • planlegge og gjennomføre et selvstendig arbeid med reelle datasett knyttet til samfunnsøkonomiske temaer og forhold, og analysere og presentere funn
  • uttrykke egne resonnementer ved hjelp av matematiske begreper og symbolspråk
  • anvende derivasjon til å analysere og tolke egne matematiske modeller av reelle datasett

Kryptovaluta

Her skal vi se på et datasett som viser utviklingen av valutaen til BitCoin. Datasettet går over hele perioden fra BitCoin ble startet i 3. januar 2009 til 29. mars 2022. Vi starter med å vise hvordan man laster inn datafilen og hvordan man plotter den.

Datafilen er hentet fra https://www.blockchain.com/charts/market-price hvor man også kan hente ned tilsvarende datasett for andre valutaer eller en oppdatert fil for BitCoin hvis ønskelig.

[1]: 
1 
2
3
4
5
6
7
# Innlasting av fil og visning av datasettet

import matplotlib.pyplot as plt               # Bibliotek for plotting av graf
import pandas as pd                           # Bibliotek for innlasting av fil (blant annet)

data = pd.read_csv("Bitcoin.csv", sep=',')  # Laster inn datasettet (pass på å endre filnavnet)
print(data.head(5))                           # Skriver ut de 5 første radene 
             Timestamp  market-price
0  2009-01-02 23:00:00           0.0
1  2009-01-05 23:00:00           0.0
2  2009-01-08 23:00:00           0.0
3  2009-01-11 23:00:00           0.0
4  2009-01-14 23:00:00           0.0
[3]: 
1 
2
3
4
5
6
# Fjerne tidspunkt fra Timestamp-kolonnen

data['Timestamp'] = data['Timestamp'].str.replace('23:00:00','')
data['Timestamp'] = data['Timestamp'].str.replace('00:00:00','')

print(data.head(5))                          # Skriver ut det oppdaterte datasettet
     Timestamp  market-price
0  2009-01-02            0.0
1  2009-01-05            0.0
2  2009-01-08            0.0
3  2009-01-11            0.0
4  2009-01-14            0.0
[4]: 
1 
2
3
4
5
6
dato = list(data["Timestamp"])                      # Legger listen med Timestamp inn i listen dato
verdi = list(data["market-price"])                  # Legger listen med market-price inn i listen verdi

plt.plot(dato, verdi)                               # Plotter verdien mot dato fra 2. jan 2009
plt.xticks(dato[::122],  rotation='vertical')       # xticks setter antall hopp i markeringene langs x-aksen
plt.show()                                          # Viser plottet

Fra plottet over ser vi at utviklingen har mildt sagt vært varierende fra 2017 og utover.

Vi ønsker ofte å kun plotte en del av et datasett. Dette gjør vi ved å velge en periode.

Velge ut en periode fra datasettet

Siden 0 = 2. januar 2009, og 1 = 5. januar 2009, så øker dager med 3 ganger nummeret. Under viser vi hvilke tall som svarer til hvilke perioder.

ÅrKode for intervallet
2009[0 : 121]
2010[122 : 242]
2011[243 : 364]
2012[365 : 486]
2013[487 : 608]
2014[609 : 729]
2015[730 : 851]
2016[852 : 973]
2017[973 : 1095]
2018[1096 : 1216]
2019[1217 : 1338]
2020[1339 : 1460]
2021[1461 : 1582]
2022[1583 : 1627]
[7]: 
1 
2
3
4
5
6
7
8
9
10
11
# Eksempel for perioden 3. januar 2018 til 29. mars 2018

start = 1096                       # Startpunkt for plottet
slutt = 1126                       # Sluttpunkt for plottet

x = dato[start : slutt]            # Henter ut dato fra datasettet for perioden
y = verdi[start : slutt]           # Henter ut verdi fra datasettet for perioden

plt.plot(x, y)                                 # Plotter verdi mot dato
plt.xticks(x[::2],  rotation='vertical')       # xticks setter antall hopp i markeringene langs x-aksen
plt.show()                                     # Viser grafen
<div class="alert alert-block alert-info">

Oppgave 1

Velg en periode på et par måneder og plott utviklingen av valutaen over denne perioden.

<div class="alert alert-block alert-info">

Oppgave 2

Velg en regresjonsmodell og tilpass til perioden du valgte. Koden som trengs for å hente ut dataene fra perioden du valgte er gitt over og et eksempel på å hente ut et intervall som kan kopieres over i for eksempel GeoGebra er gitt under.

<br>

Merk:

Kolonnen under kan kopieres direkte inn i en kolonne i GeoGebra. Man må deretter lage en kolonne til med tilhørende x-verdier (for eksempel 1, 2, 3, 4, osv) for å lage en regresjon.

[13]: 
1 
2
3
4
# Kode for å hente ut y-verdiene til perioden du valgte over.

for i in y:
    print(i)
15039.24
17155.95
14437.42
13791.19
13554.14
11174.82
11513.42
11392.03
11431.37
10082.52
8852.73
6925.46
8245.08
8068.02
9471.64
11085.83
11245.98
10171.3
10319.46
10931.12
11516.83
9920.46
8777.37
9153.54
8297.89
8605.64
8725.37
8457.96
7950.61
6937.56
<div class="alert alert-block alert-info">

Oppgave 3

Plot funksjonen til den tilpassede funksjonen for datasettet du valgte. Koden for å plotte en funksjon er gitt under. Denne kan legge til slutt i koden du allerede har laget.

1 
2
3
4
5
6
7
8
9
10
from numpy import linspace

def f(x):
    return #skriv inn funksjonen her. Husk regneartene i python +, -, *, /, **

x = linspace(start, slutt, antall)     # skriv inn starten og slutten på intervallet, og antallet punkter (100 er vanligvis nok)
y = f(x)                                # kaller på funksjonen over og regner ut y-verdiene

plt.plot(x, y)
plt.show()
<div class="alert alert-block alert-info">

Oppgave 4

Diskuter modelen du har valgt i forhold til den faktiske utviklingen (maks 250 ord). Hvor realistisk er det å lage en modell som kan predikere utviklingen av kryptovaluta? (maks 400 ord).

<div class="alert alert-block alert-info">

Oppgave 5

Velg igjen en periode fra datasettet og forklar hvordan utviklingen i denne perioden relaterer til hendelser i verden. Et eksempel er at da Tesla grunnleggeren Elon Musk kunngjorde tidlig februar 2021 at firmaet hans hadde kjøpt 1.5 milliarder dollar Bitcoin, steg verdien på Bitcoin med 17 % til $44,220 som var den høyeste verdien til da.