Blog: "Thema: R" deel 1

R verrast  steeds weer.  Het blijkt een flexibele en krachtige taal te zijn die ons in staat stelt nieuwe  analysetools te ontwerpen.
Blog: "Thema: R" deel 1

Vandaag een kleine toepassing van het order commando in R.  Is het mogelijk om verbanden in data op het spoor te komen en deze overzichtelijk samen te vatten met de order functie van R als belangrijk uitgangspunt? We zullen zien en nemen om te beginnen aan dat x  en y rij – of kolom vectoren zijn met numerieke data d, waarvoor geldt dat d elementen zijn van de verzameling R.

Eerst drie simpele sorteer functies,  van laag naar hoog, vice versa en , -via het x[order(y, x)], gesorteerd door een andere vector:

(1)  l_h <-  function(x) x[ order (x)]

(2)  h_l <- function(x) x[ order (x,  decreasing = TRUE)]

(3) xoy <- function(x, y)  x[ order (y,  x)]

Vanzelfsprekend gaan we een metriek (metr) definiëren op de data verzamelingen die ontstaan door de sorteer functies l_h,  h_l en xoy.  Geschikt lijkt de absolute afstand van de eerste differentie.

(4)
metr <- function(x) {
le <- length(x)
if(le <=  1 ) stop(“1 – element vector”)
a <- abs(x[-1] – x[- le])
sum(a)
}

Met s_metr als functie voor de voortekening van metr

(5)
s_metr <- function(x) {
le <- length(x)
a <- (x[-1] – x[-le])
sign(sum(a))
}

Het is onmiddellijk evident dat zowel l_h  en h_l  de som van absolute afstanden van de eerste differentie van x minimaliseren. Kunnen we nu een functie maken die metr(x) maximaliseert? Jazeker:

(6)
d2max <- function(x) {
x1 <- as.vector(rbind(l_h(x),  h_l(x)))
x1[1:length(x)]

}

Dit stelt ons in staat via stap 7 en 8 een bivariate orde – coëfficiënt te ontwerpen:

(7)
order_c <- function(x, y) {
x <- x[order(y,  x)]
mn <- metr(h_l(x))
mx <- metr(d2max(x))
ac <- metr(x)
re <- (ac  –  mn) / (mx  –  mn)
(1  –  re)  *  s_metr(x)
}

Teneinde de order_coef functie symmetrisch te maken wordt tenslotte het rekenkundig gemiddelde berekend:

(8)
order_coef <- function(x,  y) {
x1 <- order_c(x,  y)
x2 <- order_c(y,  x)

(x1  +  x2)  /  2
}

Het complete functiegebouw bestaat uit niet meer dan 8 stappen. Veel plezier met R en tot de volgende keer.