2016-06-26 9 views
0

Der durchschnittliche Abstand jeder Variablen kann mit der unten angegebenen Formel berechnet werden. Hier repräsentiert d die durchschnittliche Entfernung der interessierenden Variable zu ihren Elternvariablen. p und q stehen für die bedingten Wahrscheinlichkeiten dieser Variablen für die verschiedenen Zustände ihrer Eltern, i steht für die verschiedenen Zustände des Kindknotens und n steht für die Anzahl der Zustände der Menge der Elternknoten. HierDurchschnittlicher Abstand jeder Variablen

average distance between variables

ist ein Beispiel mit zwei Staaten Eltern. Example matrix Was ich versuche zu berechnen ist:

Average {[(0.8286-0.6308)^2],[(0.1364-0.2347)^2],...,[(0.0017-0.0049)^2]} 
    =0.0107 

Wenn ich mehr als 3 Zustände habe ich finden müssen:

Average {[(a-b)^2+(a-c)^2+(b-c)^2)],.... 

Ich habe versucht:

 x1<-c(0.8286,0.1364,0.0300,0.0033,0.0017) 

     x2<-c(0.6308,0.2347,0.0807,0.0489,0.0049) 

     dist(rbind(x1,x2)) 

Aber es gerade gib mir die euklidische Distanz.

Antwort

1

Sorry zuerst hatte ich ein Missverständnis. Jetzt ist es das, was Sie wirklich tun können:

d <- function(mat) { 
    ind <- as.numeric(combn(nrow(mat), 2)) 
    n <- length(ind)/2 
    mean(apply(mat, 2, function(x) {y <- x[ind]; sum((y[seq(from = 1, length = n, by = 2)] - y[seq(from = 2, length = n, by = 2)])^2)}))/n 
    } 

Beispiel: Angenommen, Sie Ihre Wahrscheinlichkeitstabelle haben:

set.seed(0); mat <- matrix(runif(20), 4, 5) 

#   [,1]  [,2]  [,3]  [,4]  [,5] 
# [1,] 0.8966972 0.9082078 0.66079779 0.1765568 0.4976992 
# [2,] 0.2655087 0.2016819 0.62911404 0.6870228 0.7176185 
# [3,] 0.3721239 0.8983897 0.06178627 0.3841037 0.9919061 
# [4,] 0.5728534 0.9446753 0.20597457 0.7698414 0.3800352 

d(mat) # 0.1775407 

Für Ihre Beispieldaten von 2 Staaten:

x1<-c(0.8286,0.1364,0.0300,0.0033,0.0017) 
x2<-c(0.6308,0.2347,0.0807,0.0489,0.0049) 
d(rbind(x1,x2)) # 0.01068956 
+0

Vielen Dank für Ihre Antwort. –

+0

Du hast einen tollen Job gemacht :) –

0

Wenn ich nicht falsch verstehen die Frage ist die Antwort einfach

mean((x1-x2)^2) 

Proof:

> (x1-x2)^2 
[1] 0.03912484 0.00966289 0.00257049 0.00207936 0.00001024 

> 0.8286-0.6308 
[1] 0.1978 
> 0.1978^2 
[1] 0.03912484 
Verwandte Themen