확산의 '균일 성'이 있습니까?


14

웹에서 검색했지만 도움이되는 항목을 찾을 수 없습니다.

나는 기본적으로 가치가 얼마나 '균등하게'분배되는지 측정하는 방법을 찾고 있습니다. AN, 마찬가지로 '균등' 과 같은 분산 분포 X : 여기에 이미지 설명을 입력하십시오

"불균일" 분산 분포 Y 거의 동일한 평균 및 표준 편차 : 여기에 이미지 설명을 입력하십시오

그러나 m (X)> m (Y)와 같은 균일도 m이 있습니까? 그렇지 않은 경우 이와 같은 측정 값을 만드는 가장 좋은 방법은 무엇입니까?

(Khan Academy의 이미지 스크린 샷)


1
비대칭은 어떻습니까?
wolfsatthedoor

엔트로피는 동일한 지원을 갖는 이산 분포에 적합합니다. 그러나 연속 배포에 좋은지 모르겠습니다.
Stéphane Laurent

도트 플롯이 원하는 것입니까? 나는 당신이 정말로 균일성에 대해 묻는 것을 의미한다고 생각하지 않습니다. 이것은 "덩어리"또는 "클러스터링 정도"또는 다중 양식에 대한 질문처럼 들립니다.
shadowtalker

@ StéphaneLaurent-나는 다른 사람들에게도 엔트로피를 추천 받았다. 시간을내어 조금 더 자세히 설명해 주시겠습니까?
Ketan

1
"균등 분포"라는 의미를보다 명확하게 정의해야합니다. 내 말 그대로 두뇌는 1,4,7,10,13, ...와 같은 데이터가 완벽하게 고르게 분포되어 있다고 말합니다. 그러나 완전히 다른 것을 의미 할 수도 있습니다.
Emil Friedman

답변:


16

표준적이고 강력하며 잘 이해되고 이론적으로 잘 정립되고 자주 구현되는 "균일 성"척도는 Ripley K 함수 와 그에 가까운 L 함수입니다. 이들은 일반적으로 2 차원 공간 포인트 구성을 평가하는 데 사용되지만, 1 차원 (보통 참조에 제공되지 않음)에 적용하는 데 필요한 분석은 간단합니다.


이론

