Una introduccion al lenguaje R - dpye.iimas.unam.mx · Estad sticas descriptivas y gr a cas ... en...

49
Una introducci´on al lenguaje R: Miguel ´ Angel Chong R. [email protected] IIMAS-UNAM Especialidad en Estad´ ıstica 9 de agosto del 2011 Miguel ´ Angel Chong [email protected] Curso de R

Transcript of Una introduccion al lenguaje R - dpye.iimas.unam.mx · Estad sticas descriptivas y gr a cas ... en...

Una introduccion al lenguaje R:

Miguel Angel Chong [email protected]

IIMAS-UNAMEspecialidad en Estadıstica

9 de agosto del 2011

Miguel Angel Chong [email protected] Curso de R

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Un poco de historia

Entre 1975 y 1976 se desarrollo en los laboratorios Bell el lenguajede programacion estadıstico S, conocido hoy en dıa como SPlus.Fue desarrollado principalmente por John Chambers, despues se leunieron al proyecto Rick Becker y Allan Wilks. S no es softwarelibre.

El lenguaje R es un proyecto de software libre usado tambien paraanalisis estadıstico y grafico, desarrollado en un principio porRobert Gentleman (EU) y Ross Ihaka (Nueva Zelanda) en elDepartamento de Estadıstica de la Universidad de Auckland enagosto de 1993. Su desarrollo actualmente es responsabilidad del RDevelopment Core Team.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Un paquete es una serie de programas que se distribuyen conjuntamente,y un lenguaje de programacion es un dialecto artificial disenadohacernos entender con la computadoras. El lenguaje esta formado por unconjunto de sımbolos y una sintaxis que definen su estructura.

En R contamos con paquetes para resolver problemas estadısticos comopruebas de hipotesis estadısticas, modelos lineales y no lineales,algoritmos de clasificacion, series tiempo, problemas de analisis numerico,etc.

A su vez, R es tambien un lenguaje de programacion, es decir que elusuarios puede hacer sus propias funciones usando las ya existentes.Muchas funciones con las que ya contamos por default estanprogramadas en R, pero tambien hay funciones que pueden estardesarrolladas en C, C++ o Fortran.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

R es proyecto:

colaborativo, es decir que sus usuarios pueden publicar suspaquetes a toda la comunidad despues de un proceso deaceptacion,

abierto, esto implica que uno puede ver los codigos de lospaquetes y ademas uno puede modificarlos.

Existe un repositorio oficial de paquetes, en otras palabras, hayservidor donde se encuentran almacenados los paquete donde unopuede descargarlos.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

Operadores aritmeticos

Una vez que abrimos R nos aparece el simbolo >, significa que estamos listos paraempezar a trabajar. Podemos ingresar una expresion aritmetica entre dos numerousando operadores aritmeticos y el resultado obviamente sera otro numero.

Arıtmeticos

+ suma

- resta

* multiplicacion

/ division

^ elevar a una potencia

Ejemplo> 2 + 2

[1] 4

Como en una calculadora nosotros podemos calcular las siguientes funciones:sqrt(), log(), exp(), sin(), cos().

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

Operadores de comparacion

Se pueden comparar dos numero con los siguientes operadores.

Condicionales

< menor que

> mayor que

== igualdad

!= diferentes

<= menor o igual a

>= mayor o igual a

el resultado en este caso no es un numero sino un valor logico: TRUE oFALSE.> 5<9

[1] TRUE

> 10<9

[1] FALSEMiguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

Operadores logicosLos operadores logicos producen un resultado TRUE o FALSE y sus operandos son tambien valores logicos

Logicos

&& Y

|| O

Supongamos que tenemos dos proposiciones logicos A y B, donde A y B puede tomar uno de dos valores de verdad:TRUE o FALSE entonces la tabla de verdad de los operadores && y || son

A B A&&B A B A||B

TRUE TRUE TRUE TRUE TRUE TRUE

TRUE FALSE FALSE TRUE FALSE TRUE

