Signifikansi statistik dari perbedaan antara jarak

12

Saya memiliki lebih dari 3000 vektor pada kisi dua dimensi, dengan distribusi diskrit yang kurang lebih seragam. Beberapa pasang vektor memenuhi syarat tertentu. Catatan: ketentuan ini hanya berlaku untuk pasangan vektor, bukan untuk masing-masing vektor. Saya memiliki daftar sekitar 1500 pasangan tersebut, sebut saja grup 1. Grup 2 berisi semua pasangan vektor lainnya. Saya ingin mengetahui apakah jarak antara vektor dalam pasangan di grup 1 secara signifikan lebih kecil jarak rata-rata antara dua vektor. Bagaimana saya bisa melakukan itu?

Uji statistik : Apakah teorema batas pusat berlaku untuk kasus saya? Yaitu, dapatkah saya mengambil alat sampel jarak dan menggunakan uji-t Student untuk membandingkan alat sampel yang memenuhi kondisi dengan alat sampel yang tidak memenuhi syarat? Kalau tidak, tes statistik apa yang cocok di sini?

Ukuran sampel dan jumlah sampel : Saya mengerti bahwa ada dua variabel di sini, untuk masing-masing dari dua kelompok saya perlu mengambil n sampel ukuran m dan mengambil rata-rata masing-masing sampel. Apakah ada cara berprinsip untuk memilih n dan m ? Haruskah mereka menjadi sebesar mungkin? Atau haruskah mereka sesedikit mungkin, selama mereka menunjukkan signifikansi statistik? Haruskah mereka sama untuk masing-masing dari dua kelompok? Atau haruskah mereka lebih besar untuk grup 2, yang berisi lebih banyak pasangan vektor?

michau
sumber
1
Biasanya orang tidak begitu beruntung karena memiliki batas-batas yang pasti untuk titik data mereka - atau batas-batasnya rumit. Ini, bersama dengan korelasi antar jarak (dibuat oleh ketimpangan segitiga), menghalangi pengembangan ekspresi analitik yang bagus untuk distribusi sampling dari jarak rata-rata. Oleh karena itu mereka biasanya memperkirakan distribusi sampling dari jarak rata-rata dengan melakukan resampling dari data.
whuber
@whuber Saya tidak yakin jika saya mengerti Anda dengan benar, apakah Anda menyarankan agar saya mengambil n sampel dari masing-masing dua kelompok, dan menggunakan uji-t untuk membandingkan cara sampel tersebut? Saya mengedit pertanyaan saya, saya harap itu lebih jelas sekarang.
michau

Jawaban:

14

Pertanyaan "signifikan" selalu berbeda, selalu mengandaikan model statistik untuk data. Jawaban ini mengusulkan salah satu model paling umum yang konsisten dengan informasi minimal yang disediakan dalam pertanyaan. Singkatnya, ini akan bekerja dalam beragam kasus, tetapi mungkin tidak selalu menjadi cara paling ampuh untuk mendeteksi perbedaan.

Tiga aspek data benar-benar penting: bentuk ruang yang ditempati oleh titik; distribusi titik-titik dalam ruang itu; dan grafik yang dibentuk oleh pasangan-pasangan titik memiliki "kondisi" - yang saya sebut kelompok "pengobatan". Yang saya maksud dengan "grafik" adalah pola titik dan interkoneksi yang tersirat oleh pasangan titik dalam kelompok perlakuan. Misalnya, sepuluh pasangan-titik ("tepian") grafik dapat melibatkan hingga 20 titik berbeda atau sedikitnya lima titik. Dalam kasus sebelumnya, tidak ada dua sisi yang memiliki titik yang sama, sedangkan pada sisi yang kedua ujungnya terdiri dari semua pasangan yang memungkinkan antara lima titik.

Untuk menentukan apakah jarak rata-rata di antara tepi dalam kelompok perlakuan adalah "signifikan," kita dapat mempertimbangkan proses acak di mana semua poin secara acak diijinkan oleh permutasi . Ini juga memungkinkan tepi: tepi diganti oleh . Hipotesis nol adalah bahwa kelompok perlakuan tepi muncul sebagai salah satu dari permutasi . Jika demikian, jarak rata-rata harus sebanding dengan jarak rata-rata yang muncul dalam permutasi tersebut. Kita dapat dengan mudah memperkirakan distribusi jarak rata-rata acak dengan mengambil sampel beberapa ribu dari semua permutasi tersebut.σ ( v i , v j ) ( v σ ( i ) , v σ ( j ) ) 3000 ! 10 21024n=3000σ(vi,vj)(vσ(i),vσ(j))3000!1021024

(Perlu dicatat bahwa pendekatan ini akan bekerja, dengan hanya modifikasi kecil, dengan jarak apa pun atau kuantitas apa pun yang terkait dengan setiap pasangan titik yang memungkinkan. Ia juga akan bekerja untuk ringkasan jarak apa pun, bukan hanya rata-rata.)


