Làm thế nào để kiểm tra nếu phân phối của tôi là đa phương thức?


21

Khi tôi vẽ biểu đồ dữ liệu của mình, nó có hai đỉnh:

biểu đồ

Điều đó có nghĩa là một phân phối đa phương thức tiềm năng? Tôi đã chạy dip.testtrong R ( library(diptest)) và đầu ra là:

D = 0.0275, p-value = 0.7913

Tôi có thể kết luận rằng dữ liệu của tôi có phân phối đa phương thức không?

DỮ LIỆU

10346 13698 13894 19854 28066 26620 27066 16658  9221 13578 11483 10390 11126 13487 
15851 16116 24102 30892 25081 14067 10433 15591  8639 10345 10639 15796 14507 21289 
25444 26149 23612 19671 12447 13535 10667 11255  8442 11546 15958 21058 28088 23827 
30707 19653 12791 13463 11465 12326 12277 12769 18341 19140 24590 28277 22694 15489 
11070 11002 11579  9834  9364 15128 15147 18499 25134 32116 24475 21952 10272 15404 
13079 10633 10761 13714 16073 23335 29822 26800 31489 19780 12238 15318  9646 11786 
10906 13056 17599 22524 25057 28809 27880 19912 12319 18240 11934 10290 11304 16092 
15911 24671 31081 27716 25388 22665 10603 14409 10736  9651 12533 17546 16863 23598 
25867 31774 24216 20448 12548 15129 11687 11581

3
Sử dụng nhiều thùng trong biểu đồ của bạn. Tôi đề nghị khoảng gấp đôi số lượng
Glen_b -Reinstate Monica

1
Có đề cập đến chín bài kiểm tra khác nhau trong câu trả lời này , một số trong đó có thể liên quan đến tình huống của bạn.
Glen_b -Reinstate Monica 23/215

1
Bài viết này có thể hữu ích cho bạn, nếu bạn chưa thấy nó (cũng theo dõi này )
Eoin

Câu trả lời:


15

@NickCox đã trình bày một chiến lược thú vị (+1). Tuy nhiên, tôi có thể xem xét nó mang tính khám phá nhiều hơn, do mối quan tâm mà @whuber chỉ ra .

Hãy để tôi đề xuất một chiến lược khác: Bạn có thể phù hợp với mô hình hỗn hợp hữu hạn Gaussian. Lưu ý rằng điều này làm cho giả định rất mạnh mẽ rằng dữ liệu của bạn được rút ra từ một hoặc nhiều quy tắc thực sự. Như cả @whuber và @NickCox đều chỉ ra trong các bình luận, mà không có sự giải thích thực sự về những dữ liệu này được hỗ trợ bởi lý thuyết được thiết lập tốt để hỗ trợ giả định này, chiến lược này cũng nên được xem xét thăm dò.

Trước tiên, hãy làm theo đề xuất của @ Glen_b và xem dữ liệu của bạn bằng cách sử dụng gấp đôi số thùng:

nhập mô tả hình ảnh ở đây

Chúng ta vẫn thấy hai chế độ; nếu bất cứ điều gì, họ đi qua rõ ràng hơn ở đây. (Cũng lưu ý rằng dòng mật độ hạt nhân phải giống hệt nhau, nhưng xuất hiện nhiều hơn do số lượng thùng lớn hơn.)

Bây giờ cho phép phù hợp với một mô hình hỗn hợp hữu hạn Gaussian. Trong R, bạn có thể sử dụng Mclustgói để làm điều này:

library(mclust)
x.gmm = Mclust(x)
summary(x.gmm)
# ----------------------------------------------------
# Gaussian finite mixture model fitted by EM algorithm 
# ----------------------------------------------------
#   
# Mclust V (univariate, unequal variance) model with 2 components:
#   
#   log.likelihood   n df       BIC       ICL
#        -1200.874 120  5 -2425.686 -2442.719
# 
# Clustering table:
#  1  2 
# 68 52 

