Notas de Clase 2020.pdf

                   

Views 89 Downloads 35 File size 10MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

  











        









   







  





 

 





 

















 #  $%& &

       



   ! "! 

1

INTRODUCCIÓN A LA ESTADÍSTICA COMPUTACIONAL APLICACIONES CON EL SOFTWARE ESTADÍSTICO R

+

ELMER RODRÍGUEZ STEVEZ 1 Maestría en Estadística Aplicada Universidad del Norte

e-mail: [email protected]

Barranquilla – Colombia 2020

1 E. Rodríguez Stevez. Estas notas de clase cubren una pequeña parte en el manejo del software estadístico R a través de la estadística descriptiva e inferencial, nociones de programación en R, diseño de gráficos estadísticos fundamentales y avanzados, simulación estadística y diseño de aplicaciones web interactivas. Existe una amplia bibliografía en todos los campos del saber estadístico (la mayoría en inglés) sobre el manejo del R y sus aplicaciones. La reproducción de estas notas es libre para alumnos de la Maestría en Estadística Aplicada para su uso privado. Toda otra manipulación requiere permiso expreso del autor. 2 Logo Imágenes. https://www.r-project.org/logo/ https://rstudio.com/about/logos/

2

Tabla de Contenido UNIDAD 1 ............................................................................................................................................... 5 1.1. Breve historia del Software Estadístico R y Preliminares ......................................................... 5 1.1.1. ¿Qué es R?............................................................................................................................ 5 1.1.2. Instalando R en tu computador paso a paso ........................................................................... 7 1.1.3. Otras interfaces de trabajo del Software R............................................................................. 8 1.1.4. Antes de empezar a trabajar con R: Seleccionando un directorio de trabajo....................... 9 1.1.5. Fuentes o documentación adicional acerca del manejo de R y sus últimas actualizaciones .... 9 1.1.6. Ayudas, recursos y cursos interactivos gratuitos.................................................................. 10 1.2. Empezando R por primera vez ................................................................................................. 11 1.2.1. Interfaz............................................................................................................................... 11 1.2.2. Vista Inicial ........................................................................................................................... 11 1.2.3. Pasos iniciales ..................................................................................................................... 13 1.2.3.1. Ayuda y documentación .................................................................................................... 13 1.2.3.2. Demostraciones de las funciones de R .............................................................................. 14 1.2.3.3. Bibliotecas en R ................................................................................................................ 14 1.2.3.4. Instalando paquetes .......................................................................................................... 15 1.2.3.5. Ver y modificar datos ya existentes.................................................................................... 17 1.2.3.6. Nombre de las variables en un conjunto e datos ................................................................ 17 1.2.3.7. Conjunto de datos que se encuentran cargados en R ........................................................ 18 1.2.3.8. Ver y borrar objetos que se han creado en una sección ..................................................... 18 1.3. LA MATEMÁTICAS EN R.......................................................................................................... 19 1.3.1. R como una calculadora básica ........................................................................................... 19 1.3.2. R como una calculadora científica ........................................................................................ 20 1.3.3. Parte Entera y módulo ........................................................................................................ 21 1.3.4. Redondeando decimales a enteros .................................................................................... 22 1.3.5. Resumen de los operadores básicos .................................................................................... 22 1.4. VECTORES EN R...................................................................................................................... 23 1.4.1. Creando o generando un vector numérico o de caracteres ................................................... 23 1.4.1.1. Vectores numéricos y asignaciones................................................................................... 23 1.4.1.2. Generando vectores de una secuencia aritmética .............................................................. 24 1.4.1.3. Generando vectores mediante ecuaciones ........................................................................ 24 1.4.1.4. Generando vectores de caracteres .................................................................................... 25 1.4.1.5. Generando vectores aleatorios .......................................................................................... 26 1.4.1.6. Nombrando los elementos dentro de un vector .................................................................. 27 1.4.1.7. Ordenar un vector y seleccionar un elemento de un vector ................................................ 27 1.4.1.8. La función “which” aplicada a vectores .............................................................................. 28 1.4.1.9. Vectores aplicados en funciones ....................................................................................... 29 1.4.1.10. Vectores recortados (“Trimming vectors”) usando subscritos negativos............................ 30 1.4.2. La función Sample................................................................................................................ 31 1.5. MATRICES EN R........................................................................................................................ 34 1.5.1. Las matrices y sus operaciones............................................................................................ 34 1.5.2. Etiquetando las filas y columnas de una matriz..................................................................... 36 1.5.3. Cálculos sobre filas y columnas de matrices ......................................................................... 37 1.5.4. Operaciones básicas ............................................................................................................ 37 1.5.5. Suma y resta de matrices ..................................................................................................... 38 1.5.6. Multiplicación de matrices..................................................................................................... 38 1.5.7. Determinante de una matriz................................................................................................. 38 1.5.8. Inversa de matrices .............................................................................................................. 39 1.5.9. Descomposición espectral de una matriz .............................................................................. 40 1.5.10. Las funciones rbind y cbind ................................................................................................ 41 1.5.11. Matriz diagonal ................................................................................................................... 43

3 1.6 TABLAS DE DATOS (Dataframes) + TIBBLES ......................................................................... 46 1.6.1. Importando Dataframes y análisis numérico .......................................................................... 46 1.6.2. Subscritos e índices para Dataframes................................................................................... 48 1.6.3. Ordenando Dataframes ........................................................................................................ 50 1.6.4. Usando condicionales lógicos para seleccionar filas de una tabla de datos ........................... 51 1.6.5. Otra clase de extracciones para una tabla de datos .............................................................. 52 1.6.6. Omitiendo filas que contengas valores faltantes, NA ............................................................. 54 1.6.7. Creando una tabla de datos (Dataframes)............................................................................. 55 1.6.8. Usando la función match en Dataframes............................................................................... 56 1.7. PROGRAMANDO CON R........................................................................................................... 58 1.7.1. Motivación............................................................................................................................ 58 1.7.2. Componentes básicos de un programa ................................................................................. 58 1.7.3. Bibliografía de apoyo a la programación ............................................................................... 59 1.7.4. ¿cómo construir e invocar una función? ................................................................................ 59 1.7.5. Notas importantes para tener en cuenta al momento de crear una función ........................... 61 1.7.6. Tipos de símbolos en el interior de una función ..................................................................... 61 1.7.7. Estructuras de control........................................................................................................... 62 1.7.8. Estructuras de repetición, bucles o loops definidas e indefinidas .......................................... 66 1.7.7. Programación eficiente ......................................................................................................... 69

