Um dieses Diagramm zu erstellen, habe ich Zufallsstichproben unterschiedlicher Größe aus einer Normalverteilung mit Mittelwert = 0 und sd = 1 generiert. Die Konfidenzintervalle wurden dann unter Verwendung von Alpha-Grenzwerten zwischen 0,001 und 0,999 (rote Linie) mit der Funktion t.test () berechnet. Die Profilwahrscheinlichkeit wurde unter Verwendung des Codes berechnet, unter dem ich in den online gestellten Vorlesungsunterlagen gefunden habe (ich kann ' t den Link im Moment finden Edit: es gefunden ), wird dies durch die blauen Linien dargestellt. Grüne Linien zeigen die normalisierte Dichte unter Verwendung der Funktion R density () und die Daten werden durch die Boxplots am unteren Rand jedes Diagramms angezeigt. Auf der rechten Seite ist eine Raupendiagramm der 95% -Konfidenzintervalle (rot) und 1/20 der maximalen Wahrscheinlichkeitsintervalle (blau) dargestellt.
R Code für die Profilwahrscheinlichkeit:
#mn=mean(dat)
muVals <- seq(low,high, length = 1000)
likVals <- sapply(muVals,
function(mu){
(sum((dat - mu)^2) /
sum((dat - mn)^2)) ^ (-n/2)
}
)
Meine spezifische Frage ist, ob es eine bekannte Beziehung zwischen diesen beiden Intervalltypen gibt und warum das Konfidenzintervall für alle Fälle konservativer erscheint, außer wenn n = 3 ist. Kommentare / Antworten darüber, ob meine Berechnungen gültig sind (und eine bessere Möglichkeit, dies zu tun), und die allgemeine Beziehung zwischen diesen beiden Intervalltypen sind ebenfalls erwünscht.
R-Code:
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
Ihrem Skript ist ein Tippfehler fürmu
und nichtmean(dat)
. Wie ich Ihnen in den Kommentaren zu Ihrer anderen Frage sagte , sollte dies aus den Definitionen auf Seite 23 hervorgehen.