Hai thành phần bình thường tối ưu hóa BIC. Để so sánh, chúng ta có thể buộc một thành phần phù hợp và thực hiện kiểm tra tỷ lệ khả năng:

x.gmm.1 = Mclust(x, G=1)
logLik(x.gmm.1)
# 'log Lik.' -1226.241 (df=2)
logLik(x.gmm)-logLik(x.gmm.1)
# 'log Lik.' 25.36657 (df=5)
1-pchisq(25.36657, df=3)  # [1] 1.294187e-05

Điều này cho thấy rất khó có khả năng bạn sẽ tìm thấy dữ liệu ở xa không chính thống như của bạn nếu chúng đến từ một phân phối bình thường thực sự duy nhất.

Một số người không cảm thấy thoải mái khi sử dụng thử nghiệm tham số ở đây (mặc dù nếu các giả định được giữ, tôi không biết về bất kỳ vấn đề nào). Một kỹ thuật có thể áp dụng rất rộng rãi là sử dụng Phương pháp khớp chéo tham số Bootstrap (tôi mô tả thuật toán ở đây ). Chúng tôi có thể thử áp dụng nó cho các dữ liệu này:

x.gmm$parameters
# $mean
# 12346.98 23322.06 
# $variance$sigmasq
# [1]  4514863 24582180
x.gmm.1$parameters
# $mean
# [1] 17520.91
# $variance$sigmasq
# [1] 43989870

set.seed(7809)
B = 10000;    x2.d = vector(length=B);    x1.d = vector(length=B)
for(i in 1:B){
  x2      = c(rnorm(68, mean=12346.98, sd=sqrt( 4514863)), 
              rnorm(52, mean=23322.06, sd=sqrt(24582180)) )
  x1      = rnorm( 120, mean=17520.91, sd=sqrt(43989870))
  x2.d[i] = Mclust(x2, G=2)$loglik - Mclust(x2, G=1)$loglik
  x1.d[i] = Mclust(x1, G=2)$loglik - Mclust(x1, G=1)$loglik
}
x2.d = sort(x2.d);  x1.d = sort(x1.d)
summary(x1.d)
#     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
# -0.29070 -0.02124  0.41460  0.88760  1.36700 14.01000 
summary(x2.d)
#   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#  9.006  23.770  27.500  27.760  31.350  53.500 

nhập mô tả hình ảnh ở đây

Các thống kê tóm tắt và các ô mật độ hạt nhân cho các bản phân phối lấy mẫu cho thấy một số tính năng thú vị. Khả năng ghi nhật ký cho mô hình thành phần đơn lẻ hiếm khi lớn hơn so với hai thành phần phù hợp, ngay cả khi quy trình tạo dữ liệu thực sự chỉ có một thành phần duy nhất và khi lớn hơn, số lượng là không đáng kể. Ý tưởng so sánh các mô hình khác nhau về khả năng phù hợp với dữ liệu của họ là một trong những động lực đằng sau PBCM. Hai phân phối lấy mẫu hầu như không trùng nhau; chỉ 0,35% x2.dnhỏ hơn mức tối đax1.dgiá trị. Nếu bạn đã chọn một mô hình hai thành phần nếu sự khác biệt về khả năng đăng nhập là> 9,7, bạn sẽ chọn không chính xác một mô hình thành phần .01% và mô hình hai thành phần 0,02% thời gian. Đây là rất phân biệt đối xử. Mặt khác, nếu bạn chọn sử dụng mô hình một thành phần làm giả thuyết không, thì kết quả quan sát được của bạn đủ nhỏ để không hiển thị trong phân phối lấy mẫu theo kinh nghiệm trong 10.000 lần lặp. Chúng tôi có thể sử dụng quy tắc 3 (xem tại đây ) để đặt giới hạn trên cho giá trị p, cụ thể là, chúng tôi ước tính giá trị p của bạn nhỏ hơn .0003. Đó là, điều này rất có ý nghĩa.

