Có một biện pháp 'đồng đều' của sự lây lan?


14

Tôi đã tìm kiếm trên web, nhưng không thể tìm thấy bất cứ điều gì hữu ích.

Về cơ bản, tôi đang tìm cách để đo lường mức độ "đồng đều" của một giá trị được phân phối. Như trong, một phân phối 'đồng đều' như X : enter image description here

và phân phối Y 'không đồng đều' có độ lệch trung bình và độ lệch chuẩn tương đương nhau: enter image description here

Nhưng có bất kỳ số đo đồng đều m, sao cho m (X)> m (Y)? Nếu không có, cách tốt nhất để tạo ra một biện pháp như thế này là gì?

(Ảnh chụp màn hình từ Khan Academy)


1
Còn xiên thì sao?
wolfsatthedoor

Entropy là tốt cho các bản phân phối rời rạc có cùng hỗ trợ. Nhưng tôi không biết liệu nó có tốt cho việc phân phối liên tục hay không.
Stéphane Laurent

Bạn có chắc chắn rằng dấu chấm là những gì bạn muốn? Tôi không nghĩ bạn thực sự muốn hỏi về tính đồng nhất. Điều này nghe có vẻ như một câu hỏi về "độ vón cục" hoặc "mức độ phân cụm" hoặc thậm chí đa phương thức.
Shadowtalker

@ StéphaneLaurent - Tôi cũng được một số người khác giới thiệu entropy. Bạn có thể vui lòng dành thời gian và giải thích một chút về nó?
Ketan

1
Bạn cần xác định rõ hơn ý của bạn bằng cách "phân bổ đều". Bộ não có đầu óc chữ nghĩa của tôi nói rằng dữ liệu 1,4,7,10,13, ... được phân phối hoàn toàn đồng đều. Nhưng bạn có thể có nghĩa là một cái gì đó hoàn toàn khác nhau.
Emil Friedman

Câu trả lời:


16

Một tiêu chuẩn, mạnh mẽ, được hiểu rõ, được thiết lập tốt về mặt lý thuyết và được thực hiện thường xuyên về "tính đồng đều" là hàm Ripley Khàm tương đối gần của nó, hàm L. Mặc dù chúng thường được sử dụng để đánh giá các cấu hình điểm không gian hai chiều, nhưng phân tích cần thiết để điều chỉnh chúng theo một chiều (thường không được đưa ra trong tài liệu tham khảo) là đơn giản.


Học thuyết

Hàm K ước tính tỷ lệ trung bình của các điểm trong khoảng cách của một điểm điển hình. Đối với phân phối đồng đều trên khoảng [ 0 , 1 ] , tỷ lệ thực có thể được tính và (không có triệu chứng trong cỡ mẫu) bằng 1 - ( 1 - d ) 2 . Phiên bản một chiều thích hợp của hàm L sẽ trừ giá trị này khỏi K để hiển thị độ lệch so với tính đồng nhất. Do đó, chúng tôi có thể xem xét bình thường hóa bất kỳ lô dữ liệu nào để có phạm vi đơn vị và kiểm tra chức năng L của nó để tìm độ lệch quanh 0.d[0,1]1(1d)2


Ví dụ làm việc

Để minh họa , tôi đã mô phỏng mẫu độc lập với kích thước 64 từ một phân bố đều và vẽ (bình thường) chức năng L của họ cho khoảng cách ngắn (từ 0 đến 1 / 3 ), qua đó tạo ra một phong bì để ước tính sự phân bố lấy mẫu của hàm L. (Điểm được thể hiện rõ trong phong bì này có thể được phân biệt rõ rệt với tính đồng nhất.) Về điều này tôi đã vẽ các hàm L cho các mẫu có cùng kích thước từ phân bố hình chữ U, phân phối hỗn hợp với bốn thành phần rõ ràng và phân phối chuẩn. Biểu đồ của các mẫu này (và của các bản phân phối chính của chúng) được hiển thị để tham khảo, sử dụng các ký hiệu dòng để khớp với các mẫu của hàm L.9996401/3

Figure

