Mesafeler arasındaki farkın istatistiksel önemi


12

İki boyutlu bir ızgarada 3000'den fazla vektörüm var, yaklaşık olarak eşit bir ayrık dağılım. Bazı vektör çiftleri belirli bir koşulu yerine getirir. Not: koşul, tek tek vektörler için değil , yalnızca vektör çiftleri için geçerlidir . Yaklaşık 1500 çiftin bir listesi var, buna grup 1 diyelim. Grup 2 diğer tüm vektör çiftlerini içerir. Grup 1'deki bir çiftte vektörler arasındaki mesafenin, iki vektör arasındaki ortalama mesafeden önemli ölçüde daha küçük olup olmadığını öğrenmek istiyorum. Bunu nasıl yapabilirim?

İstatistiksel test : Merkezi limit teoremi benim durumum için geçerli mi? Yani, mesafelerin örneklerini alabilir ve koşulu yerine getiren örneklerin durumunu yerine getirmeyen örneklerle karşılaştırmak için Student'in t-testini kullanabilir miyim? Aksi takdirde, burada hangi istatistiksel test uygun olur?

Örnek büyüklüğü ve örnek sayısı : Burada iki değişken olduğunu anlıyorum, iki grubun her biri için m boyutunda n örnek almam ve örneklerin her birinin ortalamasını almam gerekiyor. N ve m'yi seçmenin ilkeli bir yolu var mı ? Mümkün olduğunca büyük olmalılar mı? Veya istatistiksel önemi gösterdikleri sürece mümkün olduğunca az olmalılar mı? İki grubun her biri için aynı olmalılar mı? Yoksa daha fazla vektör çifti içeren grup 2 için daha büyük olmalılar mı?


1
Normalde insanlar veri noktaları için kesin sınırlara sahip oldukları için çok şanslı değiller - ya da sınırlar karmaşıktır. Bu, mesafeler arasındaki korelasyonlarla (üçgen eşitsizliği tarafından yaratılmıştır), ortalama mesafelerin örnekleme dağılımı için hoş bir analitik ifade geliştirmeyi engeller. Bu nedenle, tipik olarak verilerden yeniden örnekleme yoluyla ortalama mesafelerin örnekleme dağılımlarını tahmin ederler.
whuber

@whuber Sizi doğru anladığımdan emin değilim , iki grubun her birinden n örnek almamı ve bu örneklerin ortalamalarını karşılaştırmak için t testini kullanmanızı önerir misiniz ? Sorumu düzenledim, umarım şimdi daha açıktır.
michau

Yanıtlar:


14

Her zaman "önemli ölçüde" farklı olan soru, her zaman veriler için istatistiksel bir model gerektirir. Bu cevap, soruda sunulan asgari bilgilerle tutarlı en genel modellerden birini önermektedir. Kısacası, çok çeşitli durumlarda çalışacaktır, ancak her zaman bir farkı tespit etmenin en güçlü yolu olmayabilir.

Verilerin üç yönü gerçekten önemlidir: noktaların kapladığı alanın şekli; noktaların o boşluk içindeki dağılımı; ve "tedavi" grubu olarak adlandıracağım "koşula" sahip nokta çiftlerinin oluşturduğu grafik. "Grafik" ile, tedavi grubundaki nokta çiftleri tarafından ima edilen noktaların ve ara bağlantıların örüntüsünü kastediyorum. Örneğin, grafiğin on nokta çifti ("kenarlar") 20 farklı noktaya veya beş noktaya kadar içerebilir. İlk durumda iki kenar ortak bir noktayı paylaşmazken, ikinci durumda kenarlar beş nokta arasındaki tüm olası çiftlerden oluşur.

Tedavi grubundaki kenarlar arasındaki ortalama mesafenin "anlamlı" olup olmadığını belirlemek için, tüm noktalarının bir permütasyon tarafından rastgele izin verildiği rastgele bir işlemi düşünebiliriz . Bu kenarlara da izin verir: kenar , . Sıfır hipotezi, kenar tedavi grubunun bu permütasyondan biri olarak ortaya . Eğer öyleyse, ortalama mesafesi bu permütasyonlarda görünen ortalama mesafelerle karşılaştırılabilir olmalıdır. Tüm bu permütasyonlardan birkaç binini örnekleyerek bu rastgele ortalama mesafelerin dağılımını oldukça kolay bir şekilde tahmin edebiliriz.σ ( v i , v j ) ( v σ ( i ) , v σ ( j ) ) 3000 ! 10 21024n=3000σ(vi,vj)(vσ(i),vσ(j))3000!1021024