Sebagai ilustrasi, berikut adalah dua situasi yang melibatkan poin dan sisi dalam kelompok perlakuan. Di baris atas poin pertama di setiap sisi dipilih secara acak dari poin dan kemudian poin kedua dari setiap tepi dipilih secara independen dan acak dari poin berbeda dari titik pertama mereka. Seluruhnya poin terlibat dalam sisi ini.28 100 100 - 1 39 28n=1002810010013928

Di baris bawah, delapan dari poin dipilih secara acak. The tepi terdiri dari semua pasangan yang mungkin dari mereka.2810028

Gambar 1

Histogram di sebelah kanan menunjukkan distribusi sampling untuk permutasi acak konfigurasi. Jarak rata-rata aktual untuk data ditandai dengan garis merah putus-putus vertikal. Kedua cara konsisten dengan distribusi sampling: tidak terletak jauh ke kanan atau kiri.10000

Distribusi pengambilan sampel berbeda: meskipun rata-rata jarak rata-rata adalah sama, variasi dalam jarak rata-rata lebih besar dalam kasus kedua karena saling ketergantungan grafis antara tepi. Ini adalah salah satu alasan mengapa tidak ada versi sederhana dari Teorema Limit Pusat yang dapat digunakan: menghitung standar deviasi distribusi ini sulit.

Berikut ini adalah hasil yang sebanding dengan data yang dijelaskan dalam pertanyaan: poin kira-kira terdistribusi secara seragam dalam satu kotak dan pasangan mereka berada dalam kelompok perlakuan. Perhitungan hanya membutuhkan beberapa detik, menunjukkan kepraktisannya.1500n=30001500

Gambar 2

Pasangan di baris atas lagi dipilih secara acak. Di baris bawah, semua tepi pada kelompok perlakuan hanya menggunakan poin terdekat dengan sudut kiri bawah. Jarak rata-rata mereka jauh lebih kecil daripada distribusi sampling sehingga ini dapat dianggap signifikan secara statistik.56

Secara umum, proporsi jarak rata-rata dari kedua simulasi dan kelompok perlakuan yang sama dengan atau lebih besar dari jarak rata-rata dalam kelompok perlakuan dapat diambil sebagai nilai p dari tes permutasi nonparametrik ini .


Ini adalah Rkode yang digunakan untuk membuat ilustrasi.

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")
}
whuber
sumber
Terima kasih banyak! Itu yang saya cari. Namun, bisakah Anda mengklarifikasi bagaimana nilai-p harus dihitung? Saya tidak mengerti formulasi "proporsi jarak rata-rata dari kedua simulasi dan kelompok perlakuan yang sama atau lebih besar dari jarak rata-rata dalam kelompok perlakuan". Anda sedang berbicara tentang proporsi dua jarak rata-rata dan salah satunya adalah "jarak rata-rata dari [...] kelompok perlakuan yang sama atau lebih besar dengan jarak rata-rata dalam kelompok perlakuan". Saya bingung, kedengarannya seperti tautologi. Bisakah Anda menulis rumus atau kode R untuk membuatnya lebih jelas?
michau
Bagaimanapun, ternyata kasus saya mirip dengan contoh kedua Anda, rata-rata jarak permutasi sekitar 22 dengan standar deviasi sekitar 0,3, dan rata-rata dari kelompok perlakuan adalah 12. Jadi terlihat seperti indikasi yang jelas bahwa perbedaannya signifikan secara statistik. Satu-satunya hal yang saya perjuangkan adalah estimasi nilai-p. Bahkan, bahkan dengan sampel permutasi yang cukup besar (10.000), semua cara tanpa kecuali berada dalam interval yang cukup sempit, katakanlah [21, 23]. Apakah ini sesuatu yang bisa saya gunakan untuk memperkirakan nilai-p?
michau
1
OK, saya sudah membaca sedikit tentang tes permutasi Monte Carlo sekarang. Menurut pemahaman saya: jika rata-rata semua permutasi 10000 yang saya coba lebih tinggi dari rata-rata kelompok perlakuan, saya dapat menyimpulkan bahwa p <0,0001. Apakah sesederhana itu?
michau
1
Ya, sesederhana itu! Saya menambahkan kode pada akhirnya untuk menghitung dan menampilkan nilai-dua-ekor (yang, bisa dibilang, adalah yang sesuai untuk situasi Anda). Untuk nilai-satu-ekor, gunakan salah satu mean(c(sim, stat) <= stat)atau mean(c(sim, stat) >= stat)sesuai.
whuber
Bagus! Situasi dengan tes satu sisi sangat jelas sekarang, tapi saya masih tidak mengerti tes dua sisi, terutama perkalian dengan 2. Jika 10.000 permutasi memberi saya berarti dalam kisaran [21, 23], tidak itu berarti bahwa 12 dan 32 berada di luar interval kepercayaan 99,99%, yang sesuai dengan p <0,0001? Tidakkah seharusnya saya hanya menghitung jarak rata-rata yang sejauh statdari tengah distribusi, di kedua arah? Sesuatu seperti p.value <- mean(abs(c(sim, stat)-mean(sim)) >= abs(stat-mean(sim))).
michau