R – gratis statistikkprogram, fullgod erstatning for SPSS

Tenkte jeg skulle skrive litt om R. SPSS er dyrt, og det er stort sett bare rike institusjoner som har råd til det, R koster ingenting i innkjøp, men det er litt terskel for å komme i gang. Så jeg tenkte jeg skulle skrive litt om hvordan man, rent praktisk, kommer i gang med å bruke R hvis man plutselig er i en situasjon hvor man jobber et sted som ikke har råd til SPSS.

1. Installere R

Det første du må gjøre, rimeligvis, er å få tak i softwaren og installere den. Så, hvordan gjør du det? Jo, du går på http://cran.uib.no/ og der får du de instruksene du trenger. R finnes til Mac, Linux og Windows, og har du et tredje alternativ, vil jeg tro du er ekspert og kan finne ut av dette sjøl. Jeg sitter på Mac, og skal prøve å ta hensyn til at leseren kanskje har noe annet. Si gjerne fra hvis du er på en av de kjente platformene og får problemer med å laste ned, så kan jeg evt. utbrodere instruksjonene.
  • Er du på Windows, vil du gå hit.
  • Er du på Mac, vil du gå hit.
  • Er du på Linux, får vi håpe du vet hva du gjør.
Såh, det første du ønsker, tenker jeg, er å komme kjapt i gang med å jobbe med datasettet ditt. Så akkurat her og nå tenkte jeg følgende: La oss se på det i hente inn et datasett i R sånn at vi kan jobbe med det. Så her kommer hva du må gjøre for å hente inn data fra et datasett i Excel. Jeg kommer ikke til å si noe om hvorfor du må gjøre disse tingene, det kommer i et eventelt seinere innlegg dersom det kommer kommentarer til dette. Du begynner med å starte applikasjonen R. Du får opp et vindu som har noen ikoner og noen greier. Det viktigste er likevel dette:
  1. Glem ikonene før du kan veldig mye. De bare forvirrer. De er nyttige men de gjør ikke det du tror.
  2. Du må taste inn ting. Det er ikke pek og klikk.
  3. Du må vite hvor på disken du har ting.
Sånn omtrent sånn skal det se ut: RScreenSnapz001

2. Hente inn data

For at du skal få en opplevelse av mestring, så tenkte jeg vi skulle begynne enkelti: Vi har ei datafil på nett, og den skal du klare å laste inn. Du går på kommandoprompet, som ser sånn ut:
>
og taster inn
data <- file ("http://blog.grendel.no/wp-content/uploads/2012/02/dagbladskoletull.tab",encoding="utf-8",open="r")
da skal skjermen se sånn ut:
> data <- file ("http://blog.grendel.no/wp-content/uploads/2012/02/dagbladskoletull.tab",encoding="utf-8",open="r")
>
Det vi har gjort nå, er å si til R at R skal hente inn i minnet sitt et dokument som ligger ute på nett, det er kodet i et dataformat som heter utf-8 (alternativ som du kanskje kjenner igjen er ASCII eller ANSI), og vi skal kunne lese det. Hvis du nå sier
data
til R, så får du vite hva R forstår av det du har gjort. Da skal vinduet se sånn ut:
> data
                                                              description
 "http://blog.grendel.no/wp-content/uploads/2012/02/dagbladskoletull.tab"
                                                                    class
                                                                    "url"
                                                                     mode
                                                                      "r"
                                                                     text
                                                                   "text"
                                                                   opened
                                                                 "opened"
                                                                 can read
                                                                    "yes"
                                                                can write
                                                                     "no"
