Original por https://simplystatistics.org/2017/08/08/code-for-my-educational-gifs/
library("rafalib")
library("animation")
set.seed(2)
prev <- 1/20
acc <- 0.90
N <- 20; M <- 50
N_sick <- round(N*M*prev)
x<-sample(c(rep(1, N_sick), rep(0, N*M - N_sick)))
cols <- c("grey","red")
people <- expand.grid(1:M,N:1)
people2 <- expand.grid(1:round(M/2),N:(round(N/2)+1))
cols1 <- cols[x+1]
cols2 <- rep(NA, nrow(people2))
count2 <- 1
cols3 <- rep(NA, nrow(people2))
count3 <- 1
i <- 1
maxCount <- nrow(people2) + 1
saveGIF({
while(count2<=maxCount & count3<=maxCount){
test <- sample(100,1)
min <- round(100*acc)
rafalib::mypar()
layout(matrix(c(1,2,1,3),2,2), heights = c(1.75,1))
plot(people, col=cols1, pch=16, xaxt="n", yaxt="n", xlab="", ylab="",
main=paste0("Population: ",round(mean(x)*100),"% are red. ",
"Test accuracy is ", round(acc*100),"%"))
if(test>min){
axis(side=1, M/2, paste("Test",i,"Wrong"), col="red", tick=FALSE,
cex.axis=3,line=1)
} else{
axis(side=1, M/2, paste("Test",i,"Right"), col="black", tick=FALSE,
cex.axis=2,line=1)
}
points(people[i,], pch=1, cex=1.5)
if(all(is.na(cols2))){
plot(people2, type="n", pch=16, xaxt="n", yaxt="n", xlab="", ylab="",
main="Tested Positive")
} else{
plot(people2, col=cols2, pch=16, xaxt="n", yaxt="n", xlab="", ylab="",
main=paste0("Tested Positive: ",
round(mean(cols2=="red",na.rm=TRUE)*100),"% are red"))
}
if(all(is.na(cols3))){
plot(people2, type="n", pch=16, xaxt="n", yaxt="n", xlab="", ylab="",
main="Tested Negative")
} else{
plot(people2, col=cols3, pch=16, xaxt="n", yaxt="n", xlab="", ylab="",
main=paste0("Tested Negative: ",
round(mean(cols3=="red",na.rm=TRUE)*100,1),
"% are red"))
}
outcome <- ifelse(x[i]==1, as.numeric(test<=min), as.numeric(test>min))
if(outcome==0) {
cols3[count3] <- cols1[i]
count3<-count3+1
} else {
cols2[count2] <- cols1[i]
count2<-count2+1
}
i<-i+1
}
},'bayes.gif', interval = .1)
## Executing:
## convert -loop 0 -delay 10 Rplot1.png Rplot2.png Rplot3.png
## Rplot4.png Rplot5.png Rplot6.png Rplot7.png Rplot8.png
## Rplot9.png Rplot10.png Rplot11.png Rplot12.png Rplot13.png
## Rplot14.png Rplot15.png Rplot16.png Rplot17.png Rplot18.png
## Rplot19.png Rplot20.png Rplot21.png Rplot22.png Rplot23.png
## Rplot24.png Rplot25.png Rplot26.png Rplot27.png Rplot28.png
## Rplot29.png Rplot30.png Rplot31.png Rplot32.png Rplot33.png
## Rplot34.png Rplot35.png Rplot36.png Rplot37.png Rplot38.png
## Rplot39.png Rplot40.png Rplot41.png Rplot42.png Rplot43.png
## Rplot44.png Rplot45.png Rplot46.png Rplot47.png Rplot48.png
## Rplot49.png Rplot50.png Rplot51.png Rplot52.png Rplot53.png
## Rplot54.png Rplot55.png Rplot56.png Rplot57.png Rplot58.png
## Rplot59.png Rplot60.png Rplot61.png Rplot62.png Rplot63.png
## Rplot64.png Rplot65.png Rplot66.png Rplot67.png Rplot68.png
## Rplot69.png Rplot70.png Rplot71.png Rplot72.png Rplot73.png
## Rplot74.png Rplot75.png Rplot76.png Rplot77.png Rplot78.png
## Rplot79.png Rplot80.png Rplot81.png Rplot82.png Rplot83.png
## Rplot84.png Rplot85.png Rplot86.png Rplot87.png Rplot88.png
## Rplot89.png Rplot90.png Rplot91.png Rplot92.png Rplot93.png
## Rplot94.png Rplot95.png Rplot96.png Rplot97.png Rplot98.png
## Rplot99.png Rplot100.png Rplot101.png Rplot102.png
## Rplot103.png Rplot104.png Rplot105.png Rplot106.png
## Rplot107.png Rplot108.png Rplot109.png Rplot110.png
## Rplot111.png Rplot112.png Rplot113.png Rplot114.png
## Rplot115.png Rplot116.png Rplot117.png Rplot118.png
## Rplot119.png Rplot120.png Rplot121.png Rplot122.png
## Rplot123.png Rplot124.png Rplot125.png Rplot126.png
## Rplot127.png Rplot128.png Rplot129.png Rplot130.png
## Rplot131.png Rplot132.png Rplot133.png Rplot134.png
## Rplot135.png Rplot136.png Rplot137.png Rplot138.png
## Rplot139.png Rplot140.png Rplot141.png Rplot142.png
## Rplot143.png Rplot144.png Rplot145.png Rplot146.png
## Rplot147.png Rplot148.png Rplot149.png Rplot150.png
## Rplot151.png Rplot152.png Rplot153.png Rplot154.png
## Rplot155.png Rplot156.png Rplot157.png Rplot158.png
## Rplot159.png Rplot160.png Rplot161.png Rplot162.png
## Rplot163.png Rplot164.png Rplot165.png Rplot166.png
## Rplot167.png Rplot168.png Rplot169.png Rplot170.png
## Rplot171.png Rplot172.png Rplot173.png Rplot174.png
## Rplot175.png Rplot176.png Rplot177.png Rplot178.png
## Rplot179.png Rplot180.png Rplot181.png Rplot182.png
## Rplot183.png Rplot184.png Rplot185.png Rplot186.png
## Rplot187.png Rplot188.png Rplot189.png Rplot190.png
## Rplot191.png Rplot192.png Rplot193.png Rplot194.png
## Rplot195.png Rplot196.png Rplot197.png Rplot198.png
## Rplot199.png Rplot200.png Rplot201.png Rplot202.png
## Rplot203.png Rplot204.png Rplot205.png Rplot206.png
## Rplot207.png Rplot208.png Rplot209.png Rplot210.png
## Rplot211.png Rplot212.png Rplot213.png Rplot214.png
## Rplot215.png Rplot216.png Rplot217.png Rplot218.png
## Rplot219.png Rplot220.png Rplot221.png Rplot222.png
## Rplot223.png Rplot224.png Rplot225.png Rplot226.png
## Rplot227.png Rplot228.png Rplot229.png Rplot230.png
## Rplot231.png Rplot232.png Rplot233.png Rplot234.png
## Rplot235.png Rplot236.png Rplot237.png Rplot238.png
## Rplot239.png Rplot240.png Rplot241.png Rplot242.png
## Rplot243.png Rplot244.png Rplot245.png Rplot246.png
## Rplot247.png Rplot248.png Rplot249.png Rplot250.png
## Rplot251.png Rplot252.png Rplot253.png Rplot254.png
## Rplot255.png Rplot256.png Rplot257.png Rplot258.png
## Rplot259.png Rplot260.png Rplot261.png Rplot262.png
## Rplot263.png Rplot264.png Rplot265.png Rplot266.png
## Rplot267.png Rplot268.png Rplot269.png Rplot270.png
## Rplot271.png Rplot272.png Rplot273.png Rplot274.png
## Rplot275.png Rplot276.png Rplot277.png Rplot278.png
## Rplot279.png Rplot280.png Rplot281.png Rplot282.png
## Rplot283.png Rplot284.png Rplot285.png Rplot286.png
## Rplot287.png Rplot288.png Rplot289.png Rplot290.png
## Rplot291.png Rplot292.png Rplot293.png Rplot294.png
## Rplot295.png Rplot296.png Rplot297.png Rplot298.png
## Rplot299.png Rplot300.png Rplot301.png Rplot302.png
## Rplot303.png Rplot304.png 'bayes.gif'
## Output at: bayes.gif
## [1] TRUE