So sánh hai phân phối đa thức


7

Bối cảnh: Hãy tưởng tượng một chiếc bánh pizza được cắt thành 8 lát.

[8 lát pizza]

Trên mỗi cạnh thẳng của lát cắt, tôi chèn một nam châm có cực ngược nhau hướng ra ngoài. Nếu tôi tách các thành phần này, ngăn lật và lắc chúng, chúng sẽ tạo thành một chiếc bánh pizza đầy đủ.

Bây giờ, nếu tôi đặt một lát bổ sung (cùng kích thước, 1/8 của một chiếc bánh pizza đầy đủ), một chiếc bánh pizza đầy đủ sẽ không luôn luôn hình thành. Nó có thể tạo thành các cụm gồm: 4 & 5, 3 & 6, 2 & 7 và 1 & 8.

Một mô hình (được đưa ra bởi Hosokawa và cộng sự (1994)) cho tôi xác suất của mỗi cụm hình thành. Để xác nhận mô hình, tôi làm một số thí nghiệm vật lý. Tôi tiến hành 20 thử nghiệm cho mỗi điều kiện thí nghiệm.

Kết quả của tôi trông như thế này:

Cluster  Theoretical  Physical
3,6:    6.01961132827  4  
1,8:    2.77455224377  5  
4,5:    6.62198848501  5  
2,7:    4.58384794294  6  

Dữ liệu đã nói ở trên là một phân phối đa cực (gần giống với phân phối thu được khi gieo xúc xắc). Khi có 9 lát, mỗi thử nghiệm có thể kết thúc ở một trong 4 trạng thái.

Ngoài thử nghiệm 9 lát, tôi cũng có dữ liệu cho một thử nghiệm 40 lát (và một vài người khác). (Xin vui lòng cho tôi biết nếu bạn muốn tôi đưa nó vào đây)

Vấn đề: Để kiểm tra mức độ phù hợp của sự phù hợp, tôi sẽ chạy thử nghiệm Chi bình phương của Pearson. Tuy nhiên, vì phương tiện của cả hai bản phân phối là "đóng", tôi không thể bác bỏ giả thuyết khống. Tuy nhiên, tôi cũng không thể chấp nhận giả thuyết khống.

Câu hỏi: Có cách nào tốt hơn cho thấy mức độ "đóng" của mô hình đối với các thí nghiệm vật lý không? Tương đương đa thức của "độ lệch chuẩn", hoặc có lẽ là khoảng tin cậy? Hồi quy với khoảng tin cậy?

Cập nhật: Một đồng nghiệp của tôi đã đề xuất cách tiếp cận sau đây để phân tích hồi quy trong R:

d=read.csv("data.csv")
length(unique(d$abs_state))
nrow(d)
d$n_componentsf=as.factor(d$n_components)

ncomps=9
dsubs=d[d$n_components==ncomps,]
# using exact multinomial test in EMT (better)
library(EMT)
# using Chi square test statistics
EMT::multinomial.test(dsubs$freq_obs, 
                      dsubs$freq_pred/sum(dsubs$freq_pred),
                      useChisq=TRUE,MonteCarlo=FALSE)
# using p value calculated via Monte Carlo approach
EMT::multinomial.test(dsubs$freq_obs, 
                      dsubs$freq_pred/sum(dsubs$freq_pred),
                      ntrial = 100000,
                      MonteCarlo=TRUE)

# other exact multinomial test implementation
library(RVAideMemoire)
RVAideMemoire::multinomial.test(dsubs$freq_obs, 
                                p=dsubs$freq_pred/sum(dsubs$freq_pred))


# if you're interested in 95% confidence limits
# on your multinomial proportions you can 
# calculate these like this
library(DescTools)
MultinomCI(dsubs$freq_obs, conf.level=0.95)

library(ggplot2)
library(lattice)

# if you would like to analyse all data together
# you could also analyse the observed frequency
# counts as having approx Poisson expectation,
# using a Poisson GLM 
# (or a binomial GLM if you put cbind(freq_obs,freq_notobs) as your dependent var and use family=binomial)
library(afex)
library(MASS)
library(car)
library(effects)
set_sum_contrasts() # use effect coding, as data is unbalanced

fit=glm(freq_obs ~ freq_pred, 
        family=quasipoisson, data=d)
summary(fit)
Anova(fit, test="LR", type="III")

plot(allEffects(fit),type="response", rug=F)
plot1=plot(Effect(c("freq_pred"),
            mod=fit),type="response",rug=F)
