Чи є міра "рівномірності" поширення?


14

Я подивився в Інтернеті, але не зміг знайти нічого корисного.

Я в основному шукаю спосіб оцінити, наскільки «рівномірно» розподіляється значення. Як і в "рівномірному" розподілі, як X : введіть тут опис зображення

і "нерівномірно" розподіленого Y розподілу приблизно однакового середнього та стандартного відхилення: введіть тут опис зображення

Але чи є міра рівності m, така, що m (X)> m (Y)? Якщо цього немає, що було б найкращим способом створити такий захід?

(Скріншот зображень від Академії Хана)


1
Що з перекосом?
wolfsatthedoor

Ентропія приємна для дискретних розподілів, що мають однакову підтримку. Але я не знаю, чи приємно це для постійних розповсюджень.
Stéphane Laurent

Ви впевнені, що крапковий сюжет - це те, що ви хочете? Я не думаю, що ви насправді хочете запитати про рівномірність. Це звучить як питання про "незграбність" або "ступінь кластеризації" або навіть про багатомодальність.
shadowtalker

@ StéphaneLaurent - мені також рекомендували ентропію декілька інших. Не могли б ви зайняти час і трохи детальніше розібратися?
Кетан

1
Вам потрібно більш чітко визначити, що ви маєте на увазі під «рівномірним розподілом». Мій дослівно налаштований мозок говорить, що дані, такі 1,4,7,10,13, ... ідеально рівномірно розподілені. Але ви можете мати на увазі щось зовсім інше.
Еміль Фрідман

Відповіді:


16

Стандартною, потужною, добре зрозумілою, теоретично налагодженою і часто реалізованою мірою «рівномірності» є функція Ріплі К і його близький родич, функція L. Хоча вони зазвичай використовуються для оцінки двовимірних просторових конфігурацій точок, аналіз, необхідний для адаптації їх до одного виміру (який, як правило, не наведено у посиланнях), простий.


Теорія

Функція K оцінює середню частку точок на відстані від типової точки. Для рівномірного розподілу на інтервалі справжня частка може бути обчислена і (асимптотично за розміром вибірки) дорівнює . Відповідна одновимірна версія функції L віднімає це значення від K, щоб показати відхилення від однорідності. Тому ми можемо розглянути можливість нормалізації будь-якої партії даних, щоб мати одиницю діапазону, і вивчити її функцію L на відхилення навколо нуля.d[0,1]1(1d)2


Опрацьовані приклади

Для ілюстрації я імітував незалежних зразків розміром з рівномірного розподілу та побудував їх (нормалізовані) функції L на більш короткі відстані (від до ), створивши таким чином конверт для оцінки розподілу вибірки функції L. (Нанесені точки добре у цій оболонці не можна суттєво відрізнити від рівномірності.) На цьому я побудував L функції для зразків однакового розміру з U-подібного розподілу, розподілу суміші з чотирма очевидними компонентами та стандартного нормального розподілу. Гістограми цих зразків (та їх батьківських розподілів) показані для довідки, використовуючи символи ліній для відповідності символам L функцій.9996401/3

Малюнок

Гострі розділені шипи U-подібного розподілу (пунктирна червона лінія, крайня ліва гістограма) створюють скупчення близько розташованих значень. Це відображається дуже великим нахилом функції L при . Потім функція L зменшується, з часом стає негативною для відображення прогалин на проміжних відстанях.0

Вибірка з нормального розподілу (суцільна синя лінія, найправіша гістограма) досить близька до рівномірного розподілу. Відповідно, його функція L не відходить від швидко. Однак, на відстані або близько того, він піднявся достатньо вище конверта, щоб сигналізувати про незначну тенденцію до скупчення. Постійний підйом на проміжні відстані вказує на те, що кластеризація дифузна і широко поширена (не обмежується окремими піками).00.10

Початковий великий нахил вибірки з розподілу суміші (середня гістограма) виявляє кластеризацію на невеликих відстанях (менше ). Опускаючись до негативних рівнів, він сигналізує про поділ на проміжні відстані. Порівнюючи це з U-подібною функцією розподілу L виявляється: нахили на , величини, на які ці криві піднімаються вище , і швидкості, з якими вони в кінцевому підсумку опускаються назад до надають інформацію про характер кластеризації, присутній у дані. Будь-яка з цих характеристик може бути обрана як єдиний показник «рівномірності» відповідно до конкретного застосування.0.15000

