นัยสำคัญทางสถิติของความแตกต่างระหว่างระยะทาง


12

ฉันมีเวกเตอร์มากกว่า 3,000 ตัวบนกริดสองมิติพร้อมการกระจายแบบไม่ต่อเนื่องโดยประมาณ เวกเตอร์คู่หนึ่งตอบสนองเงื่อนไขที่แน่นอน หมายเหตุ: เงื่อนไขนี้ใช้ได้กับคู่เวกเตอร์เท่านั้นไม่ใช่กับเวกเตอร์แต่ละตัว ฉันมีรายการประมาณ 1,500 คู่ดังกล่าวลองเรียกมันว่ากลุ่ม 1 กลุ่มที่ 2 มีคู่เวกเตอร์อื่น ๆ ทั้งหมด ฉันต้องการตรวจสอบว่าระยะห่างระหว่างเวกเตอร์ในคู่ในกลุ่ม 1 นั้นมีขนาดเล็กกว่าระยะทางเฉลี่ยระหว่างสองเวกเตอร์หรือไม่ ฉันจะทำสิ่งนั้นได้อย่างไร

การทดสอบทางสถิติ : ทฤษฎีบทขีด จำกัด กลางสามารถใช้กับกรณีของฉันได้หรือไม่? นั่นคือฉันสามารถใช้ตัวอย่างระยะทางและใช้การทดสอบ t ของนักเรียนเพื่อเปรียบเทียบวิธีของตัวอย่างที่ปฏิบัติตามเงื่อนไขด้วยวิธีการตัวอย่างที่ไม่ตรงตามเงื่อนไขหรือไม่ มิฉะนั้นการทดสอบทางสถิติใดที่เหมาะสมที่นี่

ขนาดตัวอย่างและจำนวนตัวอย่าง : ฉันเข้าใจว่ามีสองตัวแปรที่นี่สำหรับแต่ละกลุ่มสองฉันต้องใช้ตัวอย่างnขนาดmและหาค่าเฉลี่ยของตัวอย่างแต่ละตัวอย่าง มีวิธีใดหลักการในการเลือกnและm ? พวกเขาควรมีขนาดใหญ่ที่สุด หรือควรให้น้อยที่สุดเท่าที่จะเป็นไปได้ตราบใดที่พวกเขาแสดงนัยสำคัญทางสถิติ? พวกเขาควรจะเหมือนกันสำหรับแต่ละกลุ่มหรือไม่ หรือควรใหญ่กว่าสำหรับกลุ่ม 2 ซึ่งมีจำนวนคู่เวกเตอร์มากกว่านี้


1
โดยปกติแล้วคนไม่ค่อยโชคดีที่มีขอบเขตที่แน่นอนสำหรับจุดข้อมูลของพวกเขา - มิฉะนั้นขอบเขตก็ซับซ้อน สิ่งนี้รวมถึงความสัมพันธ์ระหว่างระยะทาง (สร้างโดยความไม่เท่าเทียมกันของรูปสามเหลี่ยม) ทำให้ไม่มีการพัฒนานิพจน์เชิงวิเคราะห์ที่ดีสำหรับการแจกแจงตัวอย่างของระยะทางเฉลี่ย ดังนั้นพวกเขาจึงประมาณการกระจายตัวของระยะทางเฉลี่ยโดยการสุ่มใหม่จากข้อมูล
whuber

@ เมื่อไรฉันไม่แน่ใจว่าฉันเข้าใจคุณถูกต้องหรือไม่คุณแนะนำให้ฉันนำตัวอย่างnจากแต่ละกลุ่มมาสองกลุ่มแล้วใช้ t-test เพื่อเปรียบเทียบความหมายของตัวอย่างเหล่านั้นหรือไม่ ฉันแก้ไขคำถามของฉันฉันหวังว่าตอนนี้จะชัดเจนขึ้น
michau

คำตอบ:


14

คำถามที่ "แตกต่าง" อย่างมีนัยสำคัญเสมอให้สันนิษฐานรูปแบบทางสถิติสำหรับข้อมูลเสมอ คำตอบนี้เสนอหนึ่งในโมเดลทั่วไปที่สอดคล้องกับข้อมูลน้อยที่สุดที่มีในคำถาม ในระยะสั้นมันจะทำงานในหลายกรณี แต่อาจไม่ใช่วิธีที่ทรงพลังที่สุดในการตรวจจับความแตกต่าง

ข้อมูลสามด้านมีความสำคัญอย่างแท้จริง:รูปร่างของพื้นที่ที่ถูกครอบครองโดยจุดนั้น การกระจายของคะแนนภายในพื้นที่นั้น และกราฟที่เกิดจากจุดคู่ที่มี "เงื่อนไข" - ซึ่งฉันจะเรียกกลุ่ม "การรักษา" โดย "กราฟ" ฉันหมายถึงรูปแบบของจุดและการเชื่อมโยงระหว่างกันโดยนัยโดยจุดคู่ในกลุ่มการรักษา ตัวอย่างเช่นสิบจุดคู่ ("edge") ของกราฟอาจเกี่ยวข้องกับจุดที่แตกต่างกันถึง 20 จุดหรือน้อยกว่าห้าจุด ในกรณีก่อนไม่มีขอบสองจุดที่ใช้ร่วมกันในขณะที่ในกรณีหลังขอบประกอบด้วยคู่ที่เป็นไปได้ทั้งหมดระหว่างห้าจุด

n=3000σ(vi,vj)(vσ(i),vσ(j))3000!1021024พีชคณิต ถ้าเป็นเช่นนั้นระยะทางเฉลี่ยควรเทียบเคียงกับระยะทางเฉลี่ยที่ปรากฏในการเรียงสับเปลี่ยน เราอาจประมาณการกระจายตัวของระยะทางเฉลี่ยแบบสุ่มเหล่านั้นได้ง่ายพอสมควร

(เป็นที่น่าสังเกตว่าวิธีการนี้จะทำงานด้วยการปรับเปลี่ยนเพียงเล็กน้อยกับใด ๆระยะทางหรือปริมาณแน่นอนใด ๆ ที่เกี่ยวข้องใด ๆ กับคู่เป็นไปได้ทุกจุด. นอกจากนี้ยังจะทำงานให้สรุปของระยะทางใด ๆ ไม่ได้เป็นเพียงค่าเฉลี่ย.)


n=1002810010013928

10028

รูปที่ 1

10000

การกระจายตัวตัวอย่างแตกต่างกัน:แม้ว่าโดยเฉลี่ยแล้วระยะทางเฉลี่ยเท่ากัน แต่ความแปรปรวนของระยะทางเฉลี่ยนั้นยิ่งใหญ่กว่าในกรณีที่สองเนื่องจากการพึ่งพาซึ่งกันและกันแบบกราฟิกระหว่างขอบ นี่คือเหตุผลหนึ่งที่ไม่มีทฤษฎีบทขีด จำกัด กลางที่ใช้งานง่าย: การคำนวณค่าเบี่ยงเบนมาตรฐานของการแจกแจงนี้เป็นเรื่องยาก

n=30001500

รูปที่ 2

56

โดยทั่วไปสัดส่วนของระยะทางเฉลี่ยจากทั้งการจำลองและกลุ่มการรักษาที่มีค่าเท่ากับหรือมากกว่าระยะทางเฉลี่ยในกลุ่มการรักษาสามารถนำมาเป็นค่า p ของการทดสอบการเปลี่ยนรูปแบบไม่ใช้พารามิเตอร์


นี่คือRรหัสที่ใช้ในการสร้างภาพประกอบ

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")
}

ขอบคุณมาก! นั่นคือสิ่งที่ฉันกำลังมองหา แต่คุณจะช่วยให้ชัดเจนว่าควรคำนวณค่า p อย่างไร ฉันไม่เข้าใจการกำหนด "สัดส่วนของระยะทางเฉลี่ยจากทั้งการจำลองและกลุ่มการรักษาที่เท่ากับหรือมากกว่าระยะทางเฉลี่ยในกลุ่มการรักษา" คุณกำลังพูดถึงสัดส่วนของระยะทางสองค่าเฉลี่ยและหนึ่งในนั้นคือ "ระยะทางเฉลี่ยจาก [... ] กลุ่มการรักษาที่มีค่าเท่ากับหรือมากกว่าระยะทางเฉลี่ยในกลุ่มการรักษา" ฉันสับสนดูเหมือนว่าจะเน้นเรื่องความซ้ำซาก คุณสามารถเขียนสูตรหรือรหัส R เพื่อให้ชัดเจนขึ้นได้ไหม
michau

ไม่ว่าในกรณีใดปรากฎว่ากรณีของฉันคล้ายกับตัวอย่างที่สองของคุณค่าเฉลี่ยระยะทางของพีชคณิตประมาณ 22 ด้วยค่าเบี่ยงเบนมาตรฐานประมาณ 0.3 และค่าเฉลี่ยของกลุ่มการรักษาคือ 12 ดังนั้นมันจึงเป็นข้อบ่งชี้ที่ชัดเจนว่า ความแตกต่างมีนัยสำคัญทางสถิติ สิ่งเดียวที่ฉันดิ้นรนในตอนนี้คือการประมาณค่า p-value ในความเป็นจริงถึงแม้จะมีตัวอย่างการเรียงสับเปลี่ยนจำนวนมาก (10,000) วิธีการทั้งหมดโดยไม่มีข้อยกเว้นอยู่ในช่วงเวลาที่ค่อนข้างแคบสมมติว่า [21, 23] นี่คือสิ่งที่ฉันสามารถใช้เพื่อประเมินค่า p หรือไม่
michau

1
ตกลงฉันได้อ่านเล็กน้อยเกี่ยวกับการทดสอบการเปลี่ยนรูปของ Monte Carlo ตอนนี้ จากความเข้าใจของฉัน: หากค่าเฉลี่ยของการเปลี่ยนลำดับ 10,000 ทั้งหมดที่ฉันได้ลองมีค่าสูงกว่าค่าเฉลี่ยของกลุ่มการรักษาฉันสามารถสรุปได้ว่า p <0.0001 มันง่ายอย่างนั้นเหรอ?
michau

1
ใช่มันง่ายมาก! ฉันเพิ่มโค้ดในตอนท้ายเพื่อคำนวณและแสดงค่า p แบบสองด้าน (ซึ่งถือว่าเป็นรหัสที่เหมาะสมกับสถานการณ์ของคุณ) สำหรับค่า p เดียวให้ใช้อย่างใดอย่างหนึ่งmean(c(sim, stat) <= stat)หรือmean(c(sim, stat) >= stat)ตามความเหมาะสม
whuber

ที่ดี! สถานการณ์ที่มีการทดสอบแบบทางเดียวนั้นชัดเจนแล้ว แต่ฉันยังไม่เข้าใจการทดสอบแบบสองทางโดยเฉพาะการคูณด้วย 2 หากการเรียงสับเปลี่ยน 10,000 ครั้งทำให้ฉันหมายความว่าอยู่ในช่วง [21, 23] ไม่ หมายความว่าทั้ง 12 และ 32 นั้นอยู่นอกช่วงความมั่นใจ 99.99% ซึ่งสอดคล้องกับ p <0.0001? ฉันไม่ควรนับระยะทางที่ห่างไกลstatจากจุดกึ่งกลางของการกระจายไม่ว่าจะเป็นทิศทางใด? p.value <- mean(abs(c(sim, stat)-mean(sim)) >= abs(stat-mean(sim)))สิ่งที่ชอบ
michau
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.