2016-03-29 16 views
1

Angenommen, ich habe zwei Vektoren:Alle paarweise Unterschiede zwischen zwei Vektoren

X1 <- c(44350, 38920, 37530, 42280, 37320, 36910, 35720, 31220, 33400, 40710, 43830, 37390, 32340, 30770, 35800, 40250, 31490, 40460, 33730, 35850, 35320, 37500, 35380, 40910, 29040, 33950) 

X2 <- c(30390, 34170, 28910, 30660, 32510, 30540, 31990, 32380, 32110, 31260, 34670, 28240, 31840, 33350, 32150, 35640, 30730, 30280, 29420, 30990, 32880, 33280, 36960, 36990) 

Ich bin an alle paarweise Fälle, in Zählen, wenn ein Mitglied von X1 < Mitglied von X2.

Wie würde ich das in R für zwei Vektoren tun?

Nun nehme ich an, ich möchte beide Vektoren kombinieren, randomize, in zwei Vektoren der Länge (X1) und Länge (X2) aufgeteilt dann wie oben gezählt - Erstellen einer randomisierten Verteilung gegen die ursprüngliche Anzahl zu vergleichen.

Wie würde dies geschehen?

+1

'all_pairs = expand.grid (X1 = X1, X2 = X2)' sollte Sie beginnen. – Gregor

+2

Wegen der Vektorisierung wird 'X1

+0

Was deine zweite Frage angeht, was hast du probiert und wo steckst du fest? Weißt du nicht wie man Vektoren kombiniert? Probieren Sie die 'c()' -Funktion. Kannst du Vektor randomisieren? Suchen Sie nach SO für "r zufällige Reihenfolge". Weißt du nicht, wie man eine Untermenge einsetzt? Lesen Sie eine Einführung in R ... – Gregor

Antwort

0

Graf von Fällen, in denen ein in X1 und b in X2 mit einem < b

(s <- sum(outer(X1,X2,`<`))) 
# [1] 106 

die beiden

X <- c(X1,X2) 

Shuffle, resplit Kombinieren und Retest oft

set.seed(1) 

r <- replicate(1000000, { 
    X <- sample(X) 
    X1 <- head(X,length(X1)) 
    X2 <- tail(X,length(X2)) 
    sum(outer(X1,X2,`<`)) }) 

(p <- 1 - sum(s <= r)/length(r)) 
# [1] 1e-05 



Hinweis: Es klingt wie Sie für so etwas wie den Mann-Whitney-Test suchen können, die unter wilcox.test ist.

> wilcox.test(X2,X1) 

     Wilcoxon rank sum test 

data: X2 and X1 
W = 106, p-value = 2.858e-05 
alternative hypothesis: true location shift is not equal to 0 

Vergleichen W = 106-s = 106 oben.

+0

Nicht der Wilcoxon-Test, da die Vektoren keine gepaarten Beobachtungen sind. Man-Whitney könnte aber sein, was ich will. – Bryan

+0

Ja, lesen Sie die Hilfedatei für 'wilcox.test'.Der Standardwert ist 'gepaart = FALSCH ', was ein Mann-Whitney für zwei Vektoreingaben sein wird. –

Verwandte Themen