K 함수 는 일반적인 점 의 거리 내에서 점의 평균 비율을 추정합니다 . 구간 [ 0 , 1 에 균일 한 분포d , 실제 비율을 계산하고 (점근 샘플 크기)가 동일 할 수있다 (1) - ( 1 - D ) 2 . 적절한 1 차원 버전의 L 함수는이 값을 K에서 빼서균일 성과의 편차를 나타냅니다. 따라서 데이터 배치를 정규화하고 단위 범위를 갖도록 L 함수를 0으로 둘러싼 편차를 검사하는 것을 고려할 수 있습니다.[0,1]1(1d)2


작동 예

설명하기 위해 999를 시뮬레이션했습니다.999 크기의 독립 샘플 (로부터의 균일 한 분포로부터 짧은 거리에 대한 자신의 (정규화) L 함수를 플롯 01 / 3 함으로써, L 함수의 샘플링 분포를 추정 봉투를 생성). (이 엔벌 로프 내에서 잘린 점은 균일 성과 크게 구별 할 수 없습니다.) 이것에 대해 나는 U 자형 분포, 4 개의 명백한 성분이 포함 된 혼합 분포 및 표준 정규 분포에서 같은 크기의 표본에 대한 L 함수를 플로팅했습니다. 이러한 샘플 (및 모 분포)의 히스토그램은 L 기호와 일치하는 선 기호를 사용하여 참조 용으로 표시됩니다.6401/3

그림

U 자형 분포 (빨간색 점선, 가장 왼쪽 막대 그래프) 의 날카로운 분리 된 스파이크 는 밀접한 간격의 값으로 구성된 군집을 만듭니다. 이것은 에서 L 함수의 매우 큰 기울기에 의해 반영됩니다 . 그런 다음 L 기능이 감소하여 중간 거리의 간격을 반영하여 음수가됩니다.0

정규 분포 (검은 색 선, 가장 오른쪽 막대 그래프) 의 표본은 균일하게 분포 된 것과 거의 비슷합니다. 따라서 L 기능은 빨리 벗어나지 않습니다 . 그러나, 0.10 정도의 거리 만큼, 그것은 약간의 경향을 나타 내기 위해 엔벨로프 위로 충분히 상승했다. 중간 거리에 걸친 지속적인 상승은 클러스터링이 확산되고 널리 퍼져 있음을 나타냅니다 (일부 고립 된 피크에 국한되지 않음).00.10

혼합물 분포 (중간 히스토그램) 에서 샘플의 초기 큰 기울기 는 작은 거리 ( 0.15 미만)에서 군집을 나타냅니다.0.15 . 음수 레벨로 떨어지면 중간 거리에서 분리 신호를 보냅니다. 이것을 U 자형 분포의 L 함수와 비교하면 다음과 같이 밝혀집니다 : 에서의 경사 , 이러한 곡선이 0 이상으로 상승하는 양 , 그리고 결국 0 으로 내려가는 속도는 모두에 존재하는 군집의 본질에 대한 정보를 제공합니다 자료. 이러한 특성은 특정 응용 분야에 적합한 단일 "균일 성"측정 기준으로 선택할 수 있습니다.000

이 예는 균일 성 ( "균일 성")으로부터 데이터의 이탈을 평가하기 위해 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에서 일합니다. 이 통계를 통계 파이썬 라이브러리에서 사용할 수 있는지 알고 있습니까? 검색해도 관련성이 없습니다.
Ketan

L 함수는 일반적으로 2 차원 이상으로 코딩되므로 L 함수를 사용할 수 없습니다. 여기서 구현에서 볼 수 있듯이 알고리즘은 간단합니다. 모든 개별 데이터 쌍 사이의 거리에 대한 경험적 누적 분포 함수 를 계산 한 다음에 표시된대로 조정하십시오 Ripley.L.
whuber

측정 분산이 불가지론 또는 분산에 의존합니까?
Ketan

1
[0,1]1(1d)2 이며 견고 입니다.
우버

"이 문제는 더 큰 차원에서 심각한 문제가 될 수 있습니다"라고 말했습니다. 일 변량 배열에 맞게 조정되었습니다. 모든 것을 잘 이해했는지는 확실하지 않습니다. 다른 언어 나 의사 코드로 Ripley.L을 작성해 주시겠습니까? 또는 기존 코드에 약간의 주석을 달거나 최소한 Ripley.L을 여러 줄로 주석 처리하여 가독성을 향상시킬 수 있습니다. statsmodels.sourceforge.net/stable/generated/…에 적절한 문서가 부족하여 도움이되지 않습니다.
Ketan

5

유니폼에 대한 분포가 얼마나 가까운 지 측정하고 싶다고 가정합니다.

균일 분포의 누적 분포 함수와 표본의 경험적 누적 분포 함수 사이의 거리를 확인할 수 있습니다.

{1,2,3,4,5}Fu(x)

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

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가 지적한 규범)을 사용하는 것이 좋습니다.


분포까지의 거리에 대한 다른 인기있는 측정법으로는 Kolmogorov–Smirnov 검정Anderson-Darling 검정이 있습니다.
Tom Minka

안녕하세요. 답변 해주셔서 감사합니다. 명확성을 위해 업데이트 된 질문을 다시 방문하여 답변이 적용되는지 알려주십시오. 그렇다면. 확인해야합니다.
Ketan

예, '짝수'가 '균일 한'을 의미하는 한 내 대답이 적용됩니다.
Łukasz Kidziński

괜찮아. 답변에 대해 친절하게 설명해 주시겠습니까?
Ketan

@TomMinka 덕분에 테스트 절차가 개발되었으므로 분명히 이러한 규범이 더 좋습니다.
Łukasz Kidziński

1

귀하의 질문을 올바르게 이해한다면, "가장 고른"분포는 임의의 변수가 모든 관측 값을 한 번, 균일 한 의미로 취하는 것입니다. 동일한 값에 관측치의 "클러스터"가 있으면 고르지 않습니다. 개별 관측치에 대해 이야기하고 있다고 가정하면 확률 질량 포인트 간의 평균 차이, 최대 차이 또는 특정 임계 값에 대한 "평균"과 차이가있는 관측치 수를 모두 볼 수 있습니다.