Ці приклади показують, як L-функцію можна досліджувати для оцінки відхилень даних від однорідності ("рівномірності") та як кількісна інформація про масштаб та характер відхилень може бути витягнута з неї.

(Дійсно можна побудувати всю функцію L, поширюючись на повну нормовану відстань , для оцінки масштабних відступів від однорідності. Однак, як правило, велике значення має оцінка поведінки даних на менших відстанях.)1


Програмне забезпечення

RКод для створення цієї цифри наступним чином. Він починається з визначення функцій для обчислення K і L. Це створює можливість імітувати з розподілу суміші. Потім він генерує змодельовані дані та робить графіки.

Ripley.K <- function(x, scale) {
  # Arguments:
  # x is an array of data.
  # scale (not actually used) is an option to rescale the data.
  #
  # Return value:
  # A function that calculates Ripley's K for any value between 0 and 1 (or `scale`).
  #
  x.pairs <- outer(x, x, function(a,b) abs(a-b))  # All pairwise distances
  x.pairs <- x.pairs[lower.tri(x.pairs)]          # Distances between distinct pairs
  if(missing(scale)) scale <- diff(range(x.pairs))# Rescale distances to [0,1]
  x.pairs <- x.pairs / scale
  #
  # The built-in `ecdf` function returns the proportion of values in `x.pairs` that
  # are less than or equal to its argument.
  #
  return (ecdf(x.pairs))
}
#
# The one-dimensional L function.
# It merely subtracts 1 - (1-y)^2 from `Ripley.K(x)(y)`.  
# Its argument `x` is an array of data values.
#
Ripley.L <- function(x) {function(y) Ripley.K(x)(y) - 1 + (1-y)^2}
#-------------------------------------------------------------------------------#
set.seed(17)
#
# Create mixtures of random variables.
#
rmixture <- function(n, p=1, f=list(runif), factor=10) {
  q <- ceiling(factor * abs(p) * n / sum(abs(p)))
  x <- as.vector(unlist(mapply(function(y,f) f(y), q, f)))
  sample(x, n)
}
dmixture <- function(x, p=1, f=list(dunif)) {
  z <- matrix(unlist(sapply(f, function(g) g(x))), ncol=length(f))
  z %*% (abs(p) / sum(abs(p)))
}
p <- rep(1, 4)
fg <- lapply(p, function(q) {
  v <- runif(1,0,30)
  list(function(n) rnorm(n,v), function(x) dnorm(x,v), v)
  })
f <- lapply(fg, function(u) u[[1]]) # For random sampling
g <- lapply(fg, function(u) u[[2]]) # The distribution functions
v <- sapply(fg, function(u) u[[3]]) # The parameters (for reference)
#-------------------------------------------------------------------------------#
#
# Study the L function.
#
n <- 64                # Sample size
alpha <- beta <- 0.2   # Beta distribution parameters

layout(matrix(c(rep(1,3), 3, 4, 2), 2, 3, byrow=TRUE), heights=c(0.6, 0.4))
#
# Display the L functions over an envelope for the uniform distribution.
#
plot(c(0,1/3), c(-1/8,1/6), type="n", 
     xlab="Normalized Distance", ylab="Total Proportion",
     main="Ripley L Functions")
invisible(replicate(999, {
  plot(Ripley.L(x.unif <- runif(n)), col="#00000010", add=TRUE)
}))
abline(h=0, lwd=2, col="White")
#
# Each of these lines generates a random set of `n` data according to a specified
# distribution, calls `Ripley.L`, and plots its values.
#
plot(Ripley.L(x.norm <- rnorm(n)), col="Blue", lwd=2, add=TRUE)
plot(Ripley.L(x.beta <- rbeta(n, alpha, beta)), col="Red", lwd=2, lty=2, add=TRUE)
plot(Ripley.L(x.mixture <- rmixture(n, p, f)), col="Green", lwd=2, lty=3, add=TRUE)
#
# Display the histograms.
#
n.breaks <- 24
h <- hist(x.norm, main="Normal Sample", breaks=n.breaks, xlab="Value")
curve(dnorm(x)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, col="Blue")
h <- hist(x.beta, main=paste0("Beta(", alpha, ",", beta, ") Sample"), 
          breaks=n.breaks, xlab="Value")
curve(dbeta(x, alpha, beta)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=2, col="Red")
h <- hist(x.mixture, main="Mixture Sample", breaks=n.breaks, xlab="Value")
curve(dmixture(x, p, g)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=3, col="Green")