FALSE TRUE FALSE FALSE TRUE TRUE

FALSE FALSE FALSE FALSE FALSE FALSE

En el caso del operador negacion de una proposicion logica usamos el sımbolo !, antes de la proposicion, es decir!A.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

Otros operadores binarios muy importantes son

<- o = el operador asigancion de valores a un objeto

: el operador para crear sucesiones

∼ se usa para definir la formula de un modelo

? usado para obtener ayuda

Una vez que ya sabemos asignar valores a objetos debemos de saber ciertasreglas

R es sensible a mayusculas y minusculas

Los nombres de los objetos pueden contener cualquier combinacion decaracteres excepto

Comenzar el nombre del objeto con un numeroQue el objeto contenga alguno de los siguientes sımbolos especiales$, %,#

Espacios en blanco en medio del nombre.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

Uso del editor de R

La manera en que uno puede hacer comentarios en R es con elsımbolo #.# Esto es un comentario, no se ejecuta en la consola.

# Un comentario sirve para describir el programa usalo.

# Conviene acostumbrarse a comentar los programas.

# cada linea que uno quiere comentar debe

# empezar con el sımbolo gato.

El uso de la consola en ocasiones no es muy practico. R cuenta sonsu propio editor que nos ofrece las siguientes ventajas

Si escribir varias lineas de codigo y tener una acceso maseficiente a ellas.

Podemos guardar nuestro trabajo con extension *.r

Desde el editor se puede correr alguna parte del codigoseleccionado con Ctrl + r.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

Como en estadısticas lo mas comun es trabajar con un conjutodatos (una muestra) es conveniente saber manipular vectores.

scan() podemos leer datos del teclado o de algun fichero.

c(...) concatena elementos o vectores para generar unvector

rep(x, no_veces) repite el x, el numero de veces quequeramos

seq(de, hasta,incremento) hace una sucesion de puntosque van de un punto inicial a uno final con un incremento fijodado.

Una de las ventajas de R es que puede manipular vectores de datoscomo si fueran objetos individuales, es decir que se pueden hacertodo tipo de operaciones aritmeticas con vectores que tengan lamisma longitud. Las operaciones se realizan elemento aelemento.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

La forma de acceder a un subconjunto de datos en un vector esusar un numero entre corchetes, este numero es lo que se llamaındice.El primer elemento de vector tiene el ındice 1, El segundo tiene el 2y ası sucesivamente.Ejemplos

x[n] Acceder al elemento n del vector xx[-n] Accede a todos los elementos de x menos al nx[1:n] Seleccionar los elementos entre los ındices 1 y nx[c(1,5,9)] Acceder a los elementos en los ındices 1, 5 y 9.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Operadores binarios y unariosVectores y operaciones con vectores

Primeras graficas

Una vez que ya tenemos un vector, el primer paso para el analisis de losdatos es la generacion de graficos.La funcion plot(x) sirve para grafica los valores del vector x o parahacer graficas bivariadas entre dos vectores de la misma dimesionplot(x, y).Algunos parametros para modificar nuestras graficas son:

type dentro de los tipos estan: “p” para puntos “l” para lineas, “b”para puntos y lineas a la vez, “c” lines punteadas, “h” parahistograma o lineas verticales, “s” para unir los puntos en forma deescalon.

main tıtulo principal de la grafica.

sub subtıtulo de la grafica.

xlab, ylab tıtulo de los ejes x y y respectivamente.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Expresiones y objetos

La interaccion basica en R es vıa la evaluacion de expresiones, es decir,el usuario da una expresion y el sistema la evalua e imprime el resultado.Todas las expresiones de R regresan un valor (posiblemente NULL).Algunas expresiones no son evaluados como un output en la consola sinomas bien como una ventana de graficos o al ir a escribir en un archivo.Un objeto es un termino abstracto usado para cualquier cosa que sepueda asigna a una variable. Hasta ahora casi exclusivamente hemoshablado de vectores numericos.En vez de discutir sobre que son los objetos veamos como generarlos yque hacer con ellos.Gran parte de la sintaxis de las expresiones no tiene mucho sentido sin elconocimiento de los objetos sobre los que se trabaja.A continuacion introduciremos nuevos objetos y de elementos dellenguaje.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Una matriz en matematicas es una arreglo bidimensional denumeros, y una forma comoda de crear matrices es utilizar lafuncion de matrix:> matrix (1:12, nrow = 3, byrow= TRUE)

