[R-es] Combinatoria

Carlos J. Gil Bellosta cgb en datanalytics.com
Dom Mar 22 23:13:36 CET 2015


Hola, ¿qué tal?

Efectivamente, no hay demasiado soporte para combinatoria (y para
matemática simbólica, y para...). Quienes se dedican a esas cosas
siempre puede usar Sage. Puedes echarle un vistazo a

http://www.sagemath.org/doc/reference/combinat/sage/combinat/tutorial.html

Es cierto que en estadística "contar" es un problema. Pero se parece mucho más a

http://andrewgelman.com/2008/05/08/doing_the_candy/

(una pequeña historia que te recomiendo) que a aquellas historias de
las variaciones con y sin repetición de mi primero de BUP.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com




El día 22 de marzo de 2015, 22:50, Our Utopy <ourutopy en gmail.com> escribió:
> Hola amigos, muchas gracias por vuestra ayuda.
>
> Entonces veo que mi sorpresa era legítima. Por todos vuestros mails la
> conclusión es que:
>
>    - En el módulo base de R no incluye combinatoria elemental, ni siquiera
>    el número combinatorio Cm,n hay que cargar el paquete *combinat*
>    - Y para las variaciones con repetición el paquete* gtools*
>    - Y aún así no tenemos ni las combinaciones ni las permutaciones, ambas
>    con repetición.
>
>
> Pues tendremos que ponernos a ello ¿no creéis? y hacer un paquete que lo
> resuelva y que genere incluso un triángulo de Pascal y otras cuestiones del
> binomio de Newton.
> Ya sé que es matemática elemental pero repito que estoy sorprendido por
> este hecho y más porque estas *Técnicas de conteo* son imprescindibles para
> el cálculo básico de probabilidades.
>
> Seguimos en la lucha. Un saludo
>
>
> El 22 de marzo de 2015, 19:32, Francisco Rodríguez <fjroar en hotmail.com>
> escribió:
>
>> Carlos, creo que el ejemplo que mandas se refiere a las Variaciones con
>> Repetición de 3 elementos tomados de 3 en 3 y cuyo número asciende a 27
>>
>> En las Permutaciones con repetición con las observaciones se forman grupos
>> disjuntos cuya suma de cardinales es el número total, así pues puede
>> hablarse de Permutaciones con Repetición de 10 elementos tomados de 5 en 5,
>> 2 en 2 y de 3 en 3, en este caso, el número de combinaciones que sale
>> seria: PR5;3,2,3 = 10!/(5!·2!·3!)
>>
>> Este caso es el que digo que seria mas dificil de preparar y quizas si
>> requiere algo de programacion, porque el numero de grupos es variable, pero
>> a lo mejor en lo que mandas se puede introducir algun tipo de vector, en
>> todo caso lo miro mañana
>>
>>
>> Un saludo
>>
>> ------------------------------
>> Date: Sun, 22 Mar 2015 13:22:36 +0100
>> Subject: Re: [R-es] Combinatoria
>> From: cof en qualityexcellence.es
>> To: fjroar en hotmail.com
>> CC: ourutopy en gmail.com; r-help-es en r-project.org
>>
>>
>> Sí, también...
>> Para las permutaciones, n=r.
>> Y con el parámetro "repeats.allowed" controlas si son con o sin repetción:
>>
>> #----------------------
>> > #Permutaciones *con repetición*
>> > permutations(n=3, r=3, v=x, repeats.allowed=TRUE)
>>       [,1]    [,2]    [,3]
>>  [1,] "azul"  "azul"  "azul"
>>  [2,] "azul"  "azul"  "rojo"
>>  [3,] "azul"  "azul"  "verde"
>>  [4,] "azul"  "rojo"  "azul"
>>  [5,] "azul"  "rojo"  "rojo"
>>  [6,] "azul"  "rojo"  "verde"
>>  [7,] "azul"  "verde" "azul"
>>  [8,] "azul"  "verde" "rojo"
>>  [9,] "azul"  "verde" "verde"
>> [10,] "rojo"  "azul"  "azul"
>> [11,] "rojo"  "azul"  "rojo"
>> [12,] "rojo"  "azul"  "verde"
>> [13,] "rojo"  "rojo"  "azul"
>> [14,] "rojo"  "rojo"  "rojo"
>> [15,] "rojo"  "rojo"  "verde"
>> [16,] "rojo"  "verde" "azul"
>> [17,] "rojo"  "verde" "rojo"
>> [18,] "rojo"  "verde" "verde"
>> [19,] "verde" "azul"  "azul"
>> [20,] "verde" "azul"  "rojo"
>> [21,] "verde" "azul"  "verde"
>> [22,] "verde" "rojo"  "azul"
>> [23,] "verde" "rojo"  "rojo"
>> [24,] "verde" "rojo"  "verde"
>> [25,] "verde" "verde" "azul"
>> [26,] "verde" "verde" "rojo"
>> [27,] "verde" "verde" "verde"
>> > #Permutaciones *sin repetición*
>> > permutations(n=3, r=3, v=x, repeats.allowed=FALSE)
>>      [,1]    [,2]    [,3]
>> [1,] "azul"  "rojo"  "verde"
>> [2,] "azul"  "verde" "rojo"
>> [3,] "rojo"  "azul"  "verde"
>> [4,] "rojo"  "verde" "azul"
>> [5,] "verde" "azul"  "rojo"
>> [6,] "verde" "rojo"  "azul"
>> #------------------------------------
>>
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> El 22 de marzo de 2015, 12:18, Francisco Rodríguez <fjroar en hotmail.com>
>> escribió:
>>
>> Carlos y ya puestos ¿Las permutaciones con repetición, salen también de
>> aquí?
>>
>> Un saludo y gracias
>>
>> > Date: Sun, 22 Mar 2015 12:15:45 +0100
>> > From: cof en qualityexcellence.es
>>
>> > To: ourutopy en gmail.com
>> > CC: r-help-es en r-project.org
>> > Subject: Re: [R-es] Combinatoria
>> >
>> > Hola Miguel,
>> >
>> > Sí se pueden obtener las variaciones con y sin repetición en R.
>> > Eso sí están un poco escondidas...
>> >
>> > Se pueden calcular de esta forma:
>> >
>> > #----------------------
>> > > #Cargar el paquete gtools
>> > > library(gtools)
>> > > #Definir el conjunto sobre el que se hará el cálculo
>> > > x <- c('rojo', 'azul', 'verde')
>> > > #Utilizar la función "permutations()" modificando el valor de "r" y
>> > > #modificando el parámetro "repeats.allowed" dependiendo si sequieren
>> con
>> > o sin repetición
>> > > permutations(n=3, r=2, v=x, repeats.allowed=FALSE)
>> > [,1] [,2]
>> > [1,] "azul" "rojo"
>> > [2,] "azul" "verde"
>> > [3,] "rojo" "azul"
>> > [4,] "rojo" "verde"
>> > [5,] "verde" "azul"
>> > [6,] "verde" "rojo"
>> > > permutations(n=3, r=2, v=x, repeats.allowed=TRUE)
>> > [,1] [,2]
>> > [1,] "azul" "azul"
>> > [2,] "azul" "rojo"
>> > [3,] "azul" "verde"
>> > [4,] "rojo" "azul"
>> > [5,] "rojo" "rojo"
>> > [6,] "rojo" "verde"
>> > [7,] "verde" "azul"
>> > [8,] "verde" "rojo"
>> > [9,] "verde" "verde"
>> > #----------------------
>> >
>> >
>> > Saludos,
>> > Carlos Ortega
>> > www.qualityexcellence.es
>> >
>> >
>> > El 22 de marzo de 2015, 9:02, Our Utopy <ourutopy en gmail.com> escribió:
>> >
>> > > Hola de nuevo amigos, Gracias por vuestras respuestas. Un placer
>> levantarme
>> > > esta mañana y ver que alguien había tratado de ayudarme. Espero en unas
>> > > semanas poder también ser yo útil a quien lo necesite.
>> > >
>> > > Me explico de nuevo. Estoy aprendiendo y mi primera visión, antes del
>> Data
>> > > Mining y las redes neuronales a las que quiero llegar, es ir
>> solucionando
>> > > los problemas básicos además de explicarles R a mis propios alumnos en
>> > > lugar de Wiris (idóneo para secundaria) o Maxima.
>> > >
>> > > Mi problema es de combinatoria básica, quiero calcular Cm,n Pn Vm,n y
>> lo
>> > > mismo con repetición. Son cosas muy básicas de secundaria que cualquier
>> > > programa o calculadora de mano las resuelve. Supuse que R en su módulo
>> > > básico o CORE las respondería al igual que responde a logaritmos en
>> > > cualquier base, determinantes e inversas de matrices.
>> > >
>> > > Pero no, hay que instalar paquetes adicionales.
>> > >
>> > > Buscando encontré que el paquete *combinat* incluye dos de estas
>> funciones
>> > >
>> > > - *combn(m,n)*
>> > > - *permn(n)*
>> > > - *e incluso mCn(m,n)*
>> > >
>> > > N es solo que haga el cálculod e cuantas son sino que las escribe
>> todas,
>> > > por ejemplo
>> > >
>> > > > combn(4,2)
>> > > [,1] [,2] [,3] [,4] [,5] [,6]
>> > > [1,] 1 1 1 2 2 3
>> > > [2,] 2 3 4 3 4 4
>> > >
>> > > > permn(3)
>> > > [[1]]
>> > > [1] 1 2 3
>> > >
>> > > [[2]]
>> > > [1] 1 3 2
>> > >
>> > > [[3]]
>> > > [1] 3 1 2
>> > >
>> > > [[4]]
>> > > [1] 3 2 1
>> > >
>> > > [[5]]
>> > > [1] 2 3 1
>> > >
>> > > [[6]]
>> > > [1] 2 1 3
>> > >
>> > >
>> > > Y mCn las calcula, sin escribirlas:
>> > >
>> > > > nCm(4,2)
>> > > [1] 6
>> > >
>> > > Pero me chocó que NO incluyese Variaciones con y sin repetición, y
>> > > combinaciones y permutaciones con repetición. Tanto que me las calcule
>> como
>> > > que me las escriba. Al menos yo no las encuentro a pesar de ser una
>> > > cuestión muy básica en combinatoria que ayuda a calcular
>> probabilidades y
>> > > claro, ¡es que R es un programa de Estadística!
>> > >
>> > > De ahí mi pregunta al grupo.
>> > >
>> > > Si tengo que hacerme mi propia librería, pues creo que en unos días
>> seré
>> > > capaz de hacerlo. Ayer precisamente ya estuve leyendo sobre
>> construirme mis
>> > > propias funciones, pero es que me choca que no haya ninguna librería
>> entre
>> > > las 6200 del repositorio que ya lo incluya.
>> > >
>> > > Esa era mi pregunta.
>> > >
>> > > Gracias anticipadas.
>> > >
>> > > Miguel
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > El 21 de marzo de 2015, 19:35, Francisco Rodríguez <fjroar en hotmail.com
>> >
>> > > escribió:
>> > >
>> > > > En relación con lo que comenta Carlos, por ejemplo para el caso de
>> las
>> > > > Variaciones sin Repetición, puede ser instructivo
>> > > > enseñar como se construye como por ejemplo:
>> > > >
>> > > >
>> > > > VsinR <- function(m, n){
>> > > >
>> > > > return (factorial(m)/factorial(m-n))
>> > > > }
>> > > >
>> > > >
>> > > > VsinR(9,3)
>> > > >
>> > > > -------------------------
>> > > >
>> > > >
>> > > > Creo que con la función factorial que viene por defecto en R puedes
>> > > > construir siguiendo este modelo rápidadmente
>> > > > casi cualquier función de las de bachillerato. Las VconR serían m
>> elevado
>> > > > a n
>> > > >
>> > > > Quizás la única que merezca la pena construir es la de Permutaciones
>> con
>> > > > Repetición porque la parte de repetición puede tener más variedad,
>> voy a
>> > > > mirar si lo encuentro y si no una función lo puede resolver.
>> > > > PR(m; n1, ..., nk) donde n1+...+nk = m y PR(m;n1, ...,nk) = m!/(n1!
>> > > > ·...·nk!)
>> > > >
>> > > >
>> > > > Un saludo
>> > > >
>> > > >
>> > > >
>> > > >
>> > > > > Date: Sat, 21 Mar 2015 16:36:50 +0100
>> > > > > From: cgb en datanalytics.com
>> > > > > To: ourutopy en gmail.com
>> > > > > CC: r-help-es en r-project.org
>> > > > > Subject: Re: [R-es] Combinatoria
>> > > >
>> > > > >
>> > > > > Hola, ¿qué tal?
>> > > > >
>> > > > > ¿Qué quieres hacer, construir las
>> > > > > combinaciones/permutaciones/variaciones o calcular cuántas hay?
>> > > > >
>> > > > > Es improbable que encuentres funciones que resuelvan exactamente un
>> > > > > problema específico. Pero sí que podrás, con no mucho esfuerzo,
>> > > > > extender lo que hay para atacar esos problemas.
>> > > > >
>> > > > > Un saludo y suerte con R,
>> > > > >
>> > > > > Carlos J. Gil Bellosta
>> > > > > http://www.datanalytics.com
>> > > > >
>> > > > > El día 21 de marzo de 2015, 8:39, Our Utopy <ourutopy en gmail.com>
>> > > > escribió:
>> > > > > > Hola buenos días, me presento, me llamo Miguel y 'soy de' y
>> 'vivo en'
>> > > > > > Galicia.
>> > > > > > Soy profesor de secundaria (Bachillerato Adultos) y llevo 15 días
>> > > > > > estudiando R a un buen ritmo, pero todavía me faltan miles de
>> cosas.
>> > > > > >
>> > > > > > He visto que R facilita, no solo el análisis de datos y que
>> posee una
>> > > > > > potencia en cálculos estadísticos a cualquier nivel, sino gran
>> caudal
>> > > > de
>> > > > > > recursos para Data Mining, Redes Neuronales, reconocimiento de
>> > > > patrones y
>> > > > > > probablemente todo cuanto deseemos, pero ... aqui va mi primera
>> > > > > > pregunta
>> > > > > >
>> > > > > > 1. Si quiero calcular unas combinaciones, la función *combn* ó la
>> > > > *nCm* me
>> > > > > > lo resuelven
>> > > > > > 2. Si quiero permutaciones, entonces ya tengo que cargar el
>> paquete
>> > > > > > combinat
>> > > > > > 3. Pero no encuentro , y no puedo entenderlo, que no encuentre
>> una
>> > > > > > función análoga para las variaciones con y sin repetición y para
>> las
>> > > > > > permutaciones con repetición. y ya llevo varias horas buscando
>> ....
>> > > ¡!
>> > > > > > puede que ayer y hoy me encuentre algo espeso, no lo descarto.
>> > > > > >
>> > > > > > Me podríais ayudar en esta tan básica duda.
>> > > > > >
>> > > > > > Gracias
>> > > > > >
>> > > > > > [[alternative HTML version deleted]]
>> > > > > >
>> > > > > > _______________________________________________
>> > > > > > R-help-es mailing list
>> > > > > > R-help-es en r-project.org
>> > > > > > https://stat.ethz.ch/mailman/listinfo/r-help-es
>> > > > >
>> > > > > _______________________________________________
>> > > > > R-help-es mailing list
>> > > > > R-help-es en r-project.org
>> > > > > https://stat.ethz.ch/mailman/listinfo/r-help-es
>> > > >
>> > >
>> > > [[alternative HTML version deleted]]
>> > >
>> > > _______________________________________________
>> > > R-help-es mailing list
>> > > R-help-es en r-project.org
>> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
>> > >
>> >
>> >
>> >
>> > --
>> > Saludos,
>> > Carlos Ortega
>> > www.qualityexcellence.es
>> >
>> > [[alternative HTML version deleted]]
>> >
>> > _______________________________________________
>> > R-help-es mailing list
>> > R-help-es en r-project.org
>> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es