1
Я працюю здебільшого в Numpy, а часом і в SciPy. Чи маєте ви ідею, чи цей захід доступний у будь-якій бібліотеці статистики python? Якщо шукати його, не повертається нічого релевантного.
Кетан

Функція L, ймовірно, недоступна, оскільки вона зазвичай кодується для двох або більше вимірів. Алгоритм простий, як видно з реалізації тут: обчисліть емпіричну функцію кумулятивного розподілу відстаней між усіма різними парами даних, а потім відрегулюйте, як показано на рисунку Ripley.L.
whuber

Чи залежить дисперсія міри агностична чи дисперсія?
Кетан

1
Описана тут основна процедура нормалізує дані, щоб діапазон відповідав інтервалу . Як такий він є "дисперсійним агностиком". Однак це робить його чутливим до людей, що не впадають у життя. (Ця проблема може бути серйозною проблемою у більш високих вимірах.) Можна подолати це обмеження, нормалізуючи, скажімо, квантильний діапазон (наприклад, IQR) та здійснивши відповідне коригування в корекції 1 - ( 1 - d ) 2 для функція L. Це зробило б отриману L-функцію непараметричною та надійною , що, на мою думку, вирішує проблему, що стоїть за вашим коментарем. [0,1]1(1d)2
шурхіт

Ви сказали: "Це питання може бути серйозною проблемою у більш високих вимірах". Він був пристосований для одноманітних масивів, правда? Я не зовсім впевнений, чи добре все зрозумів. Не могли б ви написати Ripley.L будь-якою іншою мовою чи псевдокодом? Або ви можете просто прокоментувати існуючий код трохи або принаймні відформатувати Ripley.L до декількох рядків, щоб підвищити його читабельність. Відсутність належної документації на statsmodels.sourceforge.net/stable/generated/… , мені все одно не допомагає.
Кетан

5

Я припускаю, що ви хочете виміряти, наскільки близький розподіл до уніформи.

Ви можете подивитися відстань між функцією кумулятивного розподілу рівномірного розподілу та емпіричною функцією кумулятивного розподілу вибірки.

Припустимо, що змінна визначена на множині . Тоді рівномірний розподіл має cdf F u ( x ), заданий{1,2,3,4,5}Fu(x)

Fu(x)=i=1[x]1/5.

Тепер припустимо, що ваш зразок дорівнює 1 , 3 , 5 . Тоді емпіричний розподіл X дорівнюєX1,3,5X

FX(1)=1/3,FX(2)=1/3,FX(3)=2/3,FX(4)=2/3,FX(5)=1

Y1,1,5Y

FY(1)=2/3,FY(2)=2/3,FY(3)=2/3,FY(4)=2/3,FY(5)=1

Тепер, як міру відстані між розподілами, візьмемо суму відстаней у кожній точці, тобто

d(F,G)=i=15|F(x)G(x)|.

d(Fu,FX)<d(Fu,FY)

У більш складних випадках потрібно переглянути норму, використану вище, але основна ідея залишається тією ж. Якщо вам потрібна процедура тестування, може бути корисним використання норм, для яких розробляються тести (ті, на які вказував @TomMinka).


Деякі інші популярні міри відстані до розподілу - тест Колмогорова – Смірнова та тест Андерсона – Дарлінга .
Том Мінька

Привіт. Дякую за відповідь. Будь ласка, перегляньте оновлене питання для розбіжності, і повідомте мені, чи стосується Вашої відповіді. Якщо це станеться. Мені доведеться це перевірити.
Кетан

Так, моя відповідь стосується цього, якщо "навіть" означає "рівномірний".
Łukasz Kidziński

Добре. Не могли б ви трохи розібратися у відповіді.
Кетан

@TomMinka дякую, безумовно, норми ці норми ще кращі, оскільки є розроблена процедура тестування.
Łukasz Kidziński

1

Якщо я правильно розумію ваше запитання, "найбільш рівномірний" розподіл для вас був би таким, коли випадкова змінна приймає кожне спостережуване значення один раз - у певному сенсі. Якщо є "скупчення" спостережень з однаковим значенням, це було б нерівномірно. Якщо припустити, що ми говоримо про дискретні спостереження, можливо, ви могли б переглянути як середню різницю між балами маси ймовірності, максимальною різницею, чи, можливо, скільки спостережень відрізняється від "середнього" за певний поріг.

