Blog: "Thema: R" deel 2

Deze keer presenteer ik een nieuwe entropiemaat en een R- script dat benut kan worden om de bedoelde maat, maar eventueel ook spreidingsmaten, te normaliseren.
Blog: "Thema: R" deel 2

Onder normaliseren wordt hier specifiek het volgende bedoeld: de spreidings- of entropiemaat mag, indien toegepast op een normaalverdeling,  niet sterk afwijken van de standaarddeviatie. Dit is de spreidingsmaat behorend bij  de, – in de statistiek veel gebruikte-,  normaalverdeling.  Als het gemiddelde van een normaalverdeling 0 en de standaarddeviatie ervan 1 is, spreken statistici van een standaardnormale verdeling. De standaarddeviatie van de standaardnormale verdeling geeft het inflectiepunt van de verdeling aan. Dit is plaats waar de curve van hol,  bol wordt.

De functie die de spreidings en entropiie maten normaliseert is gebaseerd op de random number generation faciliteit in R.  De volgende 4 regels code volstaan:

norm_adj  <-  function(x , c , f = spreidingsmaat) {

f1 <- function(z) f(rnorm(x,  0,  1))

l  <- lapply(1: c,  f1)

1   /   mean(do.call(“c”, l))

}

De functie “norm_adj” genereert via de lapply en rnorm commando’s c standaardnormaal verdeelde verzamelingen van omvang x. “do.call(“c”, l) maakt van de lijst die lapply oplevert een vector waarvan het gemiddelde wordt berekend.

Laten we deze functie toepassen op een tweetal bekende maten en vervolgens op de nieuwe entropiemaat.  We nemen als eerste de interkwartiel afstand

(norm_adj(10000 , 999, IQR))

[1] 0.7413272

De functie suggereert dat we de interkwartiel afstand maal 0.7413272 moeten nemen om, indien we de spreiding van een normaalverdeeld kenmerk beschrijven,  niet af te wijken van de standaarddeviatie. We vinden deze waarde ook vermeld in de literatuur. http://www.thefreelibrary.com/Proficiency+testing%3a+an+effective+measure+of+competency+of+rubber…-a0145827946

De tweede robuuste spreidingsmaat die we normaliseren is de gemiddelde absolute afstand tot het rekenkundig gemiddelde.

gem_abs <- function (x) mean ( abs( x – mean(x))

(norm_adj(10000 , 999, gem_abs))

[1] 1.252741

De nieuwe entropiemaat gaat,  net zoals de  vorige , uit van absolute afstanden. We benutten voor deze functie de in het vorige blog beschreven difs -functie:

difs <- function(x) {

x_l <- length(x)

rij1 <- x[-x_l]

rij2 <- x[-1]

sum(abs(rij2 – rij1))

}

De volledige functie is dan:

entr_t <- function(x) {

x1 <- difs(x) – (max(x) – min(x))

x2 <- length(x) – 1

x3 <- x1 / x2

}

(norm_adj(10000 , 999, entr_t))

[1] 0.886944

Tenslotte genereren we een dataset met een gemiddelde van 50 en een standaarddeviatie van 10:  Dit worden ook wel T-scores genoemd (www.lib.uchicago.edu/e/collections/maps/tscore.html)

Test <-  rnorm(1000, 50, 10)

sd(Test)

{1] 9.86

spr_t(Test)

[1] 9.92

De nieuwe entropiemaat kan bijvoorbeeld gebruikt worden om robuuste Z- scores te berekenen met bij voorbeeld de mediaan als centrale tendentiemaat.

 

 

gem_abs <- function (x) mean ( abs( x – mean(x))

(norm_adj(10000 , 999, gem_abs))

[1] 1.252741

De nieuwe entropiemaat gaat,  net zoals de  vorige , uit van absolute afstanden. We benutten voor deze functie de in het vorige blog beschreven difs -functie:

difs <- function(x) {

x_l <- length(x)

rij1 <- x[-x_l]

rij2 <- x[-1]

sum(abs(rij2 – rij1))

}

De volledige functie is dan:

entr_t <- function(x) {

x1 <- difs(x) – (max(x) – min(x))

x2 <- length(x) – 1

x3 <- x1 / x2

}

(norm_adj(10000 , 999, entr_t))

[1] 0.886944

Tenslotte genereren we een dataset met een gemiddelde van 50 en een standaarddeviatie van 10:  Dit worden ook wel T-scores genoemd (www.lib.uchicago.edu/e/collections/maps/tscore.html)

Test <-  rnorm(1000, 50, 10)

sd(Test)

{1] 9.86

spr_t(Test)

[1] 9.92

De nieuwe entropiemaat kan bijvoorbeeld gebruikt worden om robuuste Z- scores te berekenen met bij voorbeeld de mediaan als centrale tendentiemaat.