Oppg-3-5

Øvelse 3 – Oppgave 5

Standardavvik

I Test-deg-selv uke 36, oppgave 1.2, fikk du i oppgave å skrive deler av en formel i python-kode. Dette var formelen for standardavvik. Standarddavvik er gjennomsnittlig avvik fra gjennomsnittet. Det som manglet i den forrige versjonen av formelen var beregningen av summen av alle avvikene, siden x bare var ett tall.

Hele formelen er:

stddev = math.sqrt((sum(x-y)**2))/n-1

I denne oppgaven skal du beregne standardavviket for lista «data» gitt under, og pseudokoden gitt over.

data = 31, 31, 34, 6, 32, 25, 14, 25, 21, 42, 33, 32, 44, 20, 48, 31, 23, 23, 8, 3, 36, 10, 48, 43, 26, 8, 35, 40, 27, 4, 24, 5, 29, 15, 10, 29, 11, 15, 47, 29, 26, 23, 34, 38, 9, 42, 27, 13, 15, 9

Pseudokoden for hele beregningen er som følger:

  • Legg listen «data» i en variabel
  • Beregn gjennomsnittet av tallene i listen («y» i formelen)
  • Finn antall elementer i listen («n» i formelen)
  • Initier en tom liste (som senere skal holde avvikene)
  • For hvert element (x) i listen, beregn avvik fra gjennomsnittet: a = (x-y)**2
  • Legg hvert resulterende avvik til i den tomme listen.
  • Beregn summen av alle avvikene
  • Del summen av avvikene på n-1
  • Beregn kvadratroten av summen av avvikene – dette er standardavviket
  • Print ut standardavviket til slutt.

Løsningsforslag:


### Oppgave 5 svar

import math
import numpy as np

liste = [31, 31, 34, 6, 32, 25, 14, 25, 21, 42, 33, 32, 44, 20, 48, 31, 23, 23, 8, 3, 36, 10, 48, 43, 
        26, 8, 35, 40, 27, 4, 24, 5, 29, 15, 10, 29, 11, 15, 47, 29, 26, 23, 34, 38, 9, 42, 27, 13, 15, 9]

y = np.mean(liste)
n = len(liste)

avvik = []

for x in liste:
    a = ((x-y)**2)
    avvik.append(a)
    
total = np.sum(avvik)

totalOverN = total/(n-1)

stddev = math.sqrt(totalOverN)

print('standardavviket er: ', format(stddev, '.3f'))