Det du har gjort nå, er å si til R at symboldet data skal inneholde en referanse til datasettet, som da er ei fil som ligger ute på nettet. Du kunne kalt data hva som helst, det er ikke farlig. Alternativer er naturligvis
> data <- file ("~/Users/meg/Documents/dagbladskoletull.tab",encoding="utf-8",open="r")
for Mac-brukere, eller
> data <- file ("C://My Documents/dagbladskoletull.tab",encoding="utf-8",open="r")
R er ikke noe glad i å lese Excel-filer, selv om R kan det. Så langt ønsker jeg på en måte bare å komme i gang tilstrekkelig til å kunne hente inn et datasett og gjøre noe med det. Du får selv oversette dette til datasettet du ønsker å jobbe med. Men både Excel og SPSS kan lett lagre tekst-filer. Det er ikke så enkelt som at du nå bare kan gjøre noe med dataene. Du har opprettet en forbindelse til dem, men du har ikke hentet dem inn i R ennå. Det gjør du ved å si dette:
dagbladskoletull <- read.table ( file = data, header = FALSE, sep ="t")
Hvis R ikke sier noe til deg, men bare svarer med
>
så har du gjort det riktig. Du har åpnet en forbindelse med dataene og fått R til å lese inn data derfra. Det er en grunn til at det er to trinn og ikke et, men den er teknisk, så den hopper vi over. Det du har gjort er å si til R at symbolet dagbladskoletull skal bli assosiert med datene som symboldet data referer til. Øverste linje inneholder ikke navn på dataene, og dataene er skilt med tab-tegn (t). Hade det vært komma-separert (og da hadde filnavnet gjerne sluttet med .csv) så hadde det stått sep = ",". sier du nå
names(dagbladskoletull)
Vil R svare
 [1] "V1"  "V2"  "V3"  "V4"  "V5"  "V6"  "V7"  "V8"  "V9"  "V10" "V11" "V12" "V13" "V14" "V15"
[16] "V16" "V17"
>
Fordi vi har subbet inn et datasett med 17 variable uten å gi dem navn. Det gjør vi sånn:
install.packages("reshape")
library(reshape)
names(E) <- c ("Kommune", "Resultat på nasjonale prøver", "Dagbladets rangering", "Gjennomsnittlig grunnskolepoeng", "Driftsutgifter", "Gjennomsnittlig gruppestørrelse", "Andel elever med direkte overgang fra grunnskole til videregående opplæring", "Andel lærere med universitetsutdannelse", "Mobbing", "Folketall", "Kommunenummer", "Engelskresultat", "Norskresultat", "Matteresultat", "Andel med grunnskole", "Andel med videregående skole", "Andel med universitetsutdannelse")
Dataene er hentet fra Dagbladets serie om skole-Norge som de kjørte sommeren 2010. Jeg har lagt til noen data fra Statistisk Sentralbyrå sjøl. Alle dataene er offentlig tilgjengelige. Det første vi skal gjøre omfatter noen besvergelser igjen. Bare tast inn dette:
install.packages("psych")
library(psych)
describe(dagbladskoletull)
Så får du ut
                                                                            var   n     mean
Kommune*                                                                      1 430   215.50
Resultat på nasjonale prøver                                                  2 403   209.73
Dagbladets rangering                                                          3 404   196.12
Gjennomsnittlig grunnskolepoeng                                               4 415    97.38
Driftsutgifter                                                                5 415    86.13
Gjennomsnittlig gruppestørrelse                                               6 415  1850.34
Andel elever med direkte overgang fra grunnskole til videregående opplæring   7 415    11.94
Andel lærere med universitetsutdannelse                                       8 415    39.63
Mobbing                                                                       9 415     1.46
Folketall                                                                    10 430 11482.01
Kommunenummer                                                                11 430  1185.80
Engelskresultat                                                              12 407     2.94
Norskresultat                                                                13 408     3.04
Matteresultat                                                                14 392     3.02
Andel med grunnskole                                                         15 430    33.98
Andel med videregående skole                                                 16 430    19.90
Andel med universitetsutdannelse                                             17 430    46.12
                                                                                  sd  median
Kommune*                                                                      124.27  215.50
Resultat på nasjonale prøver                                                  119.44  210.00
Dagbladets rangering                                                          117.33  186.00
Gjennomsnittlig grunnskolepoeng                                                 2.90   98.00
Driftsutgifter                                                                  6.86   86.70
Gjennomsnittlig gruppestørrelse                                               568.45 1743.00
Andel elever med direkte overgang fra grunnskole til videregående opplæring     2.38   12.00
Andel lærere med universitetsutdannelse                                         3.37   39.70
Mobbing                                                                         0.16    1.45
Folketall                                                                   35013.81 4559.50
Kommunenummer                                                                 577.88 1241.50
Engelskresultat                                                                 0.24    2.90
Norskresultat                                                                   0.27    3.00
Matteresultat                                                                   0.25    3.00
Andel med grunnskole                                                            6.57   33.10
Andel med videregående skole                                                    5.62   18.90
Andel med universitetsutdannelse                                                4.53   46.55
                                                                            trimmed     mad
