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.
[
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.