plot2=xyplot(freq_obs ~ freq_pred,
             data=d,
             type=c("p"),
             par.settings=
               simpleTheme(col=c("blue","red"),pch=16,cex=1.1))
library(latticeExtra)
plot1+plot2 # nice correspondence between observed and expected frequencies

# sticking model predictions in data frame and
# plotting this in ggplot2 instead
df=data.frame(effect(term="freq_pred",
                  mod=fit,
                  xlevels=list(freq_pred=seq(0,15,1)),type="response"))
df

library(ggplot2)
library(ggthemes)
ggplot(data=df) +
  geom_ribbon(data = df, 
              aes(x=freq_pred, ymin=lower, ymax=upper), linetype=2, alpha=0.1) +
  geom_line(data = df, aes(x=freq_pred, y=fit)) +
  geom_point(data = d, aes(x=freq_pred, y=freq_obs, color=n_componentsf), cex=3) +
  ylab("Predicted frequency") + 
  xlab("Observed frequency") +
  theme_few(base_size=16) 

Data.csv có:

n_components,abs_state,freq_pred,freq_obs,freq_notobs
9,"3,6",6.019611328,4,16
9,"1,8",2.774552244,5,15
9,"4,5",6.621988485,5,15
9,"2,7",4.583847943,6,14
15,"3,6,6",1.81009773,0,20
15,"4,5,6",3.927622683,7,13
15,"7,8",13.49657189,13,7
15,"5,5,5",0.765707695,0,20
40,"4,5,5,5,6,7,8",0.803987454,0,20
40,"5,6,6,7,8,8",3.376961833,3,17
40,"2,7,7,8,8,8",0.230595232,0,20
40,"5,7,7,7,7,7",0.175319358,0,20
40,"5,6,7,7,7,8",2.709196442,1,19
40,"5,5,5,5,6,7,7",0.170797287,0,20
40,"4,5,5,6,6,7,7",0.847746645,1,19
40,"8,8,8,8,8",0.230119576,0,20
40,"4,6,7,7,8,8",1.795116571,0,20
40,"6,6,6,6,8,8",0.483846181,0,20
40,"5,5,5,5,6,6,8",0.185675465,1,19
40,"4,7,7,7,7,8",0.4072505,0,20
40,"5,5,5,6,6,6,7",0.274814936,1,19
40,"5,5,6,8,8,8",0.708881447,1,19
40,"4,6,6,8,8,8",0.479526825,1,19
40,"4,5,5,5,5,8,8",0.071967085,0,20
40,"5,5,7,7,8,8",1.233981848,1,19
40,"4,5,6,6,6,6,7",0.34756786,1,19
40,"6,6,6,7,7,8",2.208449237,2,18
40,"4,5,5,6,6,6,8",0.494611498,1,19
40,"5,5,5,5,5,7,8",0.061650486,0,20
40,"4,5,5,5,5,5,5,6",0.010322162,0,20
40,"3,6,6,6,6,6,7",0.071274376,0,20
40,"4,6,6,6,6,6,6",0.015244456,0,20
40,"6,6,7,7,7,7",0.656508868,1,19
40,"4,5,5,5,7,7,7",0.155256863,2,18
40,"5,5,6,6,6,6,6",0.04917738,0,20
40,"3,6,7,8,8,8",0.634760319,0,20
40,"3,7,7,7,8,8",0.430171526,1,19
40,"5,5,5,5,5,5,5,5",0.00022644,0,20

Mã tạo ra 3 lô [ấn tượng với tôi ít nhất :)]. Tuy nhiên, tôi hoài nghi về tính đúng đắn của chúng. Từ những gì tôi hiểu, đường cong hồi quy thể hiện sự tương ứng giữa các dự đoán và quan sát. Đường cong này có lẽ là "phù hợp nhất" với các tương ứng. Tuy nhiên, có vẻ như tôi lo ngại rằng phần lớn các điểm tương ứng được thực hiện khi bắt đầu. Là mối quan tâm này có giá trị?

Với các tham chiếu đến đường hồi quy, khoảng tin cậy được tính như thế nào? Tôi tìm thấy bài báo Bauer (1972), nhưng không thể hiểu nó một cách thỏa đáng. Giúp hiểu cách khoảng tin cậy được tính toán sẽ được đánh giá cao.