Observe como el byrow = T hace que la matriz llenada porrenglonLa multiplicacion entre matrices la podemos hacer con el operador%*%. Y algunas funciones utiles que operan sobre matrices sonrownames, colnames que se usan para cambiar el nombre lafuncion t se usa para transposicion, solve() nos devuelve lainversa, eigen() nos regresa los vectores y valores propios, etc.Podemos concatenar vectores con la misma dimension, comocolumnas o renglones, utilizando las funciones cbind y rbind

respectivamente.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

factor

Es comun que en los datos estadısticos se tengan las variablescategoricas, estas indica alguna subdivision de los datos.Ejemplo: clase social, diagnostico de una enfermedad, alguna etapa, etc.Por lo general, se trata de registrar un codigo numerico. Estas variablesdeben ser especificadas como factor en R. Se trata de una estructura dedatos que (entre otras cosas) hace que sea posible asignar nombressignificativos con las categorıas. Un factor que tiene un conjunto deniveles.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Veamos un ejemplo:El primero creamos un vector numerico, que codifica el dolor por nivel decinco pacientes.> dolor <- c(0,3,2,2,1)Queremos tratar esta variable como categorica, por eso creamos el objetofdolor del tipo factor y decimos cuales son los niveles.

> fdolor <- factor( dolor, levels = 0:3)Con levels es el nombres de nivel que se puede cambian a cuatrocadenas de caracteres especificadas

> levels(fdolor) <- c("ninguno", "suave", "medio",

"graves")

> fdolorcon as.numeric podemos ver el codigo numerico asignado a cadacategorıa.

> as.numeric(fdolor)Notemos que la original codificacion eran numeros 0-3, la representacioninterna de un factor siempre utiliza los numeros que comienzan en 1.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Si en factor (. . .), no se especifica con el argumento levels de los niveles,por default seran asignados los niveles de manera alfabetica y esto no siemprees convenienteEjemplo> texto.dolor <- c("ninguno","ninguno","suave",

"graves","ninguno", "medio","medio", "suave")

> ftexto.dolor <- factor(texto.dolor)

> ftexto.dolor

> as.numeric(ftexto.dolor)

En cambio, si queremos asignar a ninguno el valor 1, a suave el valor 2, amedio el valor 3 y grave el valor 4 lo especificamos con el argumento levels

> dolor3 <- factor(texto.dolor,levels= c("ninguno","suave",

"medio","graves"))

> dolor3

> as.numeric(dolor3)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Listas

A veces es util combinar una coleccion de objetos en un gran objeto compuesto. Estose puede hacer usando listas.Podemos construir una lista usando la funcion list.Como ejemplo, considere un conjunto de datos> uno <- c(5260,5470,5640,6180,6390, 6515,6805,7515,7515,8230,8770)

> dos <- c(3910,4220,3885,5160,5645,4680,5265,5975,6790,6900,7335)

> tres <- matriz(0, 5, 5)

Vamos a combinar estos vectores individuales en una lista> mi_lista <- list (antes = uno, despues = dos, matriz= tres )

> mi_lista

Los componentes de la lista se mandan llamar de acuerdo a los nombres de losargumentos utilizados en la lista.> mi_lista$antes

Muchas de las funciones de R mas que regresar un unico vector de valores y devuelvenlos resultados en forma de una lista.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

data.frame

Una data.frame corresponde a una matriz de datos que puedetener vectores numericos y/o factores de la misma de longitud,que se relacionan, de manera que los datos en la misma posicionproceden de la misma unidad experimental (sujetos, animales, etc.)Se puede crear un data.frame de datos de variables preexistentes:> d <- data.frame (uno, dos)

