n<-20 #pocet hodu n1<-5 #pocet licu #definujeme si verohodnostni funkci verohodnost<-function(theta){ a<-theta^n1*(1-theta)^(n-n1) return(a)} curve(verohodnost,0,1,xlab=expression(theta),ylab="verohodnsot", main="Verohodnost") #graf verohodnosti abline(v=n1/n,col=2) #pridame bod maxima (maximalne verohodny odhad) alpha<-100 #parametry apriorniho beta rozdeleni beta<-100 #parametry apriorniho beta rozdeleni curve(dbeta(x,alpha, beta),0,1, ylim=c(0,12), xlab=expression(theta), main="Apriorni a aposteriorni rozdeleni") curve(dbeta(x,alpha+n1, beta+n-n1),0,1, col=2, xlab=expression(theta), add=T) legend("topright", legend=c("apriorni","aposteriorni"),col=1:2,lty=1) # bodove odhady: (alpha+n1)/(alpha+beta+n) # aposteriorni stredni hodnota (alpha+n1-1/3)/(alpha+beta+n-2/3) # priblizny aposteriorni median (alpha+n1-1)/(alpha+beta+n-2) # aposteriorni modus # 95% verohodnostni intervaly: c(qbeta(0.025,alpha+n1,beta+n-n1),qbeta(0.975,alpha+n1,beta+n-n1)) # equal-tail interval M<-(alpha+n1-1)/(alpha+beta+n-2) #aposteriorni modus H<-dbeta(M,alpha+n1,beta+n-n1) #hodnota hustoty v aposteriornim modu #definujeme si funkci, ktera pro danou hodnotu c spocita prislusnou spolehlivost-0.95 spolehlivost<-function(c){ f<-function(x){ #pomocna funkce pro hledani HPD intervalu pro dane c f<-dbeta(x,alpha+n1, beta+n-n1)-c } a<-uniroot(f,c(0,M))$root b<-uniroot(f,c(M,1))$root spolehlivost<-pbeta(b,alpha+n1,beta+n-n1)-pbeta(a,alpha+n1, beta+n-n1)-0.95 return(spolehlivost)} C=uniroot(spolehlivost, c(0,H))$root #vysledna hodnota c f<-function(x){ f<-dbeta(x,alpha+n1, beta+n-n1)-C } a<-uniroot(f,c(0,M))$root b<-uniroot(f,c(M,1))$root c(a,b) # highest posterior density interval qbeta(0.975,alpha+n1,beta+n-n1)-qbeta(0.025,alpha+n1,beta+n-n1) #sirka equal-tail intervalu b-a #sirka HPD intervalu # predikce budouciho pozorovani: p0<-(alpha+n-n1)/(alpha+beta+n) #predikce rubu p1<-(alpha+n1)/(alpha+beta+n) #predikce lice c(p0,p1) plot(c(p0,p1)~c(0,1),ylim=c(0,1),type="h", xlab="x_{n+1}", ylab="pravdepodobnost") abline(h=0.5,col=3) ############### # MC simulace # ############### #priklad na vypocet aposteriorni stedni hodnoty beta rozdeleni theta<-rbeta(100000,alpha, beta) In<-mean(verohodnost(theta)) Jn<-mean(verohodnost(theta)*theta) Jn/In #aposteriorni stredni hodnota ziskana pomoci simulaci f<-function(x){ f<-verohodnost(x)*dbeta(x,alpha, beta) } g<-function(x){ g<-x*verohodnost(x)*dbeta(x,alpha, beta) } integrate(g,0,1)$val/integrate(f,0,1)$val #aposteriorni stredni hodnota ziskana pomoci numerickeho integrovani