11.4 - R en statistiek - deel 2

We gaan nu naar de regressie en correlatie kijken. We beginnen even met de correlatie. Die is nogal makkelijk in R.

De simpele versie is

cor.test(var1,var2)

Probeer maar eens:

var1<- rnorm(100,10,2)
var2<- rpois(100,4)

cor.test(var1,var2)

plot(var1,var2)

Je krijgt nu in het ene scherm de statistieken en in het andere scherm de grafiek.

Bij jullie ziet deze grafiek er anders uit, omdat we random gegevens genereren.

Resultaten correlatie

Je ziet rechtsboven de p-waarde van de correlatietest. Deze is in dit geval veel groter dan 0,05 er is dus geen significante correlatie. Daaronder zie je de correlatiecoefficient, deze is heel dicht bij 0, en dat is mooi in lijn met die kans hierboven. Als je

?cor.test typt, krijg je meer opties te zien. Met name de optie "method" is interessant. Standaard kiest hij de Pearson correlatie. Dit is een correlatietest voor normaal verdeelde gegevens.

Met method="spearman" krijg je de Spearman correlatie. Deze rangschikt eerst de gegevens en doet dan op die rankings een correlatie. Deze gebruik je als je gegevens niet-normaal verdeeld zijn.

 

Een mooie functie is pairs. Hiermee kun je heel snel van heel veel verschillende variabelen de spreidingsdiagrammen zien. Let op, er ligt hier wel een gevaar op de loer dat gaat vissen naar significante gegevens. Je hoort wel eerst een duidelijke verwachting te hebben voordat je gaat testen.

Probeer eens:

pairs(USJudgeRatings)

of overzichtelijker:

var1<- rnorm(100,10,2)
var2<- rpois(100,4)
var3<- rgamma(100,3)
var4<- rgamma(100,7)
var5<- rnorm(100,20,4)
var6<- var1 + rnorm(100,0,2)

pairs(~var1+var2+var3+var4+var5+var6)

Je ziet nu meteen dat er bij sommige grafieken wel een verband lijkt te zijn. De volgende functie kun je gebruiken om dan ook meteen per combinatie (per pair) de correlatiecoefficient te berekenen.

panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
{
   usr <- par("usr"); on.exit(par(usr))
   par(usr = c(0, 1, 0, 1))
   r <- abs(cor(x, y))
   txt <- format(c(r, 0.123456789), digits = digits)[1]
   txt <- paste0(prefix, txt)
   if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
   text(0.5, 0.5, txt, cex = cex.cor * r)
}

Kopieer dit en voer het uit.

En typ nu:

pairs(~var1+var2+var3+var4+var5+var6,  upper.panel = panel.cor)