Để tạo biểu đồ này, tôi đã tạo các mẫu ngẫu nhiên có kích thước khác nhau từ một phân phối bình thường với mean = 0 và sd = 1. Khoảng tin cậy sau đó được tính bằng cách sử dụng các mức cắt alpha từ 0,001 đến 0,999 (dòng màu đỏ) với hàm t.test (), khả năng hồ sơ được tính bằng mã bên dưới mà tôi tìm thấy trong các ghi chú bài giảng được đặt trên dòng (tôi có thể ' Không tìm thấy liên kết tại thời điểm Chỉnh sửa: Tìm thấy nó ), điều này được hiển thị bằng các dòng màu xanh. Các đường màu xanh lá cây hiển thị mật độ chuẩn hóa bằng hàm mật độ R () và dữ liệu được hiển thị bằng các ô vuông ở cuối mỗi biểu đồ. Bên phải là một biểu đồ sâu bướm của khoảng tin cậy 95% (màu đỏ) và 1/20 của khoảng khả năng tối đa (màu xanh).
Mã R được sử dụng cho khả năng hồ sơ:
#mn=mean(dat)
muVals <- seq(low,high, length = 1000)
likVals <- sapply(muVals,
function(mu){
(sum((dat - mu)^2) /
sum((dat - mn)^2)) ^ (-n/2)
}
)
Câu hỏi cụ thể của tôi là liệu có mối quan hệ đã biết giữa hai loại khoảng này hay không và tại sao khoảng tin cậy có vẻ bảo thủ hơn cho tất cả các trường hợp ngoại trừ khi n = 3. Nhận xét / câu trả lời về việc liệu các tính toán của tôi có hợp lệ không (và cách tốt hơn để làm điều này) và mối quan hệ chung giữa hai loại khoảng này cũng được mong muốn.
Mã R:
samp.size=c(3,4,5,10,20,1000)
cnt2<-1
ints=matrix(nrow=length(samp.size),ncol=4)
layout(matrix(c(1,2,7,3,4,7,5,6,7),nrow=3,ncol=3, byrow=T))
par(mar=c(5.1,4.1,4.1,4.1))
for(j in samp.size){
#set.seed(200)
dat<-rnorm(j,0,1)
vals<-seq(.001,.999, by=.001)
cis<-matrix(nrow=length(vals),ncol=3)
cnt<-1
for(ci in vals){
x<-t.test(dat,conf.level=ci)$conf.int[1:2]
cis[cnt,]<-cbind(ci,x[1],x[2])
cnt<-cnt+1
}
mn=mean(dat)
n=length(dat)
high<-max(c(dat,cis[970,3]), na.rm=T)
low<-min(c(dat,cis[970,2]), na.rm=T)
#high<-max(abs(c(dat,cis[970,2],cis[970,3])), na.rm=T)
#low<--high
muVals <- seq(low,high, length = 1000)
likVals <- sapply(muVals,
function(mu){
(sum((dat - mu)^2) /
sum((dat - mn)^2)) ^ (-n/2)
}
)
plot(muVals, likVals, type = "l", lwd=3, col="Blue", xlim=c(low,high),
ylim=c(-.1,1), ylab="Likelihood/Alpha", xlab="Values",
main=c(paste("n=",n),
"True Mean=0 True sd=1",
paste("Sample Mean=", round(mn,2), "Sample sd=", round(sd(dat),2)))
)
axis(side=4,at=seq(0,1,length=6),
labels=round(seq(0,max(density(dat)$y),length=6),2))
mtext(4, text="Density", line=2.2,cex=.8)
lines(density(dat)$x,density(dat)$y/max(density(dat)$y), lwd=2, col="Green")
lines(range(muVals[likVals>1/20]), c(1/20,1/20), col="Blue", lwd=4)
lines(cis[,2],1-cis[,1], lwd=3, col="Red")
lines(cis[,3],1-cis[,1], lwd=3, col="Red")
lines(cis[which(round(cis[,1],3)==.95),2:3],rep(.05,2),
lty=3, lwd=4, col="Red")
abline(v=mn, lty=2, lwd=2)
#abline(h=.05, lty=3, lwd=4, col="Red")
abline(h=0, lty=1, lwd=3)
abline(v=0, lty=3, lwd=1)
boxplot(dat,at=-.1,add=T, horizontal=T, boxwex=.1, col="Green")
stripchart(dat,at=-.1,add=T, pch=16, cex=1.1)
legend("topleft", legend=c("Likelihood"," Confidence Interval", "Sample Density"),
col=c("Blue","Red", "Green"), lwd=3,bty="n")
ints[cnt2,]<-cbind(range(muVals[likVals>1/20])[1],range(muVals[likVals>1/20])[2],
cis[which(round(cis[,1],3)==.95),2],cis[which(round(cis[,1],3)==.95),3])
cnt2<-cnt2+1
}
par(mar=c(5.1,4.1,4.1,2.1))
plot(0,0, type="n", ylim=c(1,nrow(ints)+.5), xlim=c(min(ints),max(ints)),
yaxt="n", ylab="Sample Size", xlab="Values")
for(i in 1:nrow(ints)){
segments(ints[i,1],i+.2,ints[i,2],i+.2, lwd=3, col="Blue")
segments(ints[i,3],i+.3,ints[i,4],i+.3, lwd=3, col="Red")
}
axis(side=2, at=seq(1.25,nrow(ints)+.25,by=1), samp.size)
mn
là một lỗi đánh máymu
, và khôngmean(dat)
. Như tôi đã nói với bạn trong các bình luận cho câu hỏi khác của bạn , điều này cần được làm rõ từ trang định nghĩa 23.