Các gai nhọn tách biệt của phân bố hình chữ U (đường màu đỏ nét đứt, biểu đồ ngoài cùng bên trái) tạo ra các cụm giá trị cách đều nhau. Điều này được phản ánh bởi độ dốc rất lớn trong hàm L ở 0 . Hàm L sau đó giảm dần, cuối cùng trở thành âm để phản ánh các khoảng trống ở khoảng cách trung gian.

Mẫu từ phân phối chuẩn (đường màu xanh lam đặc, biểu đồ ngoài cùng bên phải) khá gần với phân bố đồng đều. Theo đó, chức năng L của nó không khởi hành từ một cách nhanh chóng. Tuy nhiên, bằng khoảng cách 0,1000.10 hoặc hơn, nó đã tăng đủ trên đường bao để báo hiệu một xu hướng nhỏ cụm. Sự gia tăng liên tục trên các khoảng cách trung gian cho thấy sự phân cụm là khuếch tán và lan rộng (không giới hạn ở một số đỉnh bị cô lập).

Độ dốc lớn ban đầu cho mẫu từ phân bố hỗn hợp (biểu đồ giữa) cho thấy phân cụm ở khoảng cách nhỏ (nhỏ hơn ). Bằng cách giảm xuống mức âm, nó báo hiệu sự phân tách ở khoảng cách trung gian. So sánh điều này với hàm L của phân phối hình chữ U đang tiết lộ: độ dốc bằng 0 , số lượng các đường cong này tăng lên trên 0 và tốc độ cuối cùng chúng giảm xuống 0 đều cung cấp thông tin về bản chất của cụm hiện diện trong dữ liệu. Bất kỳ đặc điểm nào trong số này có thể được chọn làm thước đo "đồng đều" cho phù hợp với một ứng dụng cụ thể.0.15000

Các ví dụ này cho thấy cách chức năng L có thể được kiểm tra để đánh giá sự khởi hành của dữ liệu từ tính đồng nhất ("tính đồng đều") và cách thông tin định lượng về quy mô và tính chất của các lần khởi hành có thể được trích xuất từ ​​nó.

(Người ta thực sự có thể vẽ toàn bộ hàm L, mở rộng đến khoảng cách chuẩn hóa hoàn toàn là , để đánh giá các lần khởi hành quy mô lớn từ tính đồng nhất. Tuy nhiên, thông thường, việc đánh giá hành vi của dữ liệu ở khoảng cách nhỏ hơn có tầm quan trọng lớn hơn.)1


Phần mềm

Rmã để tạo ra con số này sau đây. Nó bắt đầu bằng cách xác định các hàm để tính K và L. Nó tạo ra khả năng mô phỏng từ phân phối hỗn hợp. Sau đó, nó tạo ra dữ liệu mô phỏng và thực hiện các ô.

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
Tôi làm việc chủ yếu ở Numpy và đôi khi ở SciPy. Bạn có biết nếu biện pháp này có sẵn trong bất kỳ thư viện python thống kê nào không? Tìm kiếm nó không trả lại bất cứ điều gì có liên quan.
Ketan

Hàm L có thể không khả dụng, vì nó thường được mã hóa cho hai hoặc nhiều chiều. Thuật toán rất đơn giản, như bạn có thể thấy từ việc triển khai ở đây: tính toán hàm phân phối tích lũy theo kinh nghiệm về khoảng cách giữa tất cả các cặp dữ liệu riêng biệt và sau đó điều chỉnh như được hiển thị trong Ripley.L.
whuber

Là phương sai đo lường bất khả tri hay phương sai phụ thuộc?
Ketan

1
Quy trình cơ bản tôi mô tả ở đây chuẩn hóa dữ liệu để tạo phạm vi tương ứng với khoảng [0,1] . Như vậy đó là "bất khả tri". Tuy nhiên, điều đó làm cho nó nhạy cảm với các ngoại lệ. (Vấn đề này có thể là một vấn đề nghiêm trọng trong kích thước cao hơn.) Người ta có thể khắc phục hạn chế đó bằng cách bình thường hóa, nói, với một loạt quantile (chẳng hạn như IQR) và làm cho một sự điều chỉnh phù hợp trong chỉnh cho hàm L. Điều này sẽ làm cho hàm L kết quả không cân bằngmạnh mẽ , mà tôi nghĩ rằng giải quyết mối quan tâm đằng sau bình luận của bạn. 1(1d)2
ai