> d

Al igual que con las listas, las variables de d son accesibles usandola notacion $:> d$uno

o como lo haciamos de manera matricial o vectorial usandocorchetes> d[,1]

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Un ejemplo de data.frame es iris, este es un conjunto de datosconsta de 50 muestras de cada una de tres especies de flores Iris (Iris setosa , Iris virginica y Iris versicolor ).Cuatro caracterısticas se midieron en cada muestra, son la longitudy la anchura del sepalo y petalos , en centımetros.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Ya vimos como extraer los datos mediante uno o varios ındices. Enla practica, a menudo tendra que extraer los datos que satisfacendeterminados criterios.Esto puede hacerse simplemente mediante la insercion de unaexpresion relacional lugar del ındice, ası:> dos [uno> 7000]

Por supuesto, este tipo de expresion solo tiene sentido si lasvariables que van en la expresion relacionales tienen la mismalongitud que la variable que se ha indexado.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Los operadores logicos & (logica ”Y”), | (valor logico ”o”) paravectores.Por ejemplo> dos[uno > 7000 & uno <= 8000]

Vale la pena echar un vistazo mas de cerca a lo que realmentesucede cuando se utilizar una expresion logica en forma de ındices.El resultado de la expresion logica es un vector logico> uno> 7000 & 8000 <= uno

La indexacion con un vector logica implica que se seleccionaran losvalores que en el vector logico sean TRUE.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

En particular, puede ser util para extraer todos los datos para loscasos que cumplan ciertos criterios> d[d$uno> 7000,]

Aquı hemos extraıdo de las filas de la estructura de datos dondeuno >7000.

Observe que los nombres de las filas son los mismos que eldata.frame original.Tambien se podrıa haber hecho de esta manera:> sel <- d$uno > 7000

> sel

> d[sel,]

Lo que paso es que sel (seleccion) se convierte en un vector logicoque es TRUE correspondiente a los cuatro casos que cumplen lacondicion.Indexar con d [sel, ] proporciona los datos en las filas donde seles TRUE

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Como bajar un paquete

A continuacion vamos a descargar un paquete llamado ISwR puesto quevamos a usar un data.frame que viene ahı

1 Una vez parados en la consola vamos al menu principal damos clicken paquetes

2 Damos click en seleccionar espejo CRAN, nuevamenete como en elcaso de la instalacion seleccionamos un espejo que este cercano anosotros

3 Nuevamente vamos desde la consola a paquetes y ahora le damos ainstalar paquetes

4 Nos aparece una lista ordenada alfabeticamente de todos lospaquetes disponibles, buscamos el ISwR y le damos doble click

5 Una vez que se termine de instalar el paquete vamos por ultima veza paquetes y le damos a cargar paquete y seleccionamos ISwR

6 ¡Listo! el paquete esta cargado. Otra forma de cargar el paqueteuna vez hecho los pasos 1 al 5 es escribir >library(ISwR)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Para lo siguiente se necesita cargar el paquete ISwR.

Las tecnicas de indexacion para la extraccion de partes de undata.frame son un poco engorrosas. Hay un par de funcionespara hacer las cosas un poco mas faciles> thuesen

De el anterior data.frame que sea un subconjunto del anterio> sub_thue <- subset(thuesen,blood.glucose<7)

o tambien crear un data.frame pero con una columna mas enfuncion de otra dada> trasn_thue <-

transform(thuesen,log.gluc=log(blood.glucose))

subset tambien trabaja en vectores individuales.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Valores faltantes

