$30 off During Our Annual Pro Sale. View Details »

全ての確率はコイン投げに通ず

kenmatsu4
November 29, 2023

 全ての確率はコイン投げに通ず

2015/12/5
Japan.R 発表資料

様々な確率分布をベルヌーイ分布(コイン投げ)との関係性で説明をしてみるというスライドです。

Pythonバージョンのコード:
https://github.com/matsuken92/Qiita_Contents/blob/master/random_variables/random_variables.ipynb

kenmatsu4

November 29, 2023
Tweet

More Decks by kenmatsu4

Other Decks in Science

Transcript

  1. ࣗݾ঺հ!LFONBUTV ɾ'BDFCPPLϖʔδ ɹIUUQTXXXGBDFCPPLDPNNBUTVLFOCPPL ɾ5XJUUFSΞΧ΢ϯτ ɹ!LFONBUTV ɾ2JJUBͰϒϩάΛॻ͍͍ͯ·͢ʢ౷ܭɺػցֶशɺ1ZUIPO౳ʣ ɹɹɹIUUQRJJUBDPNLFONBUTV ɹɹɹʢDPOUSJCVUJPOΛ௒͑·ͨ͠ʂʣ ɾझຯ ɹɹɹόϯυͰϕʔεΛ஄͍ͨΓ͍ͯ͠·͢ɻ

    ɹɹɹओʹ౦ೆΞδΞ΁όοΫύοΫཱྀߦʹߦͬͨΓ͠·͢ ɹɹʢΧϯϘδΞɺϛϟϯϚʔɺόϯάϥσγϡɺ৽ᙜ΢Πάϧ࣏ࣗ۠FUDʣ ཱྀߦͷࣸਅIUUQNBUTVLFOKJNEPDPN TwitterΞΠίϯ
  2. http://nbviewer.ipython.org/github/bakfoo/pyconjp/blob/master/probprog3.ipynb ݁ہɼ֬཰తϓϩάϥϛϯάʹ͓͍ͯɼϓϩάϥϚ͕΍Δ͜ͱ͸ɼ  ɹw σʔλΛ༻ҙ͢Δ  ɹw ύϥϝʔλͷछྨΛܾΊɼ֬཰෼෍ΛܾΊΔ  ɹw

    ύϥϝʔλࠐΈͰࣄલ෼෍Λ਺ࣜͰද͢  ɹw ύϥϝʔλࠐΈͰ໬౓Λ਺ࣜͰද͢  ɹw .$.$αϯϓϦϯά๏ΛબͿ ͋ͱ͸ܭࢉػ͕.$.$αϯϓϦϯάΛͯ͠ɼύϥϝʔλͷਪఆ஋Λฦ͢ɽ ݁ہɼࣄલ෼෍΍໬౓ͷ֬཰෼෍Λ্खʹϞσϦϯά͢Δʹ͸ɼ ֬཰෼෍ͱͦͷ֬཰෼෍ͷؔ܎ΛΑ͘஌͍ͬͯͳ͚Ε͹ͳΒͳ͍ɽ ദ໺͞Μ!1ZDPO+1 ͳΔ΄Ͳʂ
  3. ϕϧψʔΠ෼෍ #  ϕϧψʔΠ෼෍͔ΒͷαϯϓϦϯάΛ࣮ߦ   #  ύϥϝʔλʔ   p  =  0.7

      trial_size  =  10000   set.seed(71)   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   data  <-­‐  rbern(trial_size,  p)   #  ϕϧψʔΠ෼෍ͷ֬཰෼෍   dens  <-­‐  data.frame(y=c((1-­‐p),p)*trial_size,  x=c(0,  1))   #  άϥϑඳը   ggplot()  +          layer(data=data.frame(x=data),  mapping=aes(x=x),  geom="bar",                      stat="bin",  bandwidth=0.1   )  +  layer(data=dens,  mapping=aes(x=x,  y=y),  geom="bar",                      stat="identity",  width=0.05,  fill="#777799",  alpha=0.7)   3ίʔυ ࢵɿཧ࿦తͳ֬཰ ࠇɿཚ਺͔Βੜ੒ͨ͠ώετάϥϜ
  4. ೋ߲෼෍ #  ύϥϝʔλʔ   p  =  0.7   trial_size  =

     10000   sample_size  =  30   set.seed(71)   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   gen_binom_var  <-­‐  function()  {      return(sum(rbern(sample_size,  p)))   }   result  <-­‐  rdply(trial_size,  gen_binom_var())   #  ೋ߲෼෍ͷີ౓ؔ਺   dens  <-­‐  data.frame(y=dbinom(seq(sample_size),                                          sample_size,  0.7))*trial_size   #  άϥϑඳը   ggplot()  +      layer(data=resuylt,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",      binwidth=1,  fill="#6666ee",  color="gray"   )  +  layer(data=dens,  mapping=aes(x=seq(sample_size)+.5,  y=y),            geom="line",  stat="identity",  position="identity",colour="red"      )  +  ggtitle("Bernoulli  to  Binomial.")   ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ 3ίʔυ
  5. ϙϫιϯ෼෍ ηοτճ਺ O  ˠ 㱣 ɺ̍ճ͋ͨΓ੒ޭ཰Q  ˠ 

    OQΛҰఆͱͨ࣌͠ͷ෼෍ ྫɿ๮ͷইͷνΣοΫΛߟ͑ΔɻDN෯Ͱইͷ༗ແΛ Λௐ΂ΔɻϕϧψʔΠࢼߦͷ܁Γฦ͠ ˠ ೋ߲෼෍ ˠແݶʹ෼ׂͯ͠ϙΞιϯ෼෍ɻ DN DN DN DN DN DN DN DN DN DN DN શ෦Ͱই͕̓ͭ DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN 㱣  ʹ෼ׂ
  6. ֬཰ؔ਺ ύϥϝʔλʔ ͜ͷྫͷ৔߹ɺ๮Ұຊ͋ͨΓͷইͷฏۉతͳ਺ Еɿฏۉੜىճ਺ P ( X = x )

    = e x x ! ( x = 1 , 2 , · · · , 1) ЕOQͷؔ܎͕อͨΕ͍ͯΔ  ๮̍ຊ͋ͨΓͷইͷ਺ ͷ෼෍ˠϙΞιϯ෼෍ ্ݶ͕ͳ͘ͳͬͨʂ ϙΞιϯ෼෍
  7. ϙΞιϯ෼෍ trial_size  =  5000;  width  <-­‐  1;   #  ΋ͱ΋ͱͷ໰୊ઃఆ

      p  =  0.7;  n  =  10;   np  <-­‐  p*n   #  n→∞ɺp→0ɺnp=Ұఆ     n  =  100000;  p  <-­‐  np/n   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))   }   result  <-­‐  rdply(trial_size,  gen_binom_var())   #  ϙΞιϯ෼෍ͷີ౓ؔ਺   dens  <-­‐  data.frame(y=dpois(seq(20),  np))*trial_size   #  άϥϑඳը   ggplot()  +      layer(data=result,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(20)+.5,  y=y),                            geom="line",  stat="identity",  position="identity",   colour="red"      )  +  ggtitle("Bernoulli  to  Poisson.")   ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ 3ίʔυ
  8. ਖ਼ن෼෍ ϙΞιϯ෼෍ͱͷҧ͍ DN DN DN DN DN DN DN DN

    DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN DN ʜ DN DN DN DN DN DN DN DN DN DN ˠ㱣DN DN DN DN DN DN DN DN DN DN Ԇʑͱ৳͹͢
  9. ਖ਼ن෼෍ #  ύϥϝʔλʔ   n  <-­‐  10000;  p  <-­‐  0.7;

      trial_size  =  10000   width=10   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))   }   result  <-­‐  rdply(trial_size,  gen_binom_var())   #  ਖ਼ن෼෍ͷີ౓ؔ਺   dens  <-­‐  data.frame(y=dnorm(seq(6800,7200),  mean=n*p,                                                          sd=sqrt(n*p*(1-­‐p)))*trial_size*width)   #  άϥϑඳը   ggplot()  +      layer(data=result,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(6800,7200),  y=y),                            geom="line",  stat="identity",  position="identity",                            colour="red")  +  ggtitle("Bernoulli  to  Normal.")   3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒
  10. ඪ४ਖ਼ن෼෍ #  ύϥϝʔλʔ   n  <-­‐  10000;  p  <-­‐  0.7

      trial_size  =  30000   width=0.18   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))   }   result  <-­‐  rdply(trial_size,  gen_binom_var())   m  <-­‐  mean(result$V1);  sd  <-­‐  sd(result$V1);   result  <-­‐  (result  -­‐  m)/sd   #  ඪ४ਖ਼ن෼෍ͷີ౓ؔ਺   dens  <-­‐  data.frame(y=dnorm(seq(-­‐4,4,0.05),  mean=0,                                                          sd=1)*trial_size*width)   #  άϥϑඳը   ggplot()  +      layer(data=result,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(-­‐4,4,0.05),  y=y),                            geom="line",  stat="identity",  position=“identity",                          colour="red"      )  +  ggtitle("Bernoulli  to  Standard  Normal.")   3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒
  11. ฏۉΛʹͣΒ͢ Oճ࣮ࢪ ίΠϯ౤͛ දͷ֬཰Q Oˠ㱣 ΧΠೋ৐෼෍ ฏۉΛʹͣΒ͢ ඪ४ภࠩΛʹ ॖΊΔ ฏۉΛʹͣΒ͢

    Lͷͱ͖ ೋ৐ͨ͠ͱ͜Ζ ʹੵΜͰ͍͘ Lͷͱ͖ Lͭ αϯϓϦϯά͢Δ Lͭͷ௕͞Λ ଍ͨ͠΋ͷΛ ϓϩοτ͢Δ
  12. ΧΠೋ৐෼෍ #  ύϥϝʔλʔ   p  <-­‐  0.7;  n  <-­‐  1000;

      trial_size  <-­‐  100000;  width  <-­‐  0.3;   df  <-­‐  3   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒(3·Θ͠)   gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))   }   gen_chisq_var  <-­‐  function()  {      result  <-­‐  rdply(trial_size,  gen_binom_var())      return(((result$V1  -­‐  mean(result$V1))/sd(result$V1))**2)   }   #  ࣗ༝౓dfͷ෼͚ͩੜ੒͢Δ   result  <-­‐  rlply(df,  gen_chisq_var(),.progress  =  "text")   res  <-­‐  data.frame(x=result[[1]]  +  result[[2]]  +  result[[3]])   #  ΧΠೋ৐෼෍ͷີ౓ؔ਺(ࣗ༝౓=3)   xx  <-­‐  seq(0,20,0.1)   dens  <-­‐  data.frame(y=dchisq(x=xx,  df=df)*trial_size*width)   #  άϥϑඳը   ggplot()  +  layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                                    binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=xx,  y=y),                            geom="line",  stat="identity",  position="identity",                                      colour="blue"    )  +  ggtitle("Bernoulli  to  Chisquare")   3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒
  13. ࢦ਺෼෍ ϙΞιϯ෼෍͕୯Ґ௕ʢ΋͘͠͸୯Ґ࣌ؒʣʹฏۉ Կճੜى͢Δ͔ɺΛද͢෼෍Ͱ͕͋ͬͨɺಉ͡ࣄ৅ Λҧ͏֯౓Ͱଊ͑௚ͨ͠ͷ͕ࢦ਺෼෍ɻ DN DN DN DN DN DN

    DN DN DN DN DN શ෦Ͱই͕̓ͭ ϙΞιϯ෼෍తߟ͑ํ ࢦ਺෼෍తߟ͑ํ ࣍ൃੜ͢Δ·ͰʹɺͲͷ͘Β͍ͷڑ཭ ࣌ؒ ͔
  14. trial_size  =  7000;  width  <-­‐  .01;   #  ΋ͱ΋ͱͷ໰୊ઃఆ  

    p  =  0.7;  n  =  10;  np  <-­‐  p*n;     #  n→∞ɺp→0ɺnp=Ұఆ     n  =  10000;  p  <-­‐  np/n   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   gen_exp_var  <-­‐  function()  {      cnt  <-­‐  0      while  (TRUE)  {          cnt  <-­‐  cnt  +  1          if  (rbern(1,  p)==1){              return(cnt)    #  1͕ग़ͨΒͦΕ͕Կճ໨͔Λฦ͢          }      }   }   data  <-­‐  data.frame(x=rdply(trial_size,  gen_exp_var())/n)   names(data)  <-­‐  c("n",  "x")   #  ࢦ਺෼෍ͷີ౓ؔ਺   dens  <-­‐  data.frame(y=dexp(seq(0,  1.5,  0.1),  np)*trial_size*width)   ggplot()  +      layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )    +  layer(data=dens,  mapping=aes(x=seq(0,  1.5,  0.1),  y=y),                              geom="line",  stat="identity",  position="identity",  colour="red"    )  +  ggtitle("Bernoulli  to  Exponential.") 3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ ࢦ਺෼෍
  15. trial_size  =  7000;  width  <-­‐  .035;   #  ΋ͱ΋ͱͷ໰୊ઃఆ  

    p  =  0.7;  n  =  10;  np  <-­‐  p*n;   #  n→∞ɺp→0ɺnp=Ұఆ     n  =  10000;  p  <-­‐  np/n;  alpha  <-­‐  5   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   get_interval  <-­‐  function(){      cnt  <-­‐  0      while  (TRUE)  {          cnt  <-­‐  cnt  +  1          if  (rbern(1,  p)==1){  return(cnt)  }      }   }   gen_exp_var  <-­‐  function()  {      data  <-­‐  data.frame(x=rdply(trial_size,  get_interval())/n)      names(data)  <-­‐  c("n",  "x")      return(data)   }   result  <-­‐  rlply(alpha,  gen_exp_var())   data  <-­‐  data.frame(x=result[[1]]$x  +  result[[2]]$x  +  result[[3]]$x  +  result[[4]]$x  +   result[[5]]$x)   #  ΨϯϚ෼෍ͷີ౓ؔ਺   dens  <-­‐  data.frame(y=dgamma(seq(0,  3,.01),  shape=alpha,  rate=np)*trial_size*width)   ggplot()  +      layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(0,3,.01),  y=y),                              geom="line",  stat="identity",  position="identity",  colour="red"      )  +  ggtitle("Bernoulli  to  Gamma") 3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ ΨϯϚ෼෍
  16. ٯΨϯϚ෼෍ ֬཰ີ౓ؔ਺ ύϥϝʔλʔ f(x, ↵, ) = ↵ (↵) x

    (↵+1) exp ✓ x ◆ (0  x < 1) ୯Ґ௕ʢ࣌ؒʣ͋ͨΓЌճൃੜ͢Δࢦ਺෼෍ͷЋݸͷ࿨ͷ ֬཰෼෍Λߟ͑ͨ࣌ɺΨϯϚ෼෍ͱͳΔ Xi ⇠ Exp( ) Z = ↵ X i=1 Xi ⇠ (↵, ) 1/Z ⇠ IG(↵, ) ͜ͷ࣌ɺ;ͷٯ਺͕ै͏෼෍ΛٯΨϯϚ෼෍ͱݴ͏ɻ
  17. trial_size  =  7000;  width  <-­‐  .;   #  ΋ͱ΋ͱͷ໰୊ઃఆ  

    p  =  0.7;  n  =  10;  np  <-­‐  p*n;   #  n→∞ɺp→0ɺnp=Ұఆ     n  =  10000;  p  <-­‐  np/n;  alpha  <-­‐  5   #  ϕϧψʔΠ෼෍ʹै͏ཚ਺ੜ੒   get_interval  <-­‐  function(){      cnt  <-­‐  0      while  (TRUE)  {          cnt  <-­‐  cnt  +  1          if  (rbern(1,  p)==1){  return(cnt)  }      }   }   gen_exp_var  <-­‐  function()  {      data  <-­‐  data.frame(x=rdply(trial_size,  get_interval())/n)      names(data)  <-­‐  c("n",  "x")      return(data)   }   result  <-­‐  rlply(alpha,  gen_exp_var())   data  <-­‐  data.frame(x=1/(result[[1]]$x  +  result[[2]]$x  +  result[[3]]$x  +                                                    result[[4]]$x  +  result[[5]]$x))   #  ٯΨϯϚ෼෍ͷີ౓ؔ਺   dens  <-­‐  data.frame(y=dinvgamma(seq(0,  23,.01),  shape=5,  rate=1/np)*trial_size*width)   ggplot()  +      layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(0,3,.01),  y=y),                              geom="line",  stat="identity",  position="identity",  colour="red"      )  +  ggtitle("Bernoulli  to  Inversegamma") 3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ ٯΨϯϚ෼෍
  18. ඪ४Ұ༷෼෍ ίΠϯ౤͛ දͷ֬཰Q Rճ࣮ࢪ ࢼߦ݁ՌΛ֤ܻʹׂΓ౰ͯ ද ཪ ද ཪ ද

    ཪ ճ໨ ճ໨ Rճ໨ ˞΋ͬͱޮ཰ͷྑ͍΍Γํ΋͋Δͱࢥ͍·͕͢෼͔Γ΍͢͞ͷͨΊʜ Z = x1(1 / 2)1 + x2(1 / 2)2 + · · · + xq(1 / 2)q
  19. width  <-­‐  0.02   p  <-­‐  0.5;   sample_size  <-­‐

     1000   trial_size  <-­‐  100000   gen_unif_rand  <-­‐  function()  {      #  sample_sizeܻͷ2ਐগ਺ΛϕϧψʔΠ෼෍ʹ      #  ै͏ཚ਺͔Βੜ੒      return  (sum(rbern(sample_size,  p)  *  (rep(1/2,  sample_size)                        **  seq(sample_size))))   }   gen_rand  <-­‐  function(){          return(  rdply(trial_size,  gen_unif_rand())  )   }   system.time(res  <-­‐  gen_rand())   ggplot()  +      layer(data=res,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  ggtitle("Bernoulli  to  Standard  Uniform")   3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ ඪ४Ұ༷෼෍
  20. ֬཰ີ౓ؔ਺ ύϥϝʔλʔ BɿԼݶ Cɿ্ݶ f(x, a, b) = ⇢ (b

    a) 1 (a  x  b) 0 (otherwise) B͔ΒCͷؒͰ͸౳֬཰Ͱൃੜ͢ΔΑ͏ͳݱ৅Λ ද͢෼෍ Ұ༷෼෍
  21. a  <-­‐  5   b  <-­‐  8;   width  <-­‐

     0.05   p  <-­‐  0.5   sample_size  <-­‐  1000   trial_size  <-­‐  500000   gen_unif_rand  <-­‐  function()  {      #  sample_sizeܻͷ2ਐগ਺ΛϕϧψʔΠ෼෍ʹ      #  ै͏ཚ਺͔Βੜ੒      return  (sum(rbern(sample_size,  p)  *  (rep(1/2,  sample_size)                        **  seq(sample_size))))   }   gen_rand  <-­‐  function(){          return(  rdply(trial_size,  gen_unif_rand())  )   }   system.time(res  <-­‐  gen_rand())   res$V1  <-­‐  res$V1  *  (b-­‐a)  +  a   ggplot()  +    layer(data=res,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  ggtitle("Bernoulli  to  Uniform")  +  xlim(4,9) 3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ Ұ༷෼෍
  22. ϕʔλ෼෍ ֬཰ີ౓ؔ਺ ύϥϝʔλʔ Ћɿฒ΂ସ͑ͨ͋ͱͷαϯϓϦϯά͢Δϙδγϣϯ Ќɿಉ͘͡ϙδγϣϯ͕ͩɺޙΖ͔Β਺͑ͨͱ͖ͷ΋ͷ f ( x, ↵, )

    = 1 B ( ↵, )x ↵ 1(1 x ) 1 (0 < x < 1) ಠཱʹඪ४Ұ༷෼෍ʹै͏ Ћ Ќ ݸͷ֬཰ม਺ Λେ͖͞ͷॱʹฒ΂ସ͑ͨͱ͖ɺখ͍͞ํ͔Β Ћ൪Ίʢେ͖͍ํ͔Β͸Ќ൪໨ʣͷ֬཰ม਺9ͷ෼ ෍͕ϕʔλ෼෍# Ћ Ќ ͱͳΔɻ ˠ# ɾ ͸ϕʔλؔ਺
  23. width  <-­‐  0.03;  p  <-­‐  0.5   digits_length  <-­‐  30;

     set_size  <-­‐  3   trial_size        <-­‐  30000   gen_unif_rand  <-­‐  function()  {      #  digits_lengthܻͷ2ਐগ਺ΛϕϧψʔΠ෼෍      #  ʹै͏ཚ਺͔Βੜ੒      return  (sum(rbern(digits_length,  p)  *        (rep(1/2,  digits_length)  **          seq(digits_length))))   }   gen_rand  <-­‐  function(){          return(  rdply(set_size,  gen_unif_rand())$V1  )   }   unif_dataset  <-­‐  rlply(trial_size,  gen_rand,  .progress='text')   p  <-­‐  ceiling(set_size  *  0.5);  q  <-­‐  set_size  -­‐  p  +  1   get_nth_data  <-­‐  function(a){  return(a[order(a)][p])  }   disp_data  <-­‐  data.frame(lapply(unif_dataset,  get_nth_data))   names(disp_data)  <-­‐  seq(length(disp_data));  disp_data  <-­‐  data.frame(t(disp_data))   names(disp_data)  <-­‐  "V1"   x_range  <-­‐  seq(0,  1,  0.001)   dens  <-­‐  data.frame(y=dbeta(x_range,  p,  q)*trial_size*width)   ggplot()  +      layer(data=disp_data,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=x_range,  y=y),                            geom="line",  stat="identity",  position="identity",  colour="red"      )  +  ggtitle("Bernoulli  to  Beta")   3ίʔυ ੺ͷۂઢɿཧ࿦తͳ֬཰ ώετάϥϜɿཚ਺͔Βੜ੒ ϕʔλ෼෍