Bạn nói "Vấn đề này có thể là một vấn đề nghiêm trọng ở các chiều cao hơn". Nó đã được điều chỉnh cho các mảng đơn biến, phải không? Tôi không hoàn toàn chắc chắn nếu tôi hiểu mọi thứ tốt. Bạn có thể vui lòng viết Ripley.L bằng bất kỳ ngôn ngữ nào khác hoặc bằng mã giả không? Hoặc bạn chỉ có thể nhận xét mã hiện tại một chút hoặc ít nhất là định dạng Ripley.L thành nhiều dòng để tăng cường khả năng đọc của nó. Thiếu bất kỳ tài liệu thích hợp nào tại statsmodels.sourceforge.net/urdy/generated/ , dù sao cũng không giúp tôi nhiều.
Ketan

5

Tôi giả sử rằng bạn muốn đo mức độ phân phối của đồng phục.

Bạn có thể nhìn vào khoảng cách giữa hàm phân phối tích lũy của phân phối đồng đều và hàm phân phối tích lũy theo kinh nghiệm của mẫu.

Giả sử rằng biến được xác định trên tập {1,2,3,4,5}Fu(x)

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

Bây giờ, giả sử rằng mẫu của bạn là 1X1,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

Bây giờ, như một thước đo khoảng cách giữa các bản phân phối, hãy lấy tổng khoảng cách tại mỗi điểm, nghĩa là

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

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

Trong các trường hợp phức tạp hơn, bạn cần sửa lại định mức được sử dụng ở trên, nhưng ý tưởng chính vẫn giữ nguyên. Nếu bạn cần quy trình thử nghiệm, có thể tốt khi sử dụng các định mức cho các thử nghiệm được phát triển (những thử nghiệm mà @TomMinka chỉ ra).


Một số biện pháp phổ biến khác về khoảng cách đến phân phối là thử nghiệm KolmogorovTHER Smirnovthử nghiệm Andersonling Darling .
Tom Minka

Chào. Cảm ơn câu trả lời. Vui lòng xem lại câu hỏi đã cập nhật để định hướng và cho tôi biết nếu câu trả lời của bạn áp dụng cho câu hỏi đó. Nếu nó không. Tôi sẽ phải xác minh nó.
Ketan

Có, câu trả lời của tôi áp dụng cho nó, miễn là 'thậm chí' có nghĩa là 'đồng phục'.
ukasz Kidziński

Được chứ. Bạn có thể vui lòng giải thích một chút về câu trả lời.
Ketan

@TomMinka cảm ơn, các định mức chắc chắn các định mức này thậm chí còn tốt hơn, vì có một quy trình thử nghiệm được phát triển.
Łukasz Kidziński

1

Nếu tôi hiểu chính xác câu hỏi của bạn, phân phối "đồng đều nhất" cho bạn sẽ là một trong đó biến ngẫu nhiên lấy mọi giá trị quan sát được sau khi thống nhất về ý nghĩa. Nếu có "cụm" các quan sát có cùng giá trị, điều đó sẽ không đồng đều. Giả sử chúng ta đang nói về các quan sát rời rạc, có lẽ bạn có thể xem xét cả sự khác biệt trung bình giữa các điểm khối lượng xác suất, chênh lệch tối đa hoặc có thể có bao nhiêu quan sát có sự khác biệt so với "trung bình" trên một ngưỡng nhất định.

Nếu nó thực sự đồng nhất trong các quan sát, tất cả các điểm PM phải có giá trị bằng nhau và chênh lệch giữa max và min là 0. Chênh lệch trung bình càng gần 0, phần lớn các quan sát càng "thấp" sự khác biệt tối đa và càng ít "đỉnh" cũng sẽ cho thấy mức độ "thậm chí" của các quan sát thực nghiệm là như thế nào.