(Bu yaklaşımın, sadece küçük modifikasyonlarla, mümkün olan her nokta çifti ile ilişkili herhangi bir mesafe veya gerçekten herhangi bir miktarda çalışacağı dikkate değerdir . Ayrıca, sadece ortalama değil, mesafelerin herhangi bir özeti için de işe yarayacaktır.)


Açıklamak gerekirse, burada bir tedavi grubunda puan ve kenarı içeren iki durum vardır . Üst sırada, her bir kenardaki ilk noktalar noktadan rastgele seçildi ve daha sonra her bir kenarın ikinci noktaları bağımsız olarak ve ilk noktalarından farklı noktadan rastgele seçildi . Bu kenarda nokta hep birlikte yer alıyor .28 100 100 - 1 39 28n=1002810010013928

Alt sırada, noktanın sekizi rastgele seçildi. kenarları bunların tüm olası çiftinden meydana gelmektedir.2810028

Şekil 1

Sağdaki histogramlar , konfigürasyonların rasgele permütasyonu için örnekleme dağılımlarını göstermektedir . Veriler için gerçek ortalama mesafeler dikey kesikli kırmızı çizgilerle işaretlenmiştir. Her iki araç da örnekleme dağılımlarıyla tutarlıdır: ikisi de sağa veya sola uzak değildir.10000

Örnekleme dağılımları farklıdır: ortalama mesafeler ortalama olmasına rağmen, ortalama mesafedeki değişim ikinci durumda kenarlar arasındaki grafiksel bağımlılıklar nedeniyle daha büyüktür . Merkezi Limit Teoreminin basit bir versiyonunun kullanılmamasının bir nedeni budur: bu dağılımın standart sapmasının hesaplanması zordur.

İşte soruda açıklanan verilerle karşılaştırılabilir sonuçlar: nokta yaklaşık olarak bir kare içinde eşit olarak dağıtılır ve çiftlerinin tedavi grubundadır. Hesaplamalar sadece birkaç saniye sürdü ve uygulanabilirliklerini gösterdi.1500n=30001500

şekil 2

Üst sıradaki çiftler tekrar rastgele seçildi. Alt sırada, tedavi grubundaki tüm kenarlar sadece sol alt köşeye en yakın noktayı kullanır . Ortalama mesafeleri, örnekleme dağılımından çok daha küçüktür ve bu istatistiksel olarak anlamlı kabul edilebilir.56

Genel olarak, hem simülasyon hem de tedavi grubundan, tedavi grubundaki ortalama mesafeye eşit ya da daha büyük ortalama mesafelerin oranı, bu parametrik olmayan permütasyon testinin p değeri olarak alınabilir .


Rİllüstrasyonları oluşturmak için kullanılan kod budur .