관측치에서 실제로 균일 한 경우 모든 PM 포인트는 동일한 값을 가져야하며 최대와 최소의 차이는 0입니다. 평균 차이가 0에 가까울수록 관측치의 대부분이 "짝수"일수록 낮습니다. 최대 차이와 적은 "피크"도 경험적 관찰이 얼마나 "짝수"인지 보여줍니다.

업데이트 물론, 당신은 균일 카이 제곱 테스트를 사용하거나 유니폼 경험적 분포 함수를 비교하지만, 이러한 경우에, 당신은 관찰의 분포는 여전히에도 불구하고, 관찰에있는 큰 "차이"에 의해 처벌됩니다 수 있습니다 "조차".


주어진 가능한 값 집합에 대해 기본적으로 해당 값 집합에서 특정 값을 갖는 '희귀'또는 '특별한'모델을 만들고 싶습니다. 다른 옵션이 없으면 값이 얼마나 고르게 또는 균일하게 분포되어 있는지 측정하려고합니다. 분포가 균일할수록 세트에서 특이한 값을 가질 가능성이 줄어 듭니다. 예를 들어 모든 데이터가 분포의 극단에있는 경우 모든 값은 '특별한'것으로 간주 될만한 가치가 있습니다. 당신이 그것을 얻기를 바랍니다?
Ketan

1

찾고자하는 수치를 공식적으로 불일치 라고합니다 합니다.

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

불일치 시퀀스가 ​​낮은 경우가 종종 준 시퀀스 시퀀스 라고 합니다 .

불일치 시퀀스의 기본 개요는 여기 에서 확인할 수 있으며 내 블로그 게시물 인 " Quasirandom 시퀀스의 비효율적 인 효과 "는 Numerical Integration에 적용 할 때 다양한 방법을 비교하고 구 표면에 점을 매핑하고 준 주기적 타일링을 비교합니다.


0

R2=1R2


나는 당신이 의미하는 바를 충분히 이해했는지 알지 못하지만 배포판에서 어떤 것이 '균등하게'배포되는지 이해해야합니다. 분산은 동일한 분산을 얻을 수 있고 매우 다르게 분포 된 두 분포에 대해 평균이 주어지면 유용하지 않습니다.
Ketan

@ Ketan, 당신은 질문을 크게 바꿨습니다. 어느 쪽이든, 나는 그것이 무엇인지 명확하지 않습니다. 어쨌든 내 대답이 가장 최신 버전의 질문에 근거하여 관심있는 것을 다루지 않는 것이 분명합니다.
AdamO

주어진 가능한 값 집합에 대해 기본적으로 해당 값 집합에서 특정 값을 갖는 '희귀'또는 '특별한'모델을 만들고 싶습니다. 다른 옵션이 없으면 값이 얼마나 고르게 또는 균일하게 분포되어 있는지 측정하려고합니다. 분포가 균일할수록 세트에서 특이한 값을 가질 가능성이 줄어 듭니다. 예를 들어 모든 데이터가 분포의 극단에있는 경우 모든 값은 '특별한'것으로 간주 될만한 가치가 있습니다. 당신이 그것을 얻기를 바랍니다?
Ketan

아니요, 아직 팔로우하지 않습니다. 확인하기 위해 "균일하게"분산 된 데이터의 공식적인 정의에 익숙하십니까? 예를 들어 "정규"분포는 일정하지 않습니다. 둘 다 대칭입니다. 대칭이 관심이 될지 여부를 암시하는 것처럼 보이지만 "희귀 한"값을 샘플링 할 확률이 관심이 있다고 말하는 것 같습니다. 예를 들어, Cauchy 분포는 대칭이지만 확률 모델로 특이 치를 생성하는 분포의 예로 알려져 있습니다.
AdamO

이를 다음과 같이 설명하겠습니다. 각 세트는 단순히 데이터 세트에있는 특정 속성의 모든 값 세트입니다. 나는 기본적으로 값이 얼마나 안정적인지에 의해 각 속성을 정량화하려고합니다. 지금까지 간단한 분산을 사용했습니다. 그러나 지난 밤, 나는 하나가 '짝수'일 수도 있고 다른 하나는 2 극단의 값을 대부분 가지고 있지만 2 개의 속성에 대해 정확히 동일한 분산과 평균이 가능하다는 것을 깨달았습니다. 따라서 이제는 값을 고르게 찾을 수 있는지 또는 극단적으로 더 많은 값을 측정 할 수있는 추가 측정 값을 원합니다.
Ketan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.