[R-es] Combinatoria
Our Utopy
ourutopy en gmail.com
Lun Mar 23 07:30:21 CET 2015
Hola Jorge, gracias por ayudarme antes de empezar. Ayer me fui a cama con
tan solo escribir el título "Ecuaciones no lineales"
Básicamente lo que voy a buscar es lo clásico, es decir, resolver cualquier
ecuación no lineal, ya sea polinómica o trascendente, con una o varias
incógnitas.
Ejemplo típico:
x^2 + y^2 = 1
y = sin x
Si me van surgiendo dudas, aquí estaré, no lo dudéis.
Por cierto Carlos, veo que las funciones *combinations* y *permutations*
del paquete *gtools* hacen lo que yo buscaba, pero si estuviese en medio
de un mar de cálculos, lo que no me hace es calcular cuantas son, me veo
obligado a buscar mis propias variables, por ejemplo el numero de
combinaciones con repetición de tres banderas tomadas de dos en dos sería:
> mCRn <- nrow(combinations(n=3, r=2, v=x, repeats=TRUE))
Sin embargo, el paquete* combinat* sí que posee la función *mCn*(4,2) que
nos da 6
No sé, lo que intento deciros es que me resulta muy chocante que un
programa tan potente como R haya construido funciones variadas para otros
temas y para combinatoria lo haya obviado, cuando las veo imprescindibles
para probabilidad.
De todas maneras me habéis ayudado muchísimo. Gracias.
Miguel
El 23 de marzo de 2015, 4:18, Jorge I Velez <jorgeivanvelez en gmail.com>
escribió:
> Hola Miguel,
> Exactamente que necesitas hacer con ecuaciones no lineales? Encontrar la
> raiz? Si este es el caso, no necesitas, en principio, cargar ningun
> paquete. Con la funcion ?optim en "base" podrias hacer lo basico.
> Saludos cordiales,
> Jorge.-
>
>
> 2015-03-23 10:22 GMT+11:00 Our Utopy <ourutopy en gmail.com>:
>
>> Ya me extrañaba a mi!
>> Mañana a primera hora miro todo lo que me comentas.
>> Ahora estoy con ecuaciones no lineales y ya veo que hay que cargar
>> librerias
>> Muchas gracias. Un saludo
>>
>> El 23 de marzo de 2015, 0:08, Carlos Ortega <cof en qualityexcellence.es>
>> escribió:
>>
>> > Hola,
>> >
>> > Por precisar un par de detalles:
>> >
>> >
>> > - Con el paquete gtools se pueden generar:
>> > - las variaciones, permutaciones, combinaciones, variaciones con
>> > repetición y combinaciones con repetición (mira el ejemplo
>> adjunto con las
>> > combinaciones con repetición).
>> > - Quedan sin cubrir las permutaciones con repetición.
>> >
>> >
>> > - Y dentro del paquete "base", sí que hay formas de calcular algunas
>>
>> > cosas de combinatoria. Mira la función "choose()" para el cálculo de
>> las
>> > combinaciones. En el ejemplo de la función incluso aparece una forma
>> de
>> > generar el triángulo de Pascal.
>> >
>> > #--------- Ejemplo de Combinaciones con repetición (gtools) -----
>> >
>> > > x <- c('rojo', 'azul', 'verde')
>> > > # Combinaciones sin repetición
>> > > combinations(n=3, r=2, v=x, repeats=FALSE)
>> > [,1] [,2]
>> > [1,] "azul" "rojo"
>> > [2,] "azul" "verde"
>> > [3,] "rojo" "verde"
>> > > # Combinaciones con repetición
>> > > combinations(n=3, r=2, v=x, repeats=TRUE)
>> > [,1] [,2]
>> > [1,] "azul" "azul"
>> > [2,] "azul" "rojo"
>> > [3,] "azul" "verde"
>> > [4,] "rojo" "rojo"
>> > [5,] "rojo" "verde"
>> > [6,] "verde" "verde"
>> >
>> > #-----------------------------------------------------------------------
>> >
>> > Saludos,
>> > Carlos Ortega
>> > www.qualityexcellence.es
>> >
>> > El 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
>> >>
>> >
>> >
>> >
>> > --
>> > 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
>>
>
>
--
Our Utopy
http://utopicmaths.blogspot.com.es/
http://financialmeth.blogspot.com.es/
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es