En el analisis de datos, puede pasar que un conjunto de datos noestan disponibles (el paciente no se presento, un experimentofallido, etc.), un software estadıstico necesidades formas detrabajar con estos datos. R permite trabajar con estos datosdenotados como NA. Los calculos con NA produce NA .La funcion is.na (x) averiguar cuales son los elementos de x quese registran como faltantes (NA), esto es importante pues no sepuede hacer comparaciones de la forma x == NA.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Recordemos que un data.frame es una lista de vectores y/ofactores de la misma de longitud, que se relacionan, de manera quelos datos en la misma posicion proceden de la misma unidadexperimental .Dentro de los data.frame podrıamos queres agrupar datos en otrodata.frame data.frame> setosas= iris[iris$Species == "setosa", ]

> versicolores= iris[iris$Species == "versicolor", ]

Alternativamente se puede utilizar la funcion split, que generauna lista de vectores de acuerdo a la agrupacion.> otra_tabla<- split(iris$Petal.Length,iris$Species)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Primero vamos a leer de un archivo unos datos> uno= scan("C:\\...\\uno.txt")

> dos= scan("C:/.../dos.txt")

Es trivial ordenar un vector en R usando la funcion sort

Sin embargo, la clasificacion de un solo vector no es generalmente lo que unorequiere.Mas bien, uno quiere ordenar unas series de variables de acuerdo a los valoresotra variable.Hay una forma de hacer esto que puede ser un poco abstracta al principio, peroes realmente muy potente. En primer lugar, calculemos un ordenamiento porındice de una variable.> order(dos)

El resultado son numeros del 1 al 11 (la longitud del vector original llamadodos)Interpretacion puede leerse como: El orden desendente de dos puede hacersetomando los ındices de la siguiente manera 3, 1, 2, 6, etc.Usando esta indexacion podemos ordenar el vector uno> aux= order(dos)

> uno[aux]

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

> sexo= factor( c(1,2,2,2,2,2,1,1,1) )

> levels(sexo)= c("M","H")

> edad= c(9,10,10,11,9,9,10,11,8)

> t_sangineo= factor(c(1,2,1,2,2,2,1,1,3))

> levels(t_sangineo)= c("O","A","B")

> tabla= data.frame(sexo,edad, t_sangineo)

> tabla

El ordenamiento por varios criterios se hace simplemente al tener variosargumentos para order. Por ejemplo, order(sexo, edad) hara primero unadivision entre los hombres y mujeres, y despues dentro de cada sexo ordenarapor la edad.> aux= order(sexo, edad)

> tabla[aux,]

El ordenamiento en orden inverso se puede manejar, por ejemplo, multiplicandopor menos uno una variable.> aux= order(sexo, -edad)

> tabla[aux,]

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Hasta ahora, hemos visto los componentes y objetos del lenguajeR. Como R es un lenguaje de programacion, permite la ejecucionexpresiones condicionales y el uso de ciclos.Hay varios de ciclos en R que seran utiles cuando hagamosnuestras propias funciones. Veamos la sintaxis de esto ciclosSintaxis del ifif( condicion ) { expresion si la condicion cierta }

else { expresion si la condicion es falsa }

Sintaxis del whilewhile( condicion ) {expresion}

En el ciclo while (condicion) la expresion debe ser evaluada,siempre y cuando la condicion es TRUE.Sintaxis del forfor ( ındice in vector ) {expresion}

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Lectura de un archivo

Algunos comandos con los que contamos para leer datos de en unarchivo sonscan("...ruta")

read.csv("...ruta")

read.table("...ruta")

algunos parametros utiles para estas funciones son:header para leer encabezadossep para saber cual es el caracter que separa los datos

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Escritua en algun archivo

Una vez que hemos trabajado nuestros datos y tenemos nuestros resultadosguardados en una variable x, quisieramos poder guardarlos. Algunos comandospara guardar datos en algun archivo son:write(x,"...ruta")write.csv(x,"...ruta")write.table(x,"...ruta")y algunos parametros que nos pueden ser utiles son:append = FALSE para agregar al final de un archivoquote = TRUE para ponerle comillas a lo que no es numericosep = " " el caracter con el que va a separar los datosrow.names = TRUE para poner los nombres del los renglonescol.names = TRUE para poner los nombres de las columnas

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Podemos ir a leer y escribir de un libro de excel siempre que cargemos elpaquete xlsReadWrite con las funciones:read.xls("...ruta")write.xls(x, "...ruta")Algunos parametros de read.xls soncolNames = TRUE