n.vectors <- 3000
n.condition <- 1500
d <- 2              # Dimension of the space
n.sim <- 1e4        # Number of iterations
set.seed(17)
par(mfrow=c(2, 2))
#
# Construct a dataset like the actual one.
#
# `m` indexes the pairs of vectors with a "condition."
# `x` contains the coordinates of all vectors.
x <- matrix(runif(d*n.vectors), nrow=d)
x <- x[, order(x[1, ]+x[2, ])]
#
# Create two kinds of conditions and analyze each.
#
for (independent in c(TRUE, FALSE)) {
  if (independent) {
    i <- sample.int(n.vectors, n.condition)
    j <- sample.int(n.vectors-1, n.condition)
    j <- (i + j - 1) %% n.condition + 1
    m <- cbind(i,j)
  } else {
    u <- floor(sqrt(2*n.condition))
    v <- ceiling(2*n.condition/u)
    m <- as.matrix(expand.grid(1:u, 1:v))
    m <- m[m[,1] < m[,2], ]
  }
  #
  # Plot the configuration.
  #
  plot(t(x), pch=19, cex=0.5, col="Gray", asp=1, bty="n",
       main="The Data", xlab="X", ylab="Y",
       sub=paste(length(unique(as.vector(m))), "points"))
  invisible(apply(m, 1, function(i) lines(t(x[, i]), col="#80000040")))
  points(t(x[, unique(as.vector(m))]), pch=16, col="Red", cex=0.6)
  #
  # Precompute all distances between all points.
  #
  distances <- sapply(1:n.vectors, function(i) sqrt(colSums((x-x[,i])^2)))
  #
  # Compute the mean distance in any set of pairs.
  #
  mean.distance <- function(m, distances)
    mean(distances[m])
  #
  # Sample from the points using the same *pattern* in the "condition."
  # `m` is a two-column array pairing indexes between 1 and `n` inclusive.
  sample.graph <- function(m, n) {
    n.permuted <- sample.int(n, n)
    cbind(n.permuted[m[,1]], n.permuted[m[,2]])
  }
  #
  # Simulate the sampling distribution of mean distances for randomly chosen
  # subsets of a specified size.
  #
  system.time(
    sim <- replicate(n.sim, mean.distance(sample.graph(m, n.vectors), distances))
  stat <- mean.distance(m, distances)
  p.value <- 2 * min(mean(c(sim, stat) <= stat), mean(c(sim, stat) >= stat))

  hist(sim, freq=FALSE, 
       sub=paste("p-value:", signif(p.value, ceiling(log10(length(sim))/2)+1)),
       main="Histogram of mean distances", xlab="Distance")
  abline(v = stat, lwd=2, lty=3, col="Red")
}

Çok teşekkürler! Aradığım şey buydu. Fakat p-değerinin nasıl hesaplanması gerektiğini açıklar mısınız? "Simülasyon ve tedavi grubundan ortalama tedavi mesafesinin, tedavi grubundaki ortalama mesafeye eşit veya daha büyük olan oranı" formülasyonunu anlamıyorum. İki ortalama mesafenin oranından bahsediyorsunuz ve bunlardan biri "tedavi grubundaki ortalama mesafeye eşit veya daha büyük olan [...] tedavi grubundan ortalama mesafeler" dir. Kafam karıştı, bir totoloji gibi geliyor. Daha net hale getirmek için bir formül veya R kodu yazabilir misiniz?
michau

Her durumda, benim durumumun ikinci örneğinize benzediği ortaya çıktı, ortalama permütasyon mesafeleri 22 civarında, standart sapma 0.3 civarında ve tedavi grubunun ortalaması 12'dir. fark istatistiksel olarak anlamlıdır. Şu an mücadele ettiğim tek şey p-değerinin tahminidir. Aslında, oldukça büyük bir permütasyon örneğiyle (10000) bile, istisnasız tüm araçlar oldukça dar bir aralıktadır, diyelim [21, 23]. Bu, p değerini tahmin etmek için kullanabileceğim bir şey mi?
michau

1
Tamam, şimdi Monte Carlo permütasyon testlerini biraz okudum. Anladığım kadarıyla: Denediğim 10000 permütasyonun tümü tedavi grubu ortalamasından daha yüksekse, p <0.0001 olduğu sonucuna varabilirim. Bu kadar basit mi?
michau

1
Evet, bu kadar basit! İki kuyruklu bir p değerini hesaplamak ve görüntülemek için sonuna kod ekledim (ki durumunuz için tartışmasız uygun olanı). Bir kuyruklu p-değeri, kullanıcı için, her iki mean(c(sim, stat) <= stat)ya da mean(c(sim, stat) >= stat)uygun olarak.
whuber

Harika! Tek kuyruklu testteki durum şu anda tamamen açık, ama yine de iki kuyruklu testi, özellikle 2 ile çarpmayı anlamıyorum. 10000 permütasyon bana aralıkta anlam veriyorsa, [21, 23] bu hem 12 hem de 32'nin% 99,99 güven aralığının dışında olduğu anlamına gelir, bu da p <0.0001? Her statiki yönde de, dağılımın ortasına kadar olan ortalama mesafeleri saymamalıyım? Gibi bir şey p.value <- mean(abs(c(sim, stat)-mean(sim)) >= abs(stat-mean(sim))).
michau
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.