p<.000001p<.001) và các thành phần cơ bản, nếu chúng tồn tại, không được đảm bảo là hoàn toàn bình thường. Nếu bạn thấy hợp lý rằng dữ liệu của bạn có thể đến từ phân phối sai lệch tích cực, thay vì bình thường, mức độ lưỡng tính này có thể nằm trong phạm vi biến thể điển hình, đó là điều tôi nghi ngờ về thử nghiệm nhúng đang nói.


1
Vấn đề với cách tiếp cận này là sự thay thế mà bạn đang so sánh hỗn hợp Gaussian không hợp lý lắm. Một điều hợp lý hơn sẽ là phân phối là một loại sai lệch, chẳng hạn như Gamma. Gần như chắc chắn rằng một hỗn hợp sẽ phù hợp với hầu hết mọi tập dữ liệu sai lệch "đáng kể" tốt hơn một Gaussian duy nhất sẽ phù hợp với nó.
whuber

Bạn nói đúng, @whuber. Tôi đã cố gắng để làm cho điểm đó rõ ràng. Tôi không chắc chắn cách thực hiện Gamma FMM, nhưng điều đó sẽ tốt hơn.
gung - Phục hồi Monica

1
Vì đây là thăm dò, nên người ta sẽ cố gắng chuyển đổi phân phối ban đầu thành đối xứng (có lẽ với phép biến đổi Box-Cox bù, được ước tính mạnh mẽ từ một vài lượng tử dữ liệu) và thử lại cách tiếp cận của bạn. Tất nhiên bạn sẽ không nói về "ý nghĩa" mỗi lần nhưng phân tích về khả năng vẫn có thể được tiết lộ.
whuber

@whuber, tôi đã làm điều đó, nhưng tôi chỉ đề cập đến nó trong việc vượt qua. (Phép biến đổi Box-Cox tối ưu là căn bậc hai nghịch đảo.) Bạn nhận được kết quả tương tự, nhưng giá trị p là (vẫn cao, nhưng) ít quan trọng hơn.
gung - Phục hồi Monica

3
Tôi rất thích ý tưởng rằng bạn nên mô hình hóa những gì bạn nghĩ là quá trình tạo ra. Vấn đề của tôi là ngay cả khi hỗn hợp Gaussian hoạt động tốt, tôi cảm thấy nên có một cách giải thích thực chất. Nếu OP nói với chúng tôi nhiều hơn ngay cả về những gì dữ liệu là một số dự đoán tốt hơn có thể có thể.
Nick Cox

10

Theo dõi trên ý tưởng trong @ câu trả lời và ý kiến của Nick, bạn có thể thấy cách rộng nhu cầu băng thông là để chỉ flatten ra chế độ phổ thông:

nhập mô tả hình ảnh ở đây

Lấy ước tính mật độ hạt nhân này là null null gần nhất, phân phối gần nhất với dữ liệu nhưng vẫn phù hợp với giả thuyết null rằng đó là một mẫu từ một quần thể không chính thống và mô phỏng từ nó. Trong các mẫu mô phỏng, chế độ thứ cấp thường không quá khác biệt và bạn không cần phải mở rộng băng thông nhiều để làm phẳng nó.

<code> nhập mô tả hình ảnh tại đây </ code>

Chính thức hóa phương pháp này dẫn đến thử nghiệm được đưa ra trong Silverman (1981), "Sử dụng ước tính mật độ hạt nhân để điều tra phương thức", JRSS B , 43 , 1. silvermantestGói của Schwaiger & Holzmann thực hiện thử nghiệm này, và cả quy trình hiệu chuẩn được mô tả bởi Hall & York ( 2001), "Về việc hiệu chuẩn thử nghiệm của Silverman về tính đa phương thức", Statistica Sinica , 11 , tr 515, điều chỉnh cho chủ nghĩa bảo thủ không triệu chứng. Thực hiện kiểm tra trên dữ liệu của bạn với giả thuyết không có giá trị cho kết quả không tương đương với giá trị p là 0,08 mà không cần hiệu chuẩn và 0,02 với hiệu chuẩn. Tôi không đủ quen thuộc với thử nghiệm nhúng để đoán tại sao nó có thể khác nhau.

