{"id":183,"date":"2015-11-04T18:50:00","date_gmt":"2015-11-05T00:50:00","guid":{"rendered":"http:\/\/naps.com.mx\/blog\/?p=183"},"modified":"2017-11-16T12:15:52","modified_gmt":"2017-11-16T18:15:52","slug":"simulacion-de-una-distribucion-discreta-usando-java-distribucion-binomial","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/simulacion-de-una-distribucion-discreta-usando-java-distribucion-binomial\/","title":{"rendered":"Simulaci\u00f3n de una distribuci\u00f3n discreta usando Java: Distribuci\u00f3n binomial"},"content":{"rendered":"<p>A continuaci\u00f3n presentamos una implementaci\u00f3n de un m\u00e9todo de generaci\u00f3n de una distribuci\u00f3n discreta, en este caso, veremos la <strong>distribuci\u00f3n binomial<\/strong>. Deseamos simular un experimento que siga una distribuci\u00f3n binomial usando un programa realizado en el lenguaje <strong>Java<\/strong>.<\/p>\n<p><!--more--><\/p>\n<p>Recordemos que un <strong>experimento binomial<\/strong> consta de una serie de <em>n<\/em> ensayos id\u00e9nticos, donde cada ensayo produce uno de dos resultados (Mendenhall W., Beaver R., Beaver B., 2008). Un ejemplo muy sencillo de un experimento binomial es lanzar una moneda al aire. Si quisi\u00e9ramos saber la cantidad de \u201csoles\u201d que obtenemos de lanzar al aire una moneda 10 veces, all\u00ed tenemos un experimento binomial, donde n=10 (los ensayos) y donde cada ensayo produce uno de dos resultados (\u00e1guila o sol).<\/p>\n<p>En el ejemplo anterior los \u201csoles\u201d ser\u00edan nuestro resultado \u201cexitoso\u201d y las \u00e1guilas el \u201cfracaso\u201d.\u00a0 Llamar\u00edamos <em>p<\/em> a la probabilidad de \u00e9xito y <em>q<\/em> a la probabilidad de fracaso. En \u00e9ste problema en particular p=.50 y q=.50 pues consideramos que existe la misma probabilidad de que caiga sol a que caiga \u00e1guila, aunque en otros experimentos no necesariamente tiene que ser as\u00ed.<\/p>\n<p>Veamos ahora el <strong>algoritmo<\/strong> que deseamos implementar.<\/p>\n<ol>\n<li>Hacer x=0, i=1.<\/li>\n<li>Si i\u2264 n ir al paso 3. En caso contrario ir al paso 5.<\/li>\n<li>Generar un n\u00famero aleatorio <em>u<sub>i<\/sub><\/em>. Si <em>u<sub>i<\/sub><\/em> \u2264 p, hacer x = x+1.<\/li>\n<li>Hacer i = i+1. Ir al paso 2.<\/li>\n<li>x es el valor generado de la variable X.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>Veamos ahora la <strong>implementaci\u00f3n en Java<\/strong>. En nuestro ejemplo deseamos simular una serie de 10 experimentos donde cada experimento consiste en lanzar al aire una moneda 5 veces y contar la cantidad de soles que salen en cada experimento.<\/p>\n<pre class=\"theme:eclipse toolbar:1 lang:java decode:true \">public class Mi_binomial {\r\n  public static int getBinomial (int n, double p){\r\n    int x=0;\r\n    int i = 1;\r\n    double ui;\r\n    while (i&lt;=n){\r\n        ui = Math.random();\r\n        if (ui &lt;= p){\r\n          x++;\r\n         }\r\n        i++;\r\n    }\r\n    return x;\r\n  }\r\n\r\n  public static void main(String[] args) {\r\n    for (int i=0; i&lt;=10; i++){\r\n       System.out.println(getBinomial(5,0.50));\r\n    }\r\n   }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>En nuestro c\u00f3digo creamos una funci\u00f3n de tipo entera llamada <em><strong>getBinomial<\/strong> <\/em>que recibe como par\u00e1metros de entrada n que representa en nuestro caso la cantidad de veces que lanzamos al aire la moneda (5 veces), y p que representa la probabilidad de \u00e9xito, en nuestro caso ser\u00eda 0.5. Puedes observar dichos valores en la llamada de la funci\u00f3n.<\/p>\n<p>&nbsp;<\/p>\n<p>Mostramos a continuaci\u00f3n una posible salida (en cada corrida los datos ser\u00e1n diferentes):<\/p>\n<p><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Salida_mi_binomial.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-184\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Salida_mi_binomial.png\" alt=\"Programa Java Binomial\" width=\"337\" height=\"225\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Salida_mi_binomial.png 337w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Salida_mi_binomial-300x200.png 300w\" sizes=\"auto, (max-width: 337px) 100vw, 337px\" \/><\/a><\/p>\n<p>En este caso observamos que en el primer experimento dice que salieron 3 soles, en el segundo 2 soles, etc. La salida sigue una distribuci\u00f3n binomial, pues si contamos los resultados se representar\u00edan de la siguiente forma:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Cantidad de soles<\/td>\n<td>N\u00famero de veces<\/td>\n<\/tr>\n<tr>\n<td>0<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>4<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Por lo que si la grafic\u00e1ramos:<\/p>\n<p><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Grafica_mi_binomial.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-185\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Grafica_mi_binomial.png\" alt=\"Grafica Binomial\" width=\"499\" height=\"338\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Grafica_mi_binomial.png 499w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2015\/11\/Grafica_mi_binomial-300x203.png 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/a><\/p>\n<p>En conclusi\u00f3n: Este sencillo ejemplo nos permite acercarnos a la programaci\u00f3n de experimentos binomiales. Muchos experimentos pr\u00e1cticos arrojan resultados similares a los de un lanzamiento de una moneda. Podemos utilizar este algoritmo para simular encuestas de preferencias, proporciones de hombres vs mujeres, proporciones de poblaciones con alg\u00fan gen relacionado con alguna enfermedad, etc., es decir, cualquier tipo de experimento que siga una distribuci\u00f3n binomial.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Referencias<\/strong><\/p>\n<ol>\n<li>Mendenhall W., Beaver R., Beaver B. (2008). <strong>Introducci\u00f3n a la probabilidad y estad\u00edstica<\/strong>. 12\u00aa Edici\u00f3n. Ed. Cengage Learning. M\u00e9xico.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A continuaci\u00f3n presentamos una implementaci\u00f3n de un m\u00e9todo de generaci\u00f3n de una distribuci\u00f3n discreta, en este caso, veremos la distribuci\u00f3n binomial. Deseamos simular un experimento que siga una distribuci\u00f3n binomial usando un programa realizado en el lenguaje Java.<\/p>\n","protected":false},"author":1,"featured_media":186,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[216],"tags":[81,82,83],"class_list":["post-183","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-simulacion-ciencias","tag-distribucion-binomial","tag-programas-java","tag-variable-aleatoria"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=183"}],"version-history":[{"count":4,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/183\/revisions"}],"predecessor-version":[{"id":190,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/183\/revisions\/190"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media\/186"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}