UNIDAD 2 ............................................................................................................................................. 71 PROGRAMACIÓN DE GRÁFICOS CON R ........................................................................................ 71 UNIDAD 3 ........................................................................................................................................... 114 SIMULACIONES EN R .................................................................................................................... 114 UNIDAD 4 ........................................................................................................................................... 128 ANÁLISIS E INTERPRETACIÓN DE ALGUNOS TOPICOS DE ESTADÍSTICA INFERENCIAL Y REGRESIÓN....................................................................................................................................... 128 UNIDAD 5 ........................................................................................................................................... 146 EL MÉTODO BOOTSTRAP Y SUS APLICACIONES ....................................................................... 146 UNIDAD 6 ........................................................................................................................................... 164 Generación de aplicaciones web interactivas con Shiny ................................................................... 164

4

Webgrafía asociada a estas notas: 

R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.



Introducción a R— R Development Core Team—Traducción de Andrés González y Silvia González. http://cran.r-project.org/doc/contrib/R-intro-1.1.0-espanol.1.pdf



R para principiantes— Emmanuel Paradis—Traducción de Jorge A. Ahumada. http://cran.r-project.org/doc/contrib/rdebuts_es.pdf



Gráficos Estadísticos con R — Juan Carlos Correa y Nefi González. Universidad Nacional. Sede Medellín. Año 2002. - http://cran.r-project.org/doc/contrib/grafi3.pdf



R news and tutorials contributed by (573) R bloggers - http://www.r-bloggers.com/



R, estadística y tratamiento masivo de datos (alternativa a SAS, ACL e IDEA) http://www.marblestation.com/?p=794



Quick-R. Accesing The power of R - http://www.statmethods.net/



Programming in R - http://zoonek2.free.fr/UNIX/48_R/02.html



R plot and graph gallery - http://www.sr.bham.ac.uk/~ajrs/R/r-gallery.html



R graph gallery: A collection - http://rgraphgallery.blogspot.com/2013/04/rg-plotting-boxplot-andhistogram.html



Fundamentos estadísticos para investigación. Introducción a R. Antonio Maurandi López, Laura del Río Alonso y Carlos Balsaobre Rodríguez. https://www.researchgate.net/publication/275349583_Fundamentos_estadisticos_para_investigacionIn troduccion_a_R

_______________________________________________________________________________________________________________________

5

UNIDAD 1 ______________________________________________________________________________________________

1.1. Breve historia del Software Estadístico R y Preliminares 1.1.1.

¿Qué es R?

Un programa estadístico computacional para el análisis de datos. Un lenguaje orientado a objetos: Esto significa que las variables, datos, funciones, resultados, etc., se guardan en la memoria activa del computador en forma de objeto con un nombre específico. Un objeto es un elemento del programa que integra sus propios datos y su propio funcionamiento, es decir, un objeto está formado por datos (propiedades o atributos) y por las funciones que es capaz de realizar el objeto (métodos). Sin embargo, para hacer posible lo anterior, hay que definir primero una clase que es lo que define a un tipo de objeto. Al definir una clase lo que se hace es indicar como funciona un determinado tipo de objeto.

Fuente: Poo

Un lenguaje de programación …  Diseñado por estadísticos y para estadísticos.  Con un manejo efectivo de los datos y facilidad de almacenamiento.  Con un conjunto completo de operadores para realizar cálculos matemáticos. 

Con una gran colección de herramientas que se muestran de una manera coherente e integrada para el análisis de datos.



Con facilidades gráficas de alta definición para el análisis de la información, dando así a trabajos de investigación (artículos científicos) o presentaciones en diapositivas, un gran toque de profesionalismo.

6

Un entorno…  Flexible y poderoso para la investigación computacional. 

Que contiene una librería llena de algoritmos para acceder a un gran conjunto de datos y funciones que se pueden manipular, analizar y graficar.



Que puede integrar programas escritos en otros programas, tales como C, C++, Fortran, Python y Java.

Fuente: Lenguajes de Programación

Un software con “Sistema Abierto”.  Un programa libre de costos, descargable vía Internet.  Distribuido bajo la licencia GPL (General Public Licence). Proyecto creado en 1982 por Richard Stallman (iniciador de la “Fundación Software Libre” en el mundo). Ver Video. 

Completamente disponible para todo el mundo, donde se puede ver el código del programa y proponer cambios (contribuyentes).



Disponible en muchas plataformas: Unix, Linux, Mac y versiones superiores a Windows 95.

Fuente: GPL Fuente: Richard Stallman

Una comunidad.   

Muchos contribuyentes conocidos como el “Grupo Nuclear de Desarrollo de R” y más de 3 millones de usuarios. Recursos, ejemplos y ayudas en cada dominio. Admisible para no-especialistas en programación.

7

Toda una historia.  Basado bajo el lenguaje de programación “S”.  “S” es un Sistema y un Lenguaje para organizar, visualizar y analizar datos. 

“S” está disponible como el programa “S” – PLUS comercializado por “Insightful Corporation” (proveedor de análisis de datos estadísticos y softwares).



En 1976, “S” fue desarrollado por Jhon Chambers, Rick Becker y Allans Wilks en los Laboratorios Bell de AT&T (AT&T’s Bell Laboratories).



En 1991, dos estadísticos Robert Gentleman (canadiense) y Ross Ihaka (neozelandés) de la universidad de Auckland en Nueva Zelanda, querían experimentar con el programa “S”, donde desarrollaron una versión más reducida, la cual llamaron R.



El nombre R proviene de las iniciales de sus nombres.



No fue hasta 1993 que hicieron su primer anuncio al público.



En 1995, Martin Mächler convenció a Ross y Robert para usar la GPL para hacer de R un software libre de costos (como un recurso disponible para su manipulación y mejoramiento). En 1997, El grupo “R Core” es formado y es quien controla los códigos fuente de R. Para el año 2000, se libera la primera versión del Software R. En la actualidad, la versión más reciente es la 3.6.2 (subida el jueves, 12 de diciembre de 2019), la última liberada al momento de actualizar estas notas, la cual se trabaja bajo el ambiente RGui de Windows (Interface gráfica estándar para usuarios de R).

  

LEE LAS ÚLTIMAS NOTICIAS

8

1.1.2.

Instalando R en tu computador paso a paso 1. 2. 3. 4. 5.

Ir a la página http://cran.r-project.org/ 1 Hacer click en Download R for Windows o de acuerdo al Sistema Operativo que tengas, ya sea Linux o Mac. Hacer click en el subdirectorio base o hacer click en install R for the firsttime. Hacer click en Download R 3.6.2 for Windows (62 megabytes, 32/64 bit). Ir al archivo ejecutable con el nombre de R-3.6.2-win.exe y seguir las instrucciones de descarga. Importante: Dentro de los pasos de instalación este preguntará si desea correr el programa bajo 32 – bit o 64 – bit. Mi recomendación es hacer la selección de acuerdo al tipo de Sistema que tenga tu equipo. Este se puede verificar haciendo clic en “Inicio”, “Configuración”, “Panel de Control” y finalmente en “Sistema”, confirmando así la misma.