Các câu hỏi khác (có thể thô sơ): - Ảnh hưởng của việc không quan sát trạng thái trên biểu đồ hồi quy là gì? Chẳng hạn, trạng thái thứ 1 và thứ 4 của thí nghiệm 15 lát không được quan sát thực tế? - Trong ô thứ ba (mà bạn có được sau khi thực thi mã R), có lý do cụ thể nào khiến trục bị lật không?

Cuối cùng, tôi có thể rút ra kết luận gì từ các ô? Hầu hết các điểm tương ứng trên biểu đồ hồi quy nằm ngoài khoảng tin cậy. Đây có phải là một dấu hiệu rõ ràng về khả năng (trong) của mô hình để đưa ra dự đoán?

Cuối cùng và rõ ràng, dữ liệu là không đủ. Để tìm được lượng dữ liệu cần thiết, người ta sẽ phải tiến hành đủ số lượng thử nghiệm cho đến khi khoảng tin cậy được giảm xuống chiều rộng mong muốn (tôi đã nhận ra rằng việc chọn độ rộng này không phải là nhỏ). Tôi đã thử sao chép ngẫu nhiên các tần số dự đoán (bootstrapping của người nghèo?), Nhưng một lần nữa, tôi gặp phải vấn đề không hiểu làm thế nào khoảng tin cậy được tính từ thống kê chi bình phương của Pearson.


Nhận xét này có thể không hoàn toàn hữu ích, nhưng vì phân phối đa phương thức là đa biến, nên sự tương tự của phương sai sẽ là ma trận phương sai (co) en.wikipedia.org/wiki/Covariance_matrix Tôi không đủ quen thuộc với các thống kê đa biến để đưa ra khuyến nghị cho kiểm tra cụ thể để sử dụng với ma trận hiệp phương sai.
Chill2Macht

1
@ Chill2Macht cảm ơn phản hồi siêu nhanh của bạn! Tôi đã xem xét ma trận hiệp phương sai, nhưng có một vài lo ngại: (1) Tôi không chắc chắn trong ma trận hiệp phương sai nào tôi sẽ phải sử dụng và (2) "độ lệch chuẩn" là (var) ^ 0,5. Vì vậy, những gì sẽ có trong một ma trận hiệp phương sai? Nắm bắt về số liệu thống kê của tôi là không đủ tốt để tự mình tìm ra điều này.
troisquatre

Vâng, một ma trận là một ma trận hiệp phương sai của một số phân phối khi và chỉ khi nó là bán xác định dương, và mọi ma trận bán xác định dương có một "căn bậc hai" linear.ups.edu/jsmath/0210/fcla-jsmath-2.10li108 .html - đối với cách áp dụng thực tế này trong bối cảnh thống kê, tôi không biết. Nó sẽ là người mù dẫn đầu người mù. Tôi không chắc chắn nếu bạn đã nghĩ về ma trận hiệp phương sai, và đôi khi biết thuật ngữ có thể vô tình vấp phải kết quả đúng trên google dễ dàng hơn rất nhiều. Nhưng khác hơn là tôi không thực sự biết, tôi xin lỗi.
Chill2Macht

@ Chill2Macht: Cảm ơn rất nhiều về đầu vào. Nếu bạn biết ai đó có thể làm sáng tỏ vấn đề của tôi, xin vui lòng chia sẻ câu hỏi của tôi với người đó.
troisquatre

Bạn có quan tâm đến một biện pháp không chắc chắn, suy luận hoặc một biện pháp mô tả?
Todd D

Câu trả lời:


0

Tôi tin rằng bài kiểm tra tốt nhất cho dữ liệu của bạn là bài kiểm tra đa phương thức mà bạn đã ước tính.

Để biết "thước đo" về sự khác biệt giữa các bản phân phối dự kiến ​​và được quan sát, hãy xem xét Phân kỳ Kullback-Leibler. Đối với thử nghiệm đầu tiên của bạn:

require(entropy)
cv <- d[1:4,]
set.seed(42)
probs <- cv$freq_pred/20
cv$freq_exp <- table(sample(c(1:4), 10000, prob=probs, replace=T))
KL.empirical(cv$freq_exp, cv$freq_obs)

Phân kỳ KL là 0,072. Nếu 0, phân phối thứ 2 tương tự phân phối thứ 1. Nếu 1, phân phối thứ 2 ít liên quan đến phân phối 1. Thêm ở đây cho một giải thích tốt hơn dựa trên lý thuyết thông tin.

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.