type = "data.frame"

sheet = 1

from = 1

rowNames = NA

y algunos parametros para write.xls soncolNames = TRUE

sheet = 1

from = 1

rowNames = NA

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Algunas funciones ya programadas

paste() pega vectores despues de convertirlos en caracteres

choose(n, k) calcula las combinaciones de n en k, es decir n!(n−k)!k!

max(x) el maximo elemento de x

min(x) el mınimo elemento de x

range(x) calcula el rango, es decir c(min(x), max(x))

sum(x) suma los elementos de x

diff(x) calcula la diferencia entre x[i] - x[i-1]

prod(x) el producto de los elementos de x

round(x, n) redondea el elemento x a n decimales

cumsum(x) devuelve la suma acumulada del elemento x[1] hasta x[i]para i = 1, 2, . . .

cumprod(x) igual que cumsum() pero con el producto

rowSums(x) suma los renglones de un objeto matriz;

colSums(x) lo mismo que rowSums() pero para las columnas

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

mean(x) el promedio aritmetico x

median(x) la mediana de los elementos de x

var(x) calcula la varianza de los elementos de x (calculadosobre n-1)

sd(x) desviacion estandar de x

cov(x, y) covarianza entre x y y

rowMeans(x) la media por renglones

colMeans(x) media por columnas columnas

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Sintaxis para escribir una funcion

Gran parte de las cosas que uno necesita resolver no estan hechasen una funcion, entonces usando las funciones ya hechas podemosprogramar nuestras funciones. La sintaxis para hacer nuestrasfunciones esnombre_para_la_funcion <- function (

lista_de_argumentos )

{

instrucciones

return (resultado o resultados en forma de lista)

}

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

La funcion de densidad de una variable aleatoria X , denotada porfX (x), es una funcion matematica intenta modelar el comportamieto deuna poblacion, y cumple con

fX (x) ≥ 0∫∞−∞ fX (u)du = 1 en el caso continuo∑i

fX (xi ) = 1 en el caso discreto

Grafiquemos la funcion de densidad de una normalx= seq(0,2.5,by=0.01)

densidad= dnorm(x, 1.70,sqrt(0.15))

plot(x,densidad)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Funcion de distribucion se define como FX (x) =∫ x−∞ f (u) du en

el caso continuoPropiedades

Es una funcion continua por la derecha.

Es una funcion monotona no decreciente.

limx→−∞ F (x) = 0 y limx→∞ F (x) = 1

distribucion= pnorm(x, 1.70,sqrt(0.05))

plot(x,distribucion)

Funcion cuantil. Dada una funcion de distribucion FX (·), lafuncion cuantil devuelve un valor x tal que FX (x) = p con0 ≤ p ≤ 1.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Generacion de numeros aleatorios

Podemos generar n numeros pseudo-aleatorios de las siguientesvariables aleatorias discretas

rbinom(n, size, prob) Binomial

rpois(n, lambda) Poisson

rgeom(n, prob) geometrica

rhyper(n, m, u, k) hipergeometrica

rnbinom(n, size, prob) binomial negativa

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Y de las siguientes variables aleatorias continuas

runif(n, min=0, max=1) uniforme

rnorm(n, mean=0, sd=1) Gaussiana o normal

rexp(n, rate=1) exponencial

rgamma(n, shape, scale=1) gamma

rweibull(n, shape, scale=1) Weibull

rcauchy(n, location=0, scale=1) Cauchy

rbeta(n, shape1, shape2) Beta

rt(n, df) ‘Student’ (t)

rf(n, df1, df2) Fisher–Snedecor (F)

rchisq(n, df) Pearson

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

Vamos hacer un histograma y encima grafiquemos la densidad quegenero la muestra, para esto vamos a utilizar la funcion curve quees una forma alternativa de crear graficasx <- rnorm(1000)