Mã R:

  # kernel density estimate for x using Sheather-Jones method to estimate b/w:
density(x, kernel="gaussian", bw="SJ") -> dens.SJ
  # tweak b/w until mode just disappears:
density(x, kernel="gaussian", bw=3160) -> prox.null
  # fill matrix with simulated samples from the proximal null:
x.sim <- matrix(NA, nrow=length(x), ncol=10)
for (i in 1:10){
  x.sim[ ,i] <- rnorm(length(x), sample(x, size=length(x), replace=T), prox.null$bw)
}
  # perform Silverman test without Hall-York calibration:
require(silvermantest)
silverman.test(x, k=1, M=10000, adjust=F)
  # perform Silverman test with Hall-York calibration:
silverman.test(x, k=1, M=10000, adjust=T)

+1. Hấp dẫn! Hạt nhân nào đang được sử dụng ở đây? Khi tôi nhớ lại một cách mờ nhạt, có những lý do tinh tế tại sao hạt nhân Gaussian nên được sử dụng cho các biến thể chính thức của phương pháp này.
Nick Cox

@Nick: Hạt nhân Gaussian, nhưng tôi không thể nhớ nếu có một lý do thuyết phục cho điều đó. Mỗi mẫu mô phỏng được định cỡ lại, và có một sự điều chỉnh cho sự thiên vị bảo thủ mà thử nghiệm ban đầu đã thực hiện - được thực hiện bởi một người được gọi là Storey tôi nghĩ.
Scortchi - Phục hồi Monica

@NickCox: Xin lỗi, không phải Storey.
Scortchi - Phục hồi Monica

@Scortchi, tôi tinh chỉnh văn bản và mã của bạn một chút. Tôi hy vọng bạn không phiền. +1. Ngoài ra, bạn sử dụng toán tử gán mũi tên phải đáng sợ?! Ôi nhân loại ...
gung - Phục hồi Monica

2
Thực sự không tốt hơn hay tệ hơn, nhưng quy ước trong lập trình là nêu rõ các biến của bạn ở bên trái và có những gì được gán cho chúng ở bên phải. Rất nhiều người bị bối rối bởi ->; Tôi chỉ bị bối rối.
gung - Phục hồi Monica

7

Những điều cần lo lắng bao gồm:

  1. Kích thước của tập dữ liệu. Nó không nhỏ xíu, không lớn.

  2. Sự phụ thuộc của những gì bạn nhìn thấy vào nguồn gốc biểu đồ và chiều rộng thùng. Chỉ có một sự lựa chọn rõ ràng, bạn (và chúng tôi) không có ý tưởng về sự nhạy cảm.

  3. Sự phụ thuộc của những gì bạn thấy vào loại nhân và chiều rộng và bất kỳ lựa chọn nào khác được thực hiện cho bạn trong ước tính mật độ. Chỉ có một sự lựa chọn rõ ràng, bạn (và chúng tôi) không có ý tưởng về sự nhạy cảm.

Ở những nơi khác tôi đã đề nghị một cách ngập ngừng rằng độ tin cậy của các chế độ được hỗ trợ (nhưng không được thiết lập) bằng cách giải thích thực chất và bằng khả năng phân biệt cùng một phương thức trong các bộ dữ liệu khác có cùng kích thước. (Lớn hơn cũng tốt hơn ....)

Chúng tôi không thể bình luận về một trong những người ở đây. Một cách xử lý nhỏ về độ lặp lại là so sánh những gì bạn nhận được với các mẫu bootstrap có cùng kích thước. Dưới đây là kết quả của một thử nghiệm mã thông báo sử dụng Stata, nhưng những gì bạn thấy bị giới hạn tùy ý đối với các mặc định của Stata, bản thân chúng được ghi nhận là bị rơi ra khỏi không khí . Tôi có ước tính mật độ cho dữ liệu gốc và 24 mẫu bootstrap giống nhau.