Cập nhật Tất nhiên, bạn có thể sử dụng kiểm tra chi bình phương cho tính đồng nhất hoặc so sánh chức năng phân phối theo kinh nghiệm với đồng phục, nhưng trong những trường hợp đó, bạn sẽ bị phạt bởi bất kỳ "khoảng trống" lớn nào trong các quan sát, mặc dù các phân phối quan sát vẫn còn "cũng".


Đối với một tập hợp các giá trị có thể có, tôi muốn mô hình hóa về mức độ 'hiếm' hoặc 'đặc thù' của nó, nó sẽ có một giá trị cụ thể từ tập hợp các giá trị đó. Không có bất kỳ tùy chọn nào khác, tôi đang cố gắng đo mức độ phân phối đồng đều hoặc thống nhất của các giá trị. Càng phân phối nhiều, càng có ít cơ hội có bất kỳ giá trị đặc biệt nào từ tập hợp. Trong khi đó, ví dụ, nếu tất cả các dữ liệu nằm trong các cực trị của phân phối, thì bất kỳ giá trị nào cũng có thể là thứ gì đó xứng đáng được coi là 'đặc thù'. Tôi hi vọng bạn có được nó?
Ketan

1

Các biện pháp bạn đang tìm kiếm được chính thức gọi là sự khác biệt .

Phiên bản một chiều như sau:

Để cho I=[a,b) denote the half-open interval and consider a finite sequence x1,,xNI.

For a subset JI, let A(J,N) denote the number of elements of this sequence inside J.

That is,

A(J,N)=|{x1,,xN}J|,
and let V(J) denote the volume of J.

The discrepancy of the sequence x1,,xN is defined as

>DN=supJ|A(J,N)V(J)N|,
where the supremum is taken over all half-open subintervals J=j=1[0,tj), with 0tj1.

The discrepancy thus compares the actual number of points in a given volume with the expected number of points in that volume, assuming the sequence x1,,xN is uniformly distributed in I.

Low discrepancy sequences are often called quasirandom sequences.

A basic overview of low discrepancy sequences can be found here, and my blog post "The unreasonable effectiveness of quasirandom sequences" compares various methods when applied to Numerical Integration, mapping points to the surface of a sphere, and quasiperiodic tiling.


0

It sounds like you are interested in the pairwise differences of randomly observed values in a particular sequence, as in the case of modeling growth or trend. There are a number of ways to do so in time series analyses. A very basic approach is just a simple linear model regressing the sequence values upon their index values. In the first case, your linear model would give you a singular regression coefficient of 1 (predictive R2=1). In the later case, this would be a coefficient of 1.51 and an R2 of 0.78.


I don't know if I understood clearly enough what you meant, but I simply need to understand how 'evenly' something is distributed in a distribution. Variance is not that useful given that one can get the same variance and mean for two very differently distributed distributions.
Ketan

@Ketan, you changed your question substantially. Either way, I am not clear what that might be. In any regard, it's clear that my answer is not addressing what you are interested in based on the most recent version of your question.
AdamO

For a given set of possible values, I want to basically model how 'rare' or 'peculiar' it would be have a particular value from that set of values. In lack of any other options, I'm trying to measure how evenly or uniformly distributed the values are. The more even the distribution, the less chance there is to have any peculiar value from the set. Whereas, if for example all the data lies in the extremes of a distribution, any value can be something worthy to be considered as 'peculiar'. I hope you get it?
Ketan

No, sorry still not following. Just to verify, are you familiar with the formal definition of "uniformly" distributed data? A "normal" distribution, for example, is not uniform. Both are symmetric. You seem to allude to whether symmetry might be of interest, but then you seem to say that the probability of sampling "rare" values is of interest. For instance, a Cauchy distribution is symmetric, but is known to be an example of a distribution that will generate outliers as a probability model.
AdamO

Let me put it this way: Each set is simply the set of all values of a particular attribute in a dataset. I basically want to quantify each attribute by how 'stable' its values are, for which I've been using simple variance till now. But last night, I realized that exactly same variance and mean is possible for 2 attributes, even though one could be 'even', and other having most of the values in 2 extremes. Hence now I want an additional measure to measure if the values can be found evenly, or do they reside more in the extremes.
Ketan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.