hist(x,freq=F)

curve(dnorm(x),add=T)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Matrices y operaciones de matricesListas, Data frames e indexacionSeleccion condicional y ordenamientosControl de flujoLeer y escribir datos desde un archivo de textoFunciones

De esta manera podemos ver muchos resultados teoricos como por ejemplo,que una distribucion t cuando n→∞ es una N(0, 1).x= seq(-10,10,0.1)

plot(dt(x,1),type="l")

lines(dt(x,20),col="red")

lines(dt(x,50),col="green")

lines(dnorm(x),col="blue")

O que si tenemos n observaciones provenientes de una distribucion N(µ, σ),entonces x ∼ N(µ, σ√

n), un intervalo de confianza al 95% de confianza es

obtenido como

x + σ√n

Φ0.025 ≤ µ ≤ x + σ√n

Φ0.975

sigma = 12

xbar = mean( rnorm(100,5,sigma) )

n = 5

sem = sigma/sqrt(n)

sem

xbar + sem * qnorm(0.025)

xbar + sem * qnorm(0.975)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Resumen estadıstico de una muestraGraficos: Histogramas, Distribucion acumulada empırica, Q-Q plots y Boxplots

Es facil calcular resumenes estadısticos con R. Por ejemplocalculemos la media, desviacion estandar, varianza, y la medianax = rpois(200,8)

mean(x)

sd(x)

var(x)

median(x)

Los cuantiles pueden ser obtenidos asıquantile(x)

opvec <- seq(0,1,0.1)

quantile(x,pvec)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Resumen estadıstico de una muestraGraficos: Histogramas, Distribucion acumulada empırica, Q-Q plots y Boxplots

Un buen resumen estadıstico es obtenido bajo la funcion summarynormales= rnorm(100, 12, sqrt(4) )

summary(normales)

Tambien nos sirve para un conjunto de datos como por ejemplo eldata.frame irissummary(iris)

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Resumen estadıstico de una muestraGraficos: Histogramas, Distribucion acumulada empırica, Q-Q plots y Boxplots

Funcion de distribucion empırica acumulativa

La funcion de distribucion empırica acumulada se define como lafraccion de los datos menores o iguales a x . Es decir, si x es laobservacion k-esima mas pequena, y y es la observacion (k+1)mas pequena entonces la proporcion k/n se asigna a el intervalo[x,y) La funcion de distribucion acumulada empırica se puedegraficar de la siguiente manerax= rnorm(100,23,8)

n <- length(x)

plot(sort(x),(1:n)/n,type="s",ylim=c(0,1))

El objetivo de calcular la funcion empırica de distribucionacumulada es ver si los datos provienes de una distribucion normal.

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Resumen estadıstico de una muestraGraficos: Histogramas, Distribucion acumulada empırica, Q-Q plots y Boxplots

qqnorm

Hacer una grafica cuantil cuantil en general no es sencillo.Afortunadamente, hay una funcion hacerlo.Por ejemplo para obtener la fucion cuantil- cuantil de una muestraque suponemos que es normal usamos el comando qqnorm.qqnorm(x)

Por otro lado, la funcion qqplot produce una grafica cuantil-cuantilpara dos conjuntos de datos.y <- rt(200, df = 5)

qqnorm(y)

qqline(y, col ="red")

qqplot(y, rt(300, df = 5))

Miguel Angel Chong [email protected] Curso de R

IntroduccionFamiliarizacion con el lenguajeConceptos fundamentales de R

Estadısticas descriptivas y graficas

Resumen estadıstico de una muestraGraficos: Histogramas, Distribucion acumulada empırica, Q-Q plots y Boxplots

La grafica de caja y brazos o boxplot para un vector la podemoscalcular como sigueboxplot(x)

Para datos agrupados podemos hacer los mismos graficos que en elcaso unidimensional, como por ejemplo histogramas de cadavariableo tambien un boxplot para cada variableboxplot(iris)

Miguel Angel Chong [email protected] Curso de R