Dấu hiệu (không hơn, không kém) là những gì tôi nghĩ các nhà phân tích có kinh nghiệm sẽ chỉ đoán bất kỳ cách nào từ biểu đồ của bạn. Chế độ tay trái có khả năng lặp lại cao và tay phải mỏng manh hơn rõ rệt.

Lưu ý rằng có một điều không thể tránh khỏi về điều này: vì có ít dữ liệu hơn ở chế độ bên tay phải, nó sẽ không luôn xuất hiện lại trong một mẫu bootstrap. Nhưng đây cũng là điểm mấu chốt.

nhập mô tả hình ảnh ở đây

Lưu ý rằng điểm 3. ở trên vẫn còn nguyên. Nhưng kết quả là một nơi nào đó giữa unimodal và bimodal.

Đối với những người quan tâm, đây là mã:

clear 
set scheme s1color 
set seed 2803 

mat data = (10346, 13698, 13894, 19854, 28066, 26620, 27066, 16658, 9221, 13578, 11483, 10390, 11126, 13487, 15851, 16116, 24102, 30892, 25081, 14067, 10433, 15591, 8639, 10345, 10639, 15796, 14507, 21289, 25444, 26149, 23612, 19671, 12447, 13535, 10667, 11255, 8442, 11546, 15958, 21058, 28088, 23827, 30707, 19653, 12791, 13463, 11465, 12326, 12277, 12769, 18341, 19140, 24590, 28277, 22694, 15489, 11070, 11002, 11579, 9834, 9364, 15128, 15147, 18499, 25134, 32116, 24475, 21952, 10272, 15404, 13079, 10633, 10761, 13714, 16073, 23335, 29822, 26800, 31489, 19780, 12238, 15318, 9646, 11786, 10906, 13056, 17599, 22524, 25057, 28809, 27880, 19912, 12319, 18240, 11934, 10290, 11304, 16092, 15911, 24671, 31081, 27716, 25388, 22665, 10603, 14409, 10736, 9651, 12533, 17546, 16863, 23598, 25867, 31774, 24216, 20448, 12548, 15129, 11687, 11581)
set obs `=colsof(data)' 
gen data = data[1,_n] 

gen index = . 

quietly forval j = 1/24 { 
    replace index = ceil(120 * runiform()) 
    gen data`j' = data[index]
    kdensity data`j' , nograph at(data) gen(xx`j' d`j') 
} 

kdensity data, nograph at(data) gen(xx d) 

local xstuff xtitle(data/1000) xla(10000 "10" 20000 "20" 30000 "30") sort 
local ystuff ysc(r(0 .0001)) yla(none) `ystuff'   

local i = 1 
local colour "orange" 
foreach v of var d d? d?? { 
    line `v' data, lc(`colour') `xstuff'  `ystuff' name(g`i', replace) 
    local colour "gs8" 
    local G `G' g`i' 
    local ++i 
} 