Якби це було по-справжньому рівномірним у спостереженнях, всі точки ПМ повинні мати однакове значення, а різниця між max і min дорівнює 0. Чим ближче середня різниця до 0, тим більше "рівна" основна частина спостережень, тим нижче максимальна різниця і менша кількість "піків" також показує, наскільки "рівними" є емпіричні спостереження.

Оновлення Звичайно, ви можете використовувати тест-ква-квадрат на рівномірність або порівняти емпіричну функцію розподілу з рівномірною, але в цих випадках ви будете покарані будь-якими великими «прогалинами» у спостереженнях, хоча розподіли спостережень все ще "рівний".


Для даного набору можливих значень я хочу в основному моделювати, наскільки "рідкісним" або "властивим" воно буде мати певне значення з цього набору значень. За відсутності будь-яких інших варіантів, я намагаюся оцінити, наскільки рівномірно або рівномірно розподілені значення. Чим більше рівномірний розподіл, тим менше шансів отримати якесь своєрідне значення з набору. Тоді як, наприклад, якщо всі дані лежать в крайнощах розповсюдження, будь-яке значення може бути чимось гідним вважати "своєрідним". Я сподіваюся, що ви отримаєте?
Кетан

1

Захід, який ви шукаєте, формально називається невідповідністю .

Одновимірна версія така:

I=[a,b)x1,,xNI

JIA(J,N)J

A(J,N)=|{x1,,xN}J|,
V(J)J

x1,,xN

>DN=supJ|A(J,N)V(J)N|,
J=j=1[0,tj)0tj1.

x1,,xNI

Послідовності з низькою невідповідністю часто називають квазі випадковими послідовностями .

Основний огляд послідовностей з низькою невідповідністю можна знайти тут , а в моєму блозі " Нерозумна ефективність квазі випадкових послідовностей " порівнюються різні методи, застосовані до чисельної інтеграції, відображення вказівки на поверхню сфери та квазіперіодичне облицювання плитки.


0

R2=1R2


Я не знаю, чи зрозумів я досить чітко, що ви мали на увазі, але мені просто потрібно зрозуміти, як "рівномірно" щось розподіляється в розподілі. Варіантність не є такою корисною, враховуючи, що можна отримати однакову дисперсію і означає для двох дуже різного розподілу розподілу.
Кетан

@Ketan, ви істотно змінили своє запитання. Так чи інакше, мені не зрозуміло, що це може бути. У будь-якому відношенні, зрозуміло, що моя відповідь не стосується того, що вас цікавить, виходячи з останньої версії вашого питання.
AdamO

Для даного набору можливих значень я хочу в основному моделювати, наскільки "рідкісним" або "властивим" воно буде мати певне значення з цього набору значень. За відсутності будь-яких інших варіантів, я намагаюся оцінити, наскільки рівномірно або рівномірно розподілені значення. Чим більше рівномірний розподіл, тим менше шансів отримати якесь своєрідне значення з набору. Тоді як, наприклад, якщо всі дані лежать в крайнощах розподілу, будь-яке значення може бути чимось вартим, щоб вважати його "своєрідним". Я сподіваюся, що ви отримаєте це?
Кетан

Ні, вибачте, все ще не слідкуйте. Щоб переконатися, чи знайомі ви з формальним визначенням "рівномірно" розподілених даних? Наприклад, "нормальний" розподіл не є рівномірним. Обидва симетричні. Ви, здається, натякаєте на те, чи може симетрія представляти інтерес, але тоді вам здається, що ймовірність вибірки "рідкісних" значень представляє інтерес. Наприклад, розподіл Коші є симетричним, але, як відомо, він є прикладом розподілу, який буде генерувати пережитки як модель ймовірності.
AdamO

Дозвольте сказати так: Кожен набір - це просто сукупність усіх значень певного атрибута в наборі даних. Я в основному хочу оцінити кожен атрибут, наскільки "стабільними" є його значення, для яких я до цього часу використовував просту дисперсію. Але минулої ночі я зрозумів, що точно однакові дисперсії та середні значення можливі для двох атрибутів, хоча один може бути «рівним», а інший, що має більшість значень у 2 крайнощах. Отже, зараз я хочу отримати додатковий захід для вимірювання того, чи можна знайти значення рівномірно чи більше вони перебувають у крайностях.
Кетан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.