Kommune*                                                                     215.50  159.38
Resultat på nasjonale prøver                                                 209.96  152.71
Dagbladets rangering                                                         194.51  142.33
Gjennomsnittlig grunnskolepoeng                                               97.85    2.97
Driftsutgifter                                                                86.46    6.23
Gjennomsnittlig gruppestørrelse                                             1798.49  459.61
Andel elever med direkte overgang fra grunnskole til videregående opplæring   11.99    2.52
Andel lærere med universitetsutdannelse                                       39.75    1.63
Mobbing                                                                        1.45    0.15
Folketall                                                                   6216.65 4309.18
Kommunenummer                                                               1212.38  753.16
Engelskresultat                                                                2.94    0.30
Norskresultat                                                                  3.03    0.30
Matteresultat                                                                  3.01    0.15
Andel med grunnskole                                                          33.49    5.56
Andel med videregående skole                                                  19.22    4.67
Andel med universitetsutdannelse                                              46.45    4.52
                                                                              min      max
Kommune*                                                                      1.0    430.0
Resultat på nasjonale prøver                                                  1.0    415.0
Dagbladets rangering                                                          2.0    409.0
Gjennomsnittlig grunnskolepoeng                                              82.0    100.0
Driftsutgifter                                                               43.8    100.0
Gjennomsnittlig gruppestørrelse                                               0.0   4519.0
Andel elever med direkte overgang fra grunnskole til videregående opplæring   4.5     17.4
Andel lærere med universitetsutdannelse                                       0.0     49.1
Mobbing                                                                       1.0      2.4
Folketall                                                                   215.0 605005.0
Kommunenummer                                                               101.0   2030.0
Engelskresultat                                                               2.1      3.6
Norskresultat                                                                 2.2      4.1
Matteresultat                                                                 2.2      4.7
Andel med grunnskole                                                         17.6     63.8
Andel med videregående skole                                                  9.2     46.9
Andel med universitetsutdannelse                                             26.9     56.8
                                                                               range  skew
Kommune*                                                                       429.0  0.00
Resultat på nasjonale prøver                                                   414.0 -0.02
Dagbladets rangering                                                           407.0  0.10
Gjennomsnittlig grunnskolepoeng                                                 18.0 -1.68
Driftsutgifter                                                                  56.2 -0.96
Gjennomsnittlig gruppestørrelse                                               4519.0  1.06
Andel elever med direkte overgang fra grunnskole til videregående opplæring     12.9 -0.24
Andel lærere med universitetsutdannelse                                         49.1 -7.71
Mobbing                                                                          1.4  1.00
Folketall                                                                   604790.0 12.63
Kommunenummer                                                                 1929.0 -0.29
Engelskresultat                                                                  1.5 -0.10
Norskresultat                                                                    1.9  0.13
Matteresultat                                                                    2.5  0.99
Andel med grunnskole                                                            46.2  0.89
Andel med videregående skole                                                    37.7  1.42
Andel med universitetsutdannelse                                                29.9 -0.75
                                                                            kurtosis      se
Kommune*                                                                       -1.20    5.99
Resultat på nasjonale prøver                                                   -1.19    5.95
Dagbladets rangering                                                           -1.18    5.84
Gjennomsnittlig grunnskolepoeng                                                 4.13    0.14
Driftsutgifter                                                                  3.36    0.34
Gjennomsnittlig gruppestørrelse                                                 2.31   27.90
Andel elever med direkte overgang fra grunnskole til videregående opplæring    -0.17    0.12
Andel lærere med universitetsutdannelse                                        91.27    0.17
Mobbing                                                                         3.45    0.01
Folketall                                                                     199.96 1688.52
Kommunenummer                                                                  -1.19   27.87
Engelskresultat                                                                 0.56    0.01
Norskresultat                                                                   0.62    0.01
Matteresultat                                                                   5.72    0.01
Andel med grunnskole                                                            1.56    0.32
Andel med videregående skole                                                    3.07    0.27
Andel med universitetsutdannelse                                                0.91    0.22
Og dette er noe psykologer burde kjenne igjen … Er det ting som er vanskelig å skjønne her eller dålig forklart, i ifra, så skal jeg oppdatere teksten. Hvis det blir nok positive tilbakemeldinger, dekker jeg regresjonsanalyse neste gang 🙂