graph combine `G' 

+1 Tôi thích cách tiếp cận bootstrap của bạn: mảng các ô giúp mọi người hiểu dữ liệu tốt hơn. Tôi tự hỏi liệu những lô đó có thể nhạy cảm với cách Stata ước tính băng thông hay không. Tôi nghi ngờ rằng nó có thể dẫn đến một thử nghiệm dưới sức mạnh bởi vì ước tính của nó có thể dựa trên một giả định không chính thống, dẫn đến băng thông tương đối rộng. Ngay cả một ước tính băng thông hẹp hơn một chút có thể làm cho chế độ thứ hai nổi bật hơn trong tất cả các mẫu bootstrap.
whuber

2
@whuber Cảm ơn! Như thường lệ, bạn tập trung không ngừng vào những điểm yếu mà chúng ta cần phải lo lắng, và tôi đồng ý. Khi băng thông kernel tăng lên, sự xuất hiện của tính không đồng nhất có xu hướng không thể tránh khỏi. Ngược lại, băng thông nhỏ thường chỉ biểu thị các chế độ giả không thể lặp lại và / hoặc tầm thường. Sự đánh đổi thực sự là tinh tế. Tôi nghĩ rằng công đức chính của phương pháp này là lời hùng biện của "Điều đó có thể lặp lại nếu chúng ta lắc lư?" Tôi thường quan tâm đến sự sẵn lòng của người dùng phần mềm để sao chép kết quả mặc định mà không cần phản ánh.
Nick Cox

2
Có những cách tiếp cận có hệ thống cho vấn đề này dựa trên việc sửa đổi băng thông dần dần và truy tìm sự xuất hiện và biến mất của các chế độ khi băng thông thay đổi. Về bản chất, chế độ đáng tin vẫn tồn tại và chế độ ít đáng tin hơn thì không. Đó là một cách tiếp cận dễ thương, nhưng đôi khi sẽ kích hoạt một người xây dựng đường hầm khi một cuộc diễu hành sẽ làm. Ví dụ: nếu bạn xoay vòng các lựa chọn biểu đồ và chế độ thứ cấp biến mất (hoặc di chuyển) quá dễ dàng, đừng tin điều đó.
Nick Cox

2

Nhận dạng chế độ không đối xứng LP

Nhận dạng chế độ không đối xứng LP (tên của thuật toán LPMode , tham chiếu của bài báo được đưa ra dưới đây)

Các chế độ MaxEnt [Tam giác màu đỏ trong cốt truyện]: 12783.36 và 24654.28.

Chế độ L2 [Tam giác màu xanh lục trong cốt truyện]: 13054,70 và 24111.61.

Thật thú vị khi lưu ý các hình dạng phương thức, đặc biệt là hình thứ hai cho thấy độ lệch đáng kể (mô hình Hỗn hợp Gaussian truyền thống có khả năng thất bại ở đây).

Mukhopadhyay, S. (2016) Nhận dạng chế độ quy mô lớn và khoa học dựa trên dữ liệu. https://arxiv.org/abs/1509,06428


1
Bạn có thể xây dựng và cung cấp một số bối cảnh để giới thiệu và giải thích các phương pháp này? Thật tuyệt khi có một liên kết đến bài báo, nhưng chúng tôi muốn các câu trả lời của chúng tôi ở đây được khép kín, đặc biệt là nếu liên kết bị chết.
gung - Phục hồi Monica

Bối cảnh là câu hỏi ban đầu: Có đa phương thức không? nếu vậy vị trí. và sự liên quan của một phương pháp mới xuất phát từ thực tế rằng săn bắn theo cách không theo quy tắc là vấn đề mô hình hóa khó.
Sâu Mukherjee

@gung đang yêu cầu bạn mở rộng câu trả lời của mình. Ví dụ, kết quả là từ một phương pháp được giải thích trong một bài báo không có phiên bản công khai.
Nick Cox

2
Không, ý tôi là "Nhận dạng chế độ không đối xứng LP" là gì? "MaxEnt" là gì? V.v. Trong một vài câu, làm thế nào để làm việc này? Tại sao / khi nào nó có thể thích hợp hơn các phương pháp khác? V.v. Tôi biết rằng bạn liên kết đến bài báo giải thích cho họ, nhưng thật tuyệt khi có một vài câu để giới thiệu về họ ở đây, đặc biệt là nếu liên kết bị chết, nhưng ngay cả khi không cho độc giả tương lai biết họ có tương lai hay không muốn theo đuổi phương pháp này.
gung - Phục hồi Monica

2
@DeepMukherjee, bạn chắc chắn không cần phải viết lại toàn bộ bài viết trong bài viết của mình. Chỉ cần thêm một vài câu nói nó là gì và nó hoạt động như thế nào.
gung - Phục hồi Monica
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.