6.

Al finalizar todos los pasos anteriores se debió crear un icono del programa sobre tu escritorio.

Nota: El equipo de programadores estadísticos en promedio, realizan dos veces al año nuevas versiones de R. Por ejemplo, recodemos que ésta última versión se publicó el jueves 12 de diciembre de 2019. Para una próxima versión habrá que estar atentos a la página oficial del programa R.

1

CRAN (The Comprehensive R Archive Network) es una red de servidores FTP y web de todo el mundo en donde se puede almacenar o descargar archivos del programa R tales como los instaladores, paquetes y documentación para aprender a manejar el lenguaje de programación.

9

1.1.3.

Otras interfaces de trabajo del Software R

En la actualidad existen diferentes tipos de interfaces de trabajo para el análisis estadístico con R, creados por distintos equipos de ingenieros de software; sin embargo, el mejor de todos hasta el momento es RStudio, diseñado por un equipo de programadores de software liderado por el norteamericano Joseph J. Allaire. Otra interface muy empleada por iniciadores es Rcommander. Cada uno de ellas se explica a continuación:

RStudio: http://www.rstudio.com/ es una interface más amigable para el uso personal en el análisis de datos estadísticos que la interface básica R-GUI, es debido a que se compone de cuatro ventanas bien distribuidas que permite al usuario disponer en una sola mirada la ventana de entrada (editor de texto o script de resaltado de sintaxis que soporta la ejecución de código directo), la ventada de salida (consola), la ventana de gestión de espacio de trabajo e historiales y finalmente la ventana multipropósito (en donde se muestra las opciones de vista de archivos, vista de gráficos, vista de instalación e invocación de librerías y vista de ayuda en general).

Rcommander: es una interface que se instala dentro del R básico mediante el paquete “Rcmdr” el cuál es mucho más amigable que los dos ambientes anteriores, principalmente para las personas que se sientan más cómodas con el método de “cliquear” en lugar del método de “escritura de comandos”, debido a que su apariencia es muy parecida a la de programas tales como SPSS, STATGRAPHICS, STATA, entre otros. Para su instalación puede guiarse del siguiente video tutorial que fue tomado de YouTube: https://www.youtube.com/watch?v=0Yz4mtfGOtY

R Portable: como su nombre lo indica es la opción que tiene el usuario de portar el programa por medio de una memoria USB o disco duro extraíble, sí este tiene la limitación de poseer un computador personal y poder llevarla a todos lados. Esta opción se presenta tanto para la interface básica como la de RStudio. Los links de instalación se muestran abajo: R-GUI: https://sourceforge.net/projects/rportable/ RStudio: https://sourceforge.net/projects/rportable/files/R-Studio/0.97.551/

10

1.1.4.

Antes de empezar a trabajar con R: Seleccionando un directorio de trabajo.

Antes de iniciar R, es muy importante poder guardar todo nuestro trabajo o funciones que hayamos creado, los cual se guardaran como un archivo con extensión .RData (Interfaz: Entorno gráfico Rgui). A su vez también es importante guardar el historial de una sección en R, donde se podrán ver todos los comandos que se hayan empleado en esa sección. Este se salvará como un archivo editable con extensión .Rhistory (Interfaz: Bloc de notas) Estos dos archivos se pueden guardar simultáneamente mediante los siguientes pasos: o Crear una carpeta ya sea sobre el escritorio, en una USB o en mis documentos con el nombre que ustedes crean más apropiado. Por ejemplo: Trabajos.EC o Ir a las propiedades de la carpeta creada para copiar la ubicación de la misma. Por ejemplo: C:\Users\ELMER RODRIGUEZ\Desktop o Ir a las propiedades del icono del programa R, y pegar la ubicación de la carpeta en donde dice “Iniciar en:” añadiendo el nombre que le hayas asignado a lacarpeta. Por ejemplo: " C:\Users\ELMER RODRIGUEZ\Desktop\Trabajos.EC” Finalmente, para verificar que efectivamente todo surgió efecto; primero abra el programa R, luego haga click en el ícono resaltado (ver figura abajo) denominado (guardar área de trabajo) de la barra de herramientas del programa, luego guardar y finalmente cerrar el programa R. De lo anterior, dirigirse a la carpeta creada Trabajos.EC, para verificar que efectivamente se hayan creado los dos archivos: el de “.Rhistory” que debe abrir como un documento con extensión “.txt” (bloc de Notas) y el otro llamado “R” con extensión “.RData”.

Nota: De aquí en adelante se aconseja abrir el software usando la extensión R.RData (elicono 1.1.5.

)

Fuentes o documentación adicional acerca del manejo de R y sus últimas actualizaciones.

o Visitar la página oficial del programa R en https://www.r-project.org/ o Descargar los manuales de la página https://cran.r-project.org/manuals.html en particular, revisar los que dicen R-intro.pdf y R-data.pdf. o

De la página principal podrás descargar muchos libros de tu interés como bibliografía adicional para tu aprendizaje en R (no todos son descargables de manera gratuita). Este se encuentra en la parte de “Documentation” – “Books” de la páginaoficial.

11

1.1.6.

Ayudas, recursos y cursos interactivos gratuitos

Buscar todo tipo de ayuda: RSeek o Google. Para aprender más sobre un paquete o una función pueden visitar: rdocumentation.org Curso para aprender los comandos básicos de R Try R y DataCamp cuentan con excelentes cursos interactivos. o Para mantenerse al tanto de las noticias de la comunidad de R pueden visitar R -Bloggers. o Desde RStudio crear documentos con el lenguaje de programación R Markdown y poderlos publicar a la Web mediante R Pubs. o o o

12

1.2. Empezando R por primera vez 1.2.1.

Interfaz

Existen diferentes entornos gráficos que facilitan la interacción con el usuario (llamados GUI, del inglés Graphical Users Interface). Entre los más populares se encuentra RGui (disponible para Windows), RStudio (Windows, MacOS, Linux), Tinn –R (Windows, MacOS), R Commander (Windows, MacOS, Linux), Emacs (Windows, MacOS, Linux), RKward (Linux), pero existen muchos otros. Para efectos del curso trabajaremos en tres tipos de entornos: RGui en Windows, RStudio y R Commander para Windows tal como se mencionó anteriormente.

1.2.2. Vista Inicial Para iniciar R se hace click en el acceso directo R 3.6.2 (o versión que tenga en el momento) o en Inicio  Todos los Programas  R  R x64 3.6.2. En la pantalla de RGui aparece la ventana Consola de R con un mensaje introductorio donde muestra la versión del software con que se está trabajando (acompañado de la fecha de publicación), los derechos de autor (acompañado del nombre de la Fundación) y la plataforma en la cual está trabajando el equipo. Este finaliza con un prompt o apuntador ‘>’, lo que indica que R ya está listo para trabajar, o preguntándose ¿ahora qué hago?

La siguiente pantalla muestra el aspecto de la interfaz RGui, disponible para Windows.

13

RGui se instala de forma automática con el paquete base de Windows. El resto de GUis es necesario instalarlas específicamente. Se encuentran gratuitamente en Internet. Estas GUis, para facilitar la interacción con el usuario, disponen de una serie de menús desplegables, cuya complejidad puede ir desde hacer solamente algunas operaciones sencillas como en el caso de hacer una edición, apertura de ficheros, guardar datos, cargar paquetes, actualizaciones, etc, de R Commander y RKward. --------------------------------------------------------------------------------------------------------------------Como una opción personal es posible cambiar la apariencia del prompt así:

options(prompt="nombre>") Por ejemplo: options(prompt="E>") E> Sin embargo, si se desea revertir el prompt como estaba anteriormente: options(prompt=">") > --------------------------------------------------------------------------------------------------------------------–––– El Equipo Central de Desarrollo de R (R Core Team) y la muy activa comunidad de autores de los paquetes han invertido mucho tiempo y esfuerzo creando lo que es hoy en día R. Ejecutemos las función contributors(), licence() y citation() para saber quiénes son los contribuyentes en la creación y crecimiento de lo que hoy es R en la actualidad. La licencia que la respalda y el formato de cita que hay que emplear al momento de hacer uso y beneficiarse del programa.

14

1.2.3.

1.2.3.1.

Pasos iniciales Ayuda y documentación

Para obtener cualquier tipo de ayuda, información, descripción general y la lista de argumentos para el buen uso de una función en específico, se escribe: help ("nombre de la función”) Un comando más corto sería: ? nombre de la función Por ejemplo: help("mean") ó ?mean Otras funciones muy útiles son find y apropos. La primera ayuda a ubicar en qué paquete se encuentra un objeto y la segunda encuentra todos los objetos con los nombres parciales que se le ha asignado a éste, es decir: find("nombre del objeto") [1] "package: nombre del paquete donde se encuentra ubicado el objeto" apropos("nombre parcial del objeto o función")

Por ejemplo: find("cov") ## [1] "package:stats"

apropos("norm") ## [1] "dlnorm" ## [5] "plnorm" ## [9] "qqnorm"

"dnorm" "pnorm" "rlnorm"

"norm" "qlnorm" "rnorm"

"normalizePath" "qnorm"

15

Para adquirir manuales de apoyo, referencias y material adicional con respecto al manejo de R, dentro del mismo programa, se escribe en el prompt así: help.start() Suponiendo que se nos ha olvidado el nombre exacto de una función o que desconocemos en qué paquete se encuentra un conjunto de datos (data.frames) o simplemente queremos ver un tema o un concepto en específico, entonces se emplea la función help.search (). Por ejemplo: help.search("linear model")

1.2.3.2. Demostraciones de las funciones de R Los siguientes comandos son útiles para ver el gran desempeño de lo que R puede hacer. demo(persp) demo(graphics) demo(Hershey) demo(plotmath)

1.2.3.3. Bibliotecas en R Para usar una de las bibliotecas, simplemente se debe escribir la función library con el nombre de la biblioteca dentro de los paréntesis. Por ejemplo: library(MASS) De manera general, si queremos saber la lista de paquetes y la descripción de cada uno de ellos que hay en nuestra biblioteca de R, escribimos: library() Ahora si queremos saber sobre la información completa de la biblioteca MASS que previamente hemos invocado, es decir, conocer la descripción de la misma, las funciones y conjunto de datos que posee, escribimos: library(help=MASS)

16

De otro modo podemos también ver el contenido completo de la biblioteca en orden alfabético sin distinción de una función o conjunto de datos, de la siguiente manera: Nota: La siguiente lista solo muestra los primeros 30 objetos. objects(grep("MASS",search())) ## ## ## ## ## ## ## ## ## ##

[1] [4] [7] [10] [13] [16] [19] [22] [25] [28]

"abbey" "Aids2" "area" "bandwidth.nrd" "beav2" "Boston" "caith" "cement" "contr.sdif" "cov.mcd"

"accdeaths" "Animals" "as.fractions" "bcv" "biopsy" "boxcox" "Cars93" "chem" "coop" "cov.mve"

"addterm" "anorexia" "bacteria" "beav1" "birthwt" "cabbages" "cats" "con2tr" "corresp" "cov.rob"

1.2.3.4. Instalando paquetes Para la instalación de paquetes en R, se puede realizar mediante dos formas: 1. Escribiendo en el prompt:

install.packages("nombre del paquete", dep=TRUE) Nota: El argumento >, indica que se instalen también las dependencias de ese paquete. La dependencias son otros paquetes que contienen elementos necesarios para que funcionen todas las aplicaciones que hay en el paquete que queramos instalar. 2. En la barra de Menú del programa seguir los siguientes pasos:

17

Seleccionamos como ventana del CRAN (The Comprehensive R Archive Network) a Colombia (Bogotá):

Elegimos el paquete o biblioteca a descargar, por ejemplo faraway:

18

1.2.3.5. Ver y modificar datos ya existentes Para ver y editar un conjunto de datos ya existente dentro de R, se realiza los siguientes pasos: Por ejemplo, dentro de la biblioteca de MASS, se encuentran muchos conjuntos de datos interesantes para realizar su análisis estadístico. Por ejemplo, si queremos ver o editar el conjunto de datos "wtloss", escribimos: library(MASS) wtloss head(wtloss) ## ## ## ## ## ## ##

1 2 3 4 5 6

Days 0 4 7 7 11 18

Weight 184.35 182.51 180.45 179.91 177.91 175.81

fix(wtloss) Importante: Si por alguna razón al momento de querer editar un conjunto datos y R muestra un error diciendo que no se puede ejecutar esa acción, entonces existe una opción llamada attach que permite poder hacer dichos cambios. # La función attach permite vincular o enganchar los datos para su manipulación. attach(wtloss) fix(wtloss)

1.2.3.6. Nombre de las variables en un conjunto e datos Si queremos saber que variables contiene cualquier conjunto de datos, en particular el de "wtloss", se escribe lo siguiente: names(wtloss) ## [1] "Days"

"Weight”

19

1.2.3.7. Conjunto de datos que se encuentran cargados en R IMPORTANTE: Durante todo el curso de Estadística Computacional, estaremos realizando la mayoría de nuestros análisis mediante dos grandes paquetes, ya descargados previamente a R, que son: {datasets} y {MASS}. Pero aún así haremos uso de muchos otros. Ahora para ver el conjunto de datos que contiene cada uno de ellos con su respectiva descripción, previamente "invocados" por la función library, se escribe en el prompt lo siguiente: data() Ahora, si queremos ver todos los conjuntos de datos disponibles que hay en R sin haber invocado antes la biblioteca, se escribe: data(package = .packages(all.available = TRUE))

1.2.3.8. Ver y borrar objetos que se han creado en una sección Para ver todos los objetos (variables, vectores, funciones, conjunto de datos, rutinas, etc...) que se han creado en una sesión de R actual, se escribe lo siguiente: ls() ## character(0)

ó objects() ## character(0) Nota: De la salida anterior “character (0)” indica que no hay ningún objeto en lista.

Ahora, de esa lista de objetos, si queremos borrar alguno de ellos, escribimos: rm(nombre) O de lo contrario, si se desea borrar toda la lista, se escribe: rm(list=ls())

20

1.3. LA MATEMÁTICAS EN R 1.3.1. R como una calculadora básica Hacer cálculos matemáticos en R es muy sencillo, tal como manejar una calculadora científica, los comandos que se emplean son bastante simples. Estos son algunos ejemplos: 5+3+10-3 ## [1] 15

8*10 ## [1] 80

8*10/20 ## [1] 4

sqrt(144) ## [1] 12

10^5 ## [1] 1e+05

Dos o más expresiones pueden ser calculadas sobre una misma línea, siempre y cuando ésta se pueda separar por punto y coma ( ;). Por ejemplo: 5+8; 120-100; 2*sqrt(81)-50/5 ## [1] 13 ## [1] 20 ## [1] 8

21

1.3.2. R como una calculadora científica La siguiente tabla muestra las diferentes funciones más utilizadas en R.

Tomado del libro: The R Book. Michael Crawley. Pag. 17. Ver libro electrónico.

Recordatorio: Si escribimos demo(plotmath) en el prompt, podrán ver mucho más funciones y símbolos matemáticos que se pueden utilizar. Además, en el archivo de PDF “Short – refcard” del Google Drive, se muestran muchas más funciones útiles.

22

1.3.3.

Parte Entera y módulo

Suponiendo que queremos saber cuántas veces el 13 cabe en 243, entonces debemos calcular la parte entera del mismo, es decir: 243%/%13 ## [1] 18

Ahora del ejercicio anterior podemos saber su residuo o cómo llamaremos de aquí en adelante módulo, es decir: 243%%13 ## [1] 9

El módulo es una herramienta muy útil en matemáticas para saber: a. Si un número es par o impar: Un número es impar si al dividir éste número por 2, el módulo de éste es 1 y un número es par si al dividir éste número por 2, el módulo de éste es 0, es decir: 7867%%2 ## [1] 1

8980206%%2 ## [1] 0

b.

Si un número es un múltiplo exacto de algún otro número. En R podemos preguntarasí: ¿Será que 876543 es un múltiplo de 7?

876543%%7==0 ## [1] FALSE

¿Será que 876543 es un múltiplo de 3? 876543%%3==0 ## [1] TRUE

23

1.3.4. Redondeando decimales a enteros Existen diferentes formas de redondear un número, ya sea redondear al próximo entero, al entero inferior o redondear al entero más cercano. Los comando a utilizar son: 

Redondear 5.65 al próximo entero. ceiling(5.65) ## [1] 6



Redondear 5.65 al entero inferior floor(5.65) ## [1] 5



Redondear 8.47 y 8.53 al entero máscercano redondeo=function(x) floor(x+0.5) redondeo(8.47) ## [1] 8

redondeo(8.53) ## [1] 9

1.3.5. Resumen de los operadores básicos R utiliza muy a menudo los siguientes operadores:

Tomado del libro: The R Book. Michael Crawley. Pag. 19. Ver libro electrónico.

24

1.4. VECTORES EN R Los vectores en R son variables con uno o más valores del mismo tipo: ya sea lógico, entero, real, complejo, o simplemente de caracteres. Recordemos que en matemáticas por ejemplo 5.2 es considerado como un valor escalar, sin embargo, en R un escalar es un vector de longitud 1.

1.4.1. Creando o generando un vector numérico o de caracteres Los valores pueden ser asignados a un vector de muchas maneras. Ya sean valores que se le asignen al vector dado unos números cualesquiera, valores generados por una secuencia constante o fija, mediante una ecuación, generando vectores de caracteres o de valores aleatorios.

1.4.1.1.

Vectores numéricos y asignaciones

Por ejemplo, si queremos asignarle al vector k, los siguientes valores: 2, 8.5, 5, 6.1, 4.7, 15, 9. En R se puede escribir de varias formas:

k=c(2, 8.5, 5, 6.1, 4.7, 15, 9) #aquí empleamos la función "c": encadena o enlaza valores numéricos. k ## [1]

2.0

8.5

5.0

6.1

4.7 15.0

9.0

assign("k1",c(2, 8.5, 5, 6.1, 4.7, 15, 9)) #aquí empleamos la función "assign": asigna un valor o conjunto de valores a un nombre en específico. k1 ## [1]

2.0

8.5

5.0

6.1

4.7 15.0

9.0

k2=scan() #aquí empleamos la función "scan": lee los datos de una lista de valores. k2 ## numeric(0)

Nota: Si quisiera verificar ya sea la longitud del vector que he creado o del conjunto que he importado, se utiliza la función "length". Es decir que si queremos verificar por ejemplo el número de elementos que contiene el vector k, escribimos lo siguiente: length(k) ## [1] 7

Importante: Esta función es muy empleada en la creación de funciones y desarrollo de simulaciones.

25

1.4.1.2.

Generando vectores de una secuencia aritmética

Suponga que deseamos generar un vector numérico de valores enteros positivos del 1 al 10, y que le llamaremos “conteo”. En el prompt podemos escribir de las siguientes maneras:

conteo=1:10 # Aquí utilizamos el operador : para generar secuencias de uno en uno conteo ##

[1]

1

2

3

4

5

6

7

8

9 10

conteo=seq(1,10,by =1) # la función "seq": se emplea para generar secuencias más complejas. El argumento "by": indica el incremento de la secuencia. conteo ##

[1]

1

2

3

4

5

6

7

8

conteo=seq(1,10,length=10) ; conteo ##

[1]

1

2

3

4

5

6

7

8

9 10

# el signo punto y coma " ; " actúa como salto delínea. 9 10

(conteo=rep(1:10,each=1)) # la función rep, se emplea también para generar secuenciascon repeticiones # cuando una función u objeto está entre paréntesis ( ), no es necesario invocar su nombre para que muestre su salida. ##

[1]

1

2

3

4

5

6

7

8

9 10

1.4.1.3. Generando vectores mediante ecuaciones Es posible generar vectores numéricos utilizando alguna ecuación matemática. Por ejemplo, sea x un vector de números enteros del 1 al 10 y sea h un vector de la forma, h = 3x2+5, entonces, si deseáramos generar un vector numérico para h, bajo las condiciones anteriores, éste sería de la siguiente manera:

x=1:10 h=3*x^2+5 h ##

[1]

8

17

32

53

80 113 152 197 248 305

26

1.4.1.4. Generando vectores de caracteres Los vectores de caracteres son muy empleados en R, por ejemplo en un gráfico de etiquetas, en tablas o matrices (solo por mencionar algunos). La manera de escribir éste en el prompt es utilizando la función "c" o la función "paste": nombres=c("Uni","Norte","Puerto", "Colombia") nombres ## [1] "Uni"

"Norte"

"Puerto"

"Colombia"

unir=paste(nombres,1:4,sep="") unir ## [1] "Uni1"

"Norte2"

"Puerto3"

"Colombia4"

unir=paste(c(nombres[1],nombres[3]),c(nombres[2],nombres[4]),sep="") unir ## [1] "UniNorte"

"PuertoColombia"

Importante: Después de haber creado o generados diferentes tipos de objetos, existe una función que permite saber con qué clase de objeto estamos trabajando, ya sea numérico "numeric", de caracteres "caracter", una matrix "matrix", una tabla de datos "data.frame", etc., esta es la función "class". Veamos algunos ejemplos: k=c(2, 8.5, 5, 6.1, 4.7, 15, 9) class(k) ## [1] "numeric"

class(nombres) ## [1] "character"

class(Rabbit) #Invoque previamente el paquete MASS.

27

1.4.1.5. Generando vectores aleatorios Los vectores aleatorios pueden ser generados mediante cualquiera de las diferentes distribuciones de probabilidades tanto discretas como continuas que nosotros conocemos. Veamos algunos ejemplos:

args(runif) #La función "args" permite saber cuales son los argumentos mínimos necesarios que debe emplear la función "runif". ## function (n, min = 0, max = 1) ## NULL

runif(10) ## [1] 0.82674452 0.18046766 0.01160646 0.75501017 0.38504994 0.37181526 ## [7] 0.45044807 0.25833122 0.12679006 0.48397798

runif(10,4,5) ## [1] 4.432103 4.088384 4.696770 4.163062 4.647785 4.606259 4.739780 ## [8] 4.235047 4.232067 4.162095

args(rpois) ## function (n, lambda) ## NULL

rpois(10,100) ## [1] 91 123 96 97 89 76 92 99 105 102

args(rnorm) ## function (n, mean = 0, sd = 1) ## NULL

rnorm(10) ## ##

[1] -0.07784572 -0.03201230 -0.22682614 -0.95589519 [6] -0.24284870 -0.27491749 0.20897180 0.98217364

0.70244048 0.86521447

28

1.4.1.6. Nombrando los elementos dentro de un vector Después de haber creado algún vector cualquiera, en ocasiones es muy útil etiquetar cada uno de sus elementos, ya sea con números o un nombre en específico. Por ejemplo si creamos el vector 15, 28, 10, 4, 21, 18, 35, 9 llamado cuenta, tenemos que: cuenta=c(15,28,10,4,21,18,35,9) cuenta ## [1] 15 28 10

4 21 18 35

9

names(cuenta)=0:7 # con este comando se ha creado una tabla de frecuencias cuenta ## 0 1 2 ## 15 28 10

3 4 5 6 4 21 18 35

7 9

Ahora si por ejemplo tenemos ya creada la tabla anterior y solo nos interesa las frecuencias, es decir, queremos remover los nombres, entonces empleamos la función as.vector así: as.vector(cuenta) ## [1] 15 28 10

4 21 18 35

9

1.4.1.7. Ordenar un vector y seleccionar un elemento de un vector Para ordenar un vector o un conjunto de valores, se utiliza el comando “sort(vector)” si es en orden ascendente y “rev(sort(vector))” si es en orden descendente. Veamos un ejemplo: Dado el siguiente vector numérico llamado num: ordenarlo de menor a mayor y viceversa.

num=rpois(20,5) num ##

[1]

6

6

9

5

8

3

3

9

7

5

7

2

7

5

1

5

6

9

8 10

6

7

7

7

8

8

9

9

9 10

6

6

5

5

5

5

3

3

2

Ordenando de menor a mayor tenemos que: sort(num) ##

[1]

1

2

3

3

5

5

5

5

6

6

Ordenando de mayor a menor, tenemos que: rev(sort(num)) ##

[1] 10

9

9

9

8

8

7

7

7

6

1

29

En algunas circunstancias deseamos obtener o seleccionar alguno de los elementos de un vector en específico. Los subscritos o índices (denotados en R con [ ]) son empleados para tal fin. Es decir, que si queremos seleccionar: (a) el noveno elemento de la lista (b) extraer los valores de las posiciones pares, del vector anterior “num”. En el prompt se escribe así:

num ## [1] 3 9 5 7 8 5 5 5 9 3 7 4 6 2 4 3 8 1 7 6

num[9] ## [1] 9

num[seq(2,20,by=2)] ## [1] 9 7 5 5 3 4 2 3 1 6

Importante: Lo anterior es posible también con matrices, arreglos y tabla de datos (“Dataframes”).

1.4.1.8. La función “which” aplicada a vectores Para saber en qué posición se encuentra un elemento o varios de ellos con cierta característica dentro de un vector y para saber cuáles son esos elementos, utilizamos la función “which”. Veamos un ejemplo: Dado el vector “a” tal como se muestra abajo, indicar cuál de sus elementos son mayores que 5.

a = c(2,5,7,9,3,8,1,3,9,12,7,2,1,5,8,12,1,3) a ## [1] 2 5 7 9 3 8 1 3 9 12 7 2 1 5 8 12 1 3

which(a>5) #indica el valor posicional de cada uno de los elementos dentro del vector ## [1] 3 4 6 9 10 11 15 16

a[a>5] #indica los elementos que poseen tal característica. ## [1] 7 9 8 9 12 7 8 12

30

1.4.1.9. Vectores aplicados en funciones Una de las grandes fortalezas de R es su habilidad para evaluar funciones. Las funciones más empleadas en R, se muestran en la siguiente tabla:

Tomado del libro: The R Book. Michael Crawley. Pag. 41. Ver libro electrónico.

Nota: Podrán encontrar más de ellas en el archivo de PDF: “Listado de Comandos-Referencia Rápida R”, que se encuentra dentro de la carpeta de Referencias Bibliográficas del Drive.

31

Vectores recortados (“Trimming vectors”) usandosubscritos negativos

1.4.1.10.

Recordemos que los subscritos o índices individuales se refieren mediante corchetes. Entonces, sea el vector x definido como:

x=c(5,8,6,7,1,5,3,3,8,22,7,9,7,5) x ## [1] 5 8 6 7 1 5 3 3 8 22 7 9 7

5

Nosotros podemos encontrar el cuarto elemento solo escribiendo: x[4] ## [1] 7 Es de extrema utilidad emplear subscritos negativos ya que éste permite remover elementos de un vector. Supongamos que queremos crear un nuevo vector llamado, z, que contenga todos los elementos de x, excepto el primero. z=x[-1] z ##

[1]

8

6

7

1

5

3

3

8 22

7

9

7

5

Un ejemplo estadístico: Supongamos que deseamos calcular la media recortada de "x", lo que significa calcular la media aritmética removiendo sus valores extremos (que para este ejemplo sería 1 y 22). Para este objetivo se necesita realizar dos pasos: primero se debe ordenar los datos y luego remover el valor mínimo con x[-1] y el valor máximo con x[-length(x)]. Podríamos hacer esto simultáneamente enlazando o encadenando ambas instrucciones con -c(1,length(x)). Ahora con lo anterior podremos crear nuestra segunda función en R, para poder realizar dichocálculo:

media.rec=function (x) mean(sort(x)[-c(1,length(x))]) media.rec ## function (x) mean(sort(x)[-c(1,length(x))])

function (x) mean(sort(x)[-c(1,length(x))]) ## function (x) mean(sort(x)[-c(1,length(x))])

media.rec(x) ## [1] 6.083333

STOP

Supongamos que un estudiante está muy desesperado y no encuentra el error que genera su rutina de la media recortada. ¡Cómo usted lo podría ayudar?

media.rec=function (x) sum(sort(x)[-c(1, length(x))]) /length(x)

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ESTRUCTURA BÁSICA DE UNA FUNCIÓN

32

nombre de la función = function (argumentos) acción que se desea ejecutar Para ver la función terminada: nombre de la función Para correr la función: nombre de la función(argumentos) –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Nota: en la sección 1.7 Programando con R, se hablará con más detalle sobre la estructura y los diferentes estructuras de control.

1.4.2. La función Sample Esta función tiene como finalidad tomar una muestra de tamaño especificado de los elementos de un vector “x” extrayéndolos con reemplazo o sin reemplazo. Ésta es extremadamente útil para la aleatorización en diseños de experimentos, en simulación y en pruebas de hipótesis. Veamos un ejemplo: Sea “y” un vector numérico cualquiera, el cual queremos extraer una muestra o varias de ellas, bajo diferentes condiciones.

y=c(8,3,5,7,6,6,8,9,2,3,9,4,10,4,11) y ##

[1]

8

3

5

7

6

6

8

9

2

3

9

4 10

4 11

9

3

9

6

7 11

8

5

4 10

4

5

2

6

9

9

6

8

4

7

8

3 10 11

4 11

9

9

6

7

3

3

4

5

8

6 10

x1=sample(y) x1 ##

[1]

8

2

3

6

x2=sample(y) x2 ##

[1]

4

3

x3=sample(y) x3 ##

[1]

2

8

33

Los anteriores ejemplos fueron invocados considerando que han sido extraídos sin reemplazo. Ahora, podemos especificar el tamaño de la muestra que deseemos como segunda opción dentro de sus argumentos, es decir:

args(sample) ## function (x, size, replace = FALSE, prob = NULL) ## NULL

y=c(8,3,5,7,6,6,8,9,2,3,9,4,10,4,11) x4=sample(y,30) ## Error in sample.int(length(x), size, replace, prob) : cannot take a sample larger than the population when 'replace = FALSE' STOP

¿Por qué sale este error? ¿Qué habrá que hacer para corregirlo?

Ahora pensemos en un primer ejemplo de aplicación en donde se realice un experimento al lanzar una moneda equilibrada una vez: moneda=c("cara","sello") sample(moneda,size=1) ## [1] "sello”

Ahora, si deseamos repetir este experimento 100 veces y analizar los resultados resumidos en una tabla de frecuencias: sample(moneda,size=100,replace = T) ## ## ## ## ## ## ## ## ## ## ## ## ##

[1] [9] [17] [25] [33] [41] [49] [57] [65] [73] [81] [89] [97]

"cara" "cara" "sello" "sello" "sello" "cara" "cara" "sello" "cara" "cara" "cara" "sello" "cara"

"cara" "cara" "sello" "sello" "sello" "sello" "sello" "sello" "cara" "sello" "cara" "cara" "sello"

"cara" "cara" "cara" "cara" "cara" "cara" "sello" "sello" "sello" "sello" "sello" "sello" "cara"

"sello" "cara" "cara" "cara" "sello" "cara" "sello" "sello" "cara" "cara" "sello" "cara" "cara"

"cara" "cara" "sello" "sello" "sello" "cara" "sello" "sello" "cara" "cara" "cara" "sello"

table(sample(moneda,size=100,replace = T)) ## ## ##

cara sello 54 46

"cara" "cara" "cara" "cara" "sello" "cara" "cara" "sello" "cara" "cara" "sello" "sello"

"cara" "sello" "cara" "cara" "cara" "sello" "cara" "sello" "sello" "sello" "cara" "cara"

"cara" "sello" "cara" "cara" "cara" "cara" "cara" "sello" "cara" "sello" "sello" "sello"

34 STOP

Ahora, un segundo ejemplo sería repetir el experimento anterior asumiendo que dicha moneda no está equilibrada, ¿Qué habría que cambiar o agregar dentro de la función sample para que esto sea posible? En esta ocasión sería apropiado agregar una gráfica para observar sus resultados usando la función barplot.

Un tercer ejemplo mucho más interesante es cuando se emplea a la función sample con el fin de generar muestras bootstrap. John Fox estadístico canadiense una vez escribió lo siguiente “ La población es a la muestra como la muestra es la muestra bootstrap”, es decir, que se van a generar muestras a partir de la muestra. A lo anterior se le conoce comúnmente como técnicas de remuestreo, la cual se estudiará más a fondo en el Capítulo 5. Tratemos como por ejemplo estimar un I.C del 95% para el valor de la verdadera media poblacional de una muestra aleatoria de distribución normal de tamaño 20 con media 10 y desviación estándar 1. datos=rnorm(20,10) quantile(replicate(1000,mean(sample(datos,replace = T))),probs= c(0.025,0.975)) ## ##

2.5% 97.5% 9.775729 10.715635

Ahora comparemos los resultados anteriores con la técnica tradicional para estimar parámetros mediante I.C con distribución t de Student. t.test(datos) ## ## ## ## ## ## ## ## ## ## ##

One Sample t-test data: datos t = 40.72, df = 19, p-value < 2.2e-16 alternative hypothesis: true mean is not equal to 0 95 percent confidence interval: 9.686177 10.735876 sample estimates: mean of x 10.21103

Por lo tanto, como podemos observar, los resultados son muy cercanos entre sí, confirmando la robustez de la técnica.

34

1.5. MATRICES EN R 1.5.1. Las matrices y sus operaciones Existen diferentes formas de crear o generar una matriz. Podemos crear uno directamente utilizando la función matrix de la siguiente manera: Veamos primero sus argumentos para invocación:

args(matrix) ## function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) ## NULL

Ejemplo # 1: A=matrix(c(1,2,3,4,5,6,7,8,9),nrow=3) A ## [,1] [,2] [,3] ## [1,] 1 4 7 ## [2,] 2 5 8 ## [3,] 3 6 9

Observación: como pueden notar los valores fueron entrados en dirección columna.

Ejemplo # 2: I=matrix(c(1,0,0,0,1,0,0,0,1),nrow=3) I ## [,1] [,2] [,3] ## [1,] 1 0 0 ## [2,] 0 1 0 ## [3,] 0 0 1

Ahora del ejemplo # 2, se desea verificar que el objeto "I" es una matriz y que su dimensión es de 3 x 3, empleamos las funciones class y attributes respectivamente: class(I) ## [1] "matrix"

attributes(I) ## $dim ## [1] 3 3

35

Ahora veamos otro ejemplo, en el cual los elementos de la matriz fueron entrados en dirección fila. Para ello se incluye el argumento byrow=T. vector=c(1,2,3,4,4,3,2,1) V=matrix(vector,byrow=T,nrow=2) V ## [,1] [,2] [,3] [,4] ## [1,] 1 2 3 4 ## [2,] 4 3 2 1

Una manera de transformar un vector en una matrix es utilizando la función "dim" es decir: vector ## [1] 1 2 3 4 4 3 2 1

dim(vector)=c(4,2) vector ## ## ## ## ##

[1,] [2,] [3,] [4,]

[,1] [,2] 1 4 2 3 3 2 4 1

dim(vector)=c(2,4) vector ## [,1] [,2] [,3] [,4] ## [1,] 1 3 4 2 ## [2,] 2 4 3 1

Ahora si deseáramos calcular la transpuesta de la matriz anterior, se emplea la función "t": t.vector=t(vector) t.vector ## ## ## ## ##

[1,] [2,] [3,] [4,]

[,1] [,2] 1 2 3 4 4 3 2 1

36

1.5.2. Etiquetando las filas y columnas de una matriz Sea X una matriz de 4 x 5 de enteros aleatorios de una distribución de Poisson con media 2. Además, supóngase que las filas se refieren a cuatro ensayos distintos de un experimento que se está realizando. Para hacer esto posible se utiliza la función rownames. La ventaja de utilizar rownames es que dentro de sus argumentos se encuentra la opción prefix, la cual reduce el tiempo de trabajo. X = matrix(rpois(20,2),nrow=4) X ## ## ## ## ##

[1,] [2,] [3,] [4,]

[,1] [,2] [,3] [,4] [,5] 4 4 1 2 0 3 4 2 7 1 1 2 2 0 2 2 1 2 2 3

rownames(X) = rownames(X, prefix="Ensayo.") X ## ## ## ## ##

Ensayo.1 Ensayo.2 Ensayo.3 Ensayo.4

[,1] [,2] [,3] [,4] [,5] 4 4 1 2 0 3 4 2 7 1 1 2 2 0 2 2 1 2 2 3

Adicionalmente se supondrá que los cuatro ensayos se realizaron bajo cinco drogas distintas (Dolex, Ibuprofeno, Advil, Noraver y Distran) para tratar el malestar general. nombre.droga=c("Dolex", "Ibuprofeno", "Advil", "Noraver", "Dristan") colnames(X)=nombre.droga X ## ## ## ## ##

Ensayo.1 Ensayo.2 Ensayo.3 Ensayo.4

Dolex Ibuprofeno Advil Noraver Dristan 4 4 1 2 0 3 4 2 7 1 1 2 2 0 2 2 1 2 2 3

Otra forma de darle nombre a las columnas es con la función dimnames. Suponiendo ahora que solo queremos especificar el nombre de las columnas, por ejemplo droga 1, 2,..,5, entonces: dimnames(X) = list(NULL,paste("droga.",1:5,sep="")) X ## ## ## ## ##

[1,] [2,] [3,] [4,]

droga.1 droga.2 droga.3 droga.4 droga.5 4 4 1 2 0 3 4 2 7 1 1 2 2 0 2 2 1 2 2 3

37

1.5.3. Cálculos sobre filas y columnas de matrices Una de las grandes virtudes de R es poder manipular los objetos y hacer operaciones dentro de ellos, las matrices no es la excepción. Veamos solo algunos ejemplos:

mean(X[,5]) ## [1] 2.25

var(X[4,]) ## [1] 1.3

rowSums(X) ## [1] 13 12 12

8

colSums(X) ## [1] 14

6

5 11

9

rowMeans(X) ## [1] 2.6 2.4 2.4 1.6

colMeans(X) ## [1] 3.50 1.50 1.25 2.75 2.25

1.5.4. Operaciones básicas Dada las siguientes matrices A y B de orden 2, realicemos sobre ellas las diferentes operaciones que puedan producirse, tales como la suma, la resta, la multiplicación, el determinante, la inversa y la descomposición espectral de una matriz.

A=c(2,6,7,9) dim(A)=c(2,2) A ## [,1] [,2] ## [1,] 2 7 ## [2,] 6 9

B=c(1,2,3,8) dim(B)=c(2,2) B ## [,1] [,2] ## [1,] 1 3 ## [2,] 2 8

38

1.5.5. Suma y resta de matrices Para la suma o resta de matrices se emplea el símbolo correspondiente a tal operador.

C=A+B C ## [,1] [,2] ## [1,] 3 10 ## [2,] 8 17

C=A-B C ## [,1] [,2] ## [1,] 1 4 ## [2,] 4 1

1.5.6. Multiplicación de matrices Para la multiplicación de matrices se utiliza el operador “%*%”:

C=A%*%B C ## ## [1,] ## [2,]

[,1] 16 24

[,2] 62 90

1.5.7. Determinante de una matriz Para encontrar el determinante de la matriz A o B, utilizamos la función det.

A=c(2,6,7,9) B=c(1,2,3,8) A=matrix(A,2,2) B=matrix(B,2,2) det(A) ## [1] -24

det(B) ## [1] 2

39

1.5.8. Inversa de matrices Para encontrar la inversa de la matriz A o B, el lenguaje R no posee un operador interno que realice dicho cálculo. Lo que habría que hacer es crear una función para tal fin. Afortunadamente existe ya una función que realiza ese cálculo dentro de un paquete en específico, ésta se llama ginv.

STOP

¿Cómo puedo saber cuál es paquete que contiene dicha función? Investigue

A=c(2,6,7,9) B=c(1,2,3,8) A=matrix(A,2,2) B=matrix(B,2,2) library(MASS) ginv ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##

function (X, tol = sqrt(.Machine$double.eps)) { if (length(dim(X)) > 2L || !(is.numeric(X) || is.complex(X))) stop("'X' must be a numeric or complex matrix") if (!is.matrix(X)) X