Статистическая значимость разницы между расстояниями


12

У меня есть более 3000 векторов на двумерной сетке с приблизительно равномерным дискретным распределением. Некоторые пары векторов удовлетворяют определенному условию. Примечание: условие применимо только к парам векторов, а не к отдельным векторам. У меня есть список из примерно 1500 таких пар, назовем его группой 1. Группа 2 содержит все остальные пары векторов. Я хочу выяснить, значительно ли меньше расстояние между векторами в паре в группе 1, среднее расстояние между двумя векторами. Как я могу это сделать?

Статистический тест : применима ли центральная предельная теорема к моему случаю? То есть, могу ли я взять средства выборок расстояний и использовать t-критерий Стьюдента, чтобы сравнить средства выборок, которые удовлетворяют условию, со средствами выборок, которые не удовлетворяют условию? Иначе какой статистический тест здесь уместен?

Размер выборки и количество выборок : я понимаю, что здесь есть две переменные, для каждой из двух групп мне нужно взять n выборок размером m и взять среднее значение для каждой из выборок. Есть ли принципиальный способ выбрать n и m ? Должны ли они быть как можно больше? Или они должны быть как можно меньше, если они показывают статистическую значимость? Должны ли они быть одинаковыми для каждой из двух групп? Или они должны быть больше для группы 2, которая содержит намного больше векторных пар?


1
Обычно людям не так повезло, что они имеют определенные границы для своих точек данных, иначе границы являются сложными. Это, наряду с корреляциями между расстояниями (созданными неравенством треугольника), не позволяет разработать хорошее аналитическое выражение для выборочного распределения средних расстояний. Поэтому они обычно оценивают распределения выборки средних расстояний путем повторной выборки из данных.
whuber

@whuber Я не уверен, правильно ли я вас понимаю, вы предлагаете мне взять n образцов из каждой из двух групп и использовать t-тест для сравнения средних значений этих образцов? Я отредактировал свой вопрос, надеюсь, теперь он понятнее.
Микау

Ответы:


14

Вопрос «существенно» отличается всегда, всегда предполагает статистическую модель данных. Этот ответ предлагает одну из наиболее общих моделей, которая согласуется с минимальной информацией, представленной в вопросе. Короче говоря, он будет работать в самых разных случаях, но не всегда может быть самым мощным способом обнаружения различий.

Три аспекта данных действительно имеют значение: форма пространства, занимаемого точками; распределение точек в этом пространстве; и график, образованный точечными парами, имеющими «условие» - которое я назову группой «лечение». Под «графиком» я подразумеваю схему точек и взаимосвязей, подразумеваемых парами точек в группе лечения. Например, десять пар точек («ребер») графа могут включать до 20 различных точек или всего пять точек. В первом случае нет двух ребер, имеющих общую точку, тогда как во втором случае ребра состоят из всех возможных пар между пятью точками.

Чтобы определить, является ли среднее расстояние между ребрами в группе лечения «значительным», мы можем рассмотреть случайный процесс, в котором все точек случайным образом переставляются перестановкой . Это также переставляет ребра: ребро заменяется на . Нулевая гипотеза состоит в том, что группа обработки ребер возникает как одна из этих перестановок. Если это так, его среднее расстояние должно быть сопоставимо со средним расстоянием, указанным в этих перестановках. Мы можем довольно легко оценить распределение этих случайных средних расстояний, выбрав несколько тысяч всех этих перестановок.σ ( v i , v j ) ( v σ ( i ) , v σ ( j ) ) 3000 ! 10 21024n=3000σ(vi,vj)(vσ(i),vσ(j))3000!1021024

(Следует отметить, что этот подход будет работать, только с небольшими изменениями, с любым расстоянием или даже с любой величиной, связанной с каждой возможной парой точек. Он также будет работать для любого суммирования расстояний, а не только для среднего значения.)


Чтобы проиллюстрировать это, вот две ситуации, включающие точек и ребер в группе лечения. В верхнем ряду первые точки в каждом ребре были случайным образом выбраны из точек, а затем вторые точки каждого ребра были независимо и случайно выбраны из точек, отличных от их первой точки. Всего в этих краях задействовано очков .28 100 100 - 1 39 28n=1002810010013928

В нижнем ряду восемь из баллов были выбраны случайным образом. В ребер состоят из всех возможных пар из них.2810028

фигура 1

Гистограммы справа показывают распределения выборки для случайных перестановок конфигураций. Фактические средние расстояния для данных отмечены вертикальными пунктирными красными линиями. Оба средства согласуются с распределением выборки: ни один не лежит далеко направо или налево.10000

Распределения выборки различаются: хотя в среднем средние расстояния одинаковы, изменение среднего расстояния больше во втором случае из-за графической взаимозависимости между краями. Это одна из причин, по которой нельзя использовать простую версию Центральной предельной теоремы: вычислить стандартное отклонение этого распределения сложно.

Вот результаты, сопоставимые с данными, описанными в вопросе: точек приблизительно равномерно распределены в квадрате, и их пар находятся в группе лечения. Расчеты заняли всего несколько секунд, демонстрируя их практичность.1500n=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, чтобы сделать его более понятным?
Микау

В любом случае, оказывается, что мой случай похож на ваш второй пример, среднее расстояние перестановок составляет около 22 со стандартным отклонением около 0,3, а среднее значение для группы лечения составляет 12. Таким образом, это выглядит как четкое указание на то, что Разница статистически значима. Единственное, с чем я сейчас борюсь, это оценка p-значения. На самом деле, даже с довольно большой выборкой перестановок (10000) все без исключения средства находятся в довольно узком интервале, скажем, [21, 23]. Это то, что я могу использовать для оценки p-значения?
Микау

1
Хорошо, я прочитал немного о тестах перестановки Монте-Карло. Согласно моему пониманию: если средние значения всех 10000 перестановок, которые я пробовал, выше, чем среднее значение для группы лечения, я могу заключить, что p <0,0001. Это так просто?
Микау

1
Да, это так просто! В конце я добавил код для вычисления и отображения двустороннего p-значения (которое, возможно, является подходящим для вашей ситуации). Для одностороннего значения p используйте либо одно, mean(c(sim, stat) <= stat)либо mean(c(sim, stat) >= stat)по необходимости.
whuber

Большой! Ситуация с односторонним тестом теперь совершенно ясна, но я до сих пор не понимаю двухсторонний тест, особенно умножение на 2. Если 10000 перестановок дали мне средства в диапазоне [21, 23], не это означает, что как 12, так и 32 выходят за пределы доверительного интервала 99,99%, что соответствует р <0,0001? Разве я не должен просто посчитать средние расстояния, которые находятся так далеко statот середины распределения, в любом направлении? Нечто подобное p.value <- mean(abs(c(sim, stat)-mean(sim)) >= abs(stat-mean(sim))).
Микау
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.