Tilastollisia tunnuslukuja/käsitteitä:

  1. Otoksen hajonta - standard deviation
  2. Hajonta perusjoukolle - dispersion of population
  3. Yhteenveto

Hajontoja laskettaessa oleelliset vaiheet:

  1. Varianssin laskeminen
  2. Hajonta, eli \(\sqrt{varianssi ^ 2}\)

Otoksen hajonta - standard deviation

Ensimmäinen vaihe otoksen keskihajontaa laskiessa on laskea otoksen varianssi, eli \(S^2\).

\(S^2 = \dfrac{1}{n - 1}\;\sum_{i=1}^n \; (X_i - \bar{X})\)

Toinen vaihe, eli keskihajonnan laskeminen:

\(S = \sqrt{\dfrac{1}{n - 1}\;\sum_{i=1}^n \; (X_i - \bar{X})^2}\)

Keskihajonnan laskemisen voi esittää myös:

\(S = \sqrt{\dfrac{\sum{(x_i - \bar{x})^2}}{(n - 1)}\;}\;\)

Kaavassa:

Otoksen hajonta R-skriptinä:

# Esimerkki otos
otoksen_havainnot <- c(15, 20, 25, 30, 35)
# Lasketaan otoksen varianssi
varianssi <- var(otoksen_havainnot)
# Otoksen keskihajonta
otoshajonta <- sd(otoksen_havainnot)
# Tulostetaan tulokset
cat("Otoksen varianssi: ", varianssi, "\n",
    "Otoksen keskihajonta: ", otoshajonta, "\n", sep = "")
## Otoksen varianssi: 62.5
## Otoksen keskihajonta: 7.905694

Varianssin ja keskihajonnan laskemiseen käytimme äsken R-kielen omia funktioita “var” (variance/correlation) ja “sd” (standard deviation).

Ymmärrettävyyden vuoksi puretaan varianssin laskukaava vaiheisiin, eli summa \(\sum\) purettuna, kun arvoina on 1, 2, 3 ja 4:

\(S^2 = \dfrac{(1 - 2.5)^2 + (2 - 2.5)^2 + (3 - 2.5)^2 + (4 - 2.5)^2}{(n - 1)}\;\)

Kaavassa esiintyvä arvo 2.5 on siis otoksen keskiarvo \(\bar{x}\; = \dfrac{1+2+3+4}{4}\; = 2.5\)

Jos otoksen varianssin laskemiselle tehtäisiin oma R-funktio, näyttäisi se seuraavanlaiselta:

laske_otos_varianssi <- function(arvot) {
  keskiarvo <- mean(arvot)
  summat <- 0
  for (x_i in arvot) {
    y <- (x_i - keskiarvo) ^ 2
    summat <- summat + y
  }
  varianssi <- summat / (length(arvot) - 1)
  return(varianssi)
}

Hajonta perusjoukolle - dispersion of population

Ensimmäinen vaihe perusjoukon keskihajontaa laskiessa on laskea perusjoukon varianssi, eli \(\sigma^2\).

\(\sigma^2\; = \dfrac{1}{N}\;\sum_{i=1}^{N}\;(X_i - \mu\;)^2\)

Toinen vaihe eli perusjoukon keskihajonnan laskeminen:

\(\sigma\; = \sqrt{\dfrac{1}{N}\;\sum_{i=1}^{N}\;(X_i - \mu\;)^2}\)

Tai toisella muotoa esitettynä:

\(\sigma\; = \sqrt{\dfrac{\sum{(x_i - \mu\;)^2}\;}{n}}\;\)

Kaavassa:

Perusjoukon keskihajonta, eli “standard deviation” voidaan laskea perusjoukon varianssista neliöjuuren avulla:

\(\sigma\; = \sqrt{\sigma^2\;}\;\)

# Esimerkki perusjoukosta
pj_havainnot <- c(10, 12, 14, 18, 22)
# Lasketaan perusjoukon keskiarvo
pj_keskiarvo <- mean(pj_havainnot)
# Määritellään joukon koko, eli 'n'
n <- length(pj_havainnot)
# Luodaan perusjoukon varianssia laskeva funktio
pj_varianssi <- var(pj_havainnot) * (n - 1) / n
# pj_varianssi <- var(pj_havainnot, na.rm = TRUE) # toimii myös
# Lasketaan perusjoukon varianssi
pj_varianssi <- popvar(pj_havainnot)
# Perusjoukon keskihajonta
pj_keskihajonta <- sqrt(pj_varianssi)
# Tulostetaan tulokset
cat("Perusjoukon havainnot: ", pj_havainnot, "\n",
    "Perusjoukon keskiarvo: ", pj_keskiarvo, "\n",
    "Perusjoukon varianssi: ", pj_varianssi, "\n",
    "Perusjoukon keskihajonta: ", pj_keskihajonta, "\n", sep = "")
## Perusjoukon havainnot: 1012141822
## Perusjoukon keskiarvo: 15.2
## Perusjoukon varianssi: 18.56
## Perusjoukon keskihajonta: 4.308132

Tässä käytimme varianssia laskiessa kertoimena “\((n - 1) / n\)”, jolla kumotaan varianssin määrittelemä “\((n - 1)\)” ja saadaan jakajaksi “n”.

\(\dfrac{terms * (n-1)}{(n-1) * n}\)

Murtolausekkeesta voidaan nyt supistaa yhteiset tekijät pois. Yhteisiä tekijöitä osoittajassa ja nimittäjässä ovat “\((n - 1)\)”.

Jos perusjoukon varianssin laskemiselle tehtäisiin oma R-funktio, näyttäisi se seuraavanlaiselta:

laske_perusjoukon_varianssi <- function(arvot) {
  keskiarvo <- mean(arvot)
  summat <- 0
  for (x_i in arvot) {
    y <- (x_i - keskiarvo) ^ 2
    summat <- summat + y
  }
  varianssi <- summat / length(arvot)
  return(varianssi)
}

Yhteenveto

Keskihajonnan laskentatavassa perusjoukoille tai otoksille ei ole eroja muutoin kuin jakajan osalta. Tässä kohtaa kirjoittajalle on vielä epäselvää, että mitä eroja käytännössä on perusjoukoilla ja otoksilla.

Laskentatulokset varmistettiin netistä löytyvällä keskihajonta laskurilla. Laskuriin on mahdollista syöttää arvojoukkoja ja merkitä niitä perusjoukkoina tai otoksina. Laskuri myös esittää tulokset vaiheittain.

Laskennassa oleellista on laskea aluksi varianssi, jota laskiessa on huomioitava ollaanko laskemassa varianssia perusjoukolle vaiko otokselle. Tämän jälkeen keskihajonta saadaan laskemalla neliöjuuri varianssista.

Alla varianssia laskeva R-funktio, johon syötetään ensin “arvot” parametri ja sitten “otos” parametri. “arvot” parametrin tulee sisältää numeroita vektorimuotoisena ja “otos” parametriin odotetaan totuusarvoa. Jos “otos” parametrin arvo on “TRUE”, lasketaan varianssi otokselle. Muutoin (eli “otos=FALSE”) lasketaan varianssi perusjoukolle.

laske_varianssi <- function(arvot, otos=TRUE) {
  keskiarvo <- mean(arvot)
  summat <- 0
  for (x_i in arvot) {
    y <- (x_i - keskiarvo) ^ 2
    summat <- summat + y
  }
  otos <- as.integer(nayte) # otos vähennetään 1 - perusjoukko vähennetään 0
  varianssi <- summat / length(arvot) - otos
  return(varianssi)
}