Ii - Primera Sesion Con R Vectorizacion y Funciones
Ii - Primera Sesion Con R Vectorizacion y Funciones
Ii - Primera Sesion Con R Vectorizacion y Funciones
APLICADA CON R
FACULTAD DE INGENIERIA
UNIVERSIDAD DE SUCRE
II. PRIMERA SESION CON R, VECTORIZACION Y FUNCIONES
1
II. PRIMERA SESION CON R, VECTORIZACION Y FUNCIONES
3
LAS HOJAS DE TRUCOS O CHEAT SHEET DE R
4
ALMACENAMIENTO Y ELIMINACIÓN DE OBJETOS
FUNCIONES PRIMITIVAS
1) Directorio o carpeta de trabajo, Rutas y Archivos. Funciones setwd(),
getwd(), choose.dir(), file.choose().
2) objects(), ls(), ls.str(), rm(x, y, z), rm(list=ls()), (Borra todo).
3) Números, vectores y matrices. Aritmética vectorial. El operador dos puntos
(:), se utiliza para generar secuencias, ejs:
x=1:25; y=25:1; z=x+y, w=x*y, v=x/y.
4) FUNCIONES DE R PARA RESUMIR DATOS (ESTADISTICA DESCRIPTIVA):
Sea un vector numérico cualquiera, x = c(10.4, 5.6, 3.1, 6.4, 21.7); Podemos
extraer información de resumen con las funciones: max(x); min(x); mean(x);
median(x); range(x); sum(x); prod(x); length(x); summary(x); var(x); sd(x).
5) Funciones matemáticas. Help(“Math”). Y nos dará dos opciones a elegir.
6) Para obtener la lista de funciones de cada grupo, es decir obtener los
miembros de cada grupo, se hace llamando getGroupMembers(); por
ejemplo para mostrar los miembros de funciones del grupo Math, se lanza
la orden:
getGroupMembers(Math) 5
SUCESIONES
La función seq() puede generar secuencias de números reales:
seq(1, 5, 0.5)
seq(length=9, from=1, to=5)
La función rep() replica los valores en x: rep(x, veces)
rep(1, 30)
La función sequence(nvec): donde nvec es un vector de enteros no
negativo. Para cada elemento de nvec genera secuencias:
sequence(c(3,2,4)); sequence(c(2,5,7))
La función gl(). Genera niveles de factores. Use gl(n,k, length = n*k, labels
= seq_len(n), ordered = FALSE). Genera factores especificando el patrón
de sus niveles:
gl(3, 5)
gl(3, 5, length=30)
gl(2, 6, label=c("Macho", "Hembra"))
6
gl(2, 10)
FUNCIONES PRIMITIVAS
ESTADISTICA DESCRIPTIVA
Pida ayuda y anote la ayuda de R a continuación de cada función:
summary(). summary is a generic function used to produce result summaries of the results of various model fitting
functions. The function invokes particular methods which depend on the class of the first argument.
max(), min(). Maxima and Minima. Returns the (regular or parallel) maxima and minima of the input values. pmax*() and pmin*()
take one or more vectors as arguments, recycle them to common length and return a single vector giving the ‘parallel’ maxima (or
minima) of the argument vectors. Ej: x=rnorm(10,20); y=rnorm(10,30); z=data.frame(x,y,pmax(x,y)).
mean(). Generic function for the (trimmed) arithmetic mean.
median(). Compute the sample median.
range(). range returns a vector containing the minimum and maximum of all the given arguments.
sum(). sum returns the sum of all the values present in its arguments.
Form Row and Column Sums and Means. Form row and column sums and means for numeric arrays (or data frames). colSums (x,
na.rm = FALSE, dims = 1); rowSums (x, na.rm = FALSE, dims = 1); colMeans(x, na.rm = FALSE, dims = 1); rowMeans(x, na.rm =
FALSE, dims = 1)
prod(). prod returns the product of all the values present in its arguments.
length(). Get or set the length of vectors (including lists) and factors, and of any other R object for which a method has been
defined.
var(). var, compute the variance of x.
sd(). This function computes the standard deviation of the values in x. If na.rm is TRUE then missing values are removed before
computation proceeds.
7
GRUPOS DE FUNCIONES PRIMITIVAS
PRACTICA: Explore los miembros de los siguientes grupos:
Arith(), Compare(), Ops(), Logic(), Math(), Math2(), Summary().
Puede explorar cada miembro de cada grupo, pidiendo ayuda con help(). Por
ejemplo del grupo Summary, pida ayuda de prod, lanzando la orden: help(prod).
getGroupMembers(Arith)
getGroupMembers(Compare)
getGroupMembers(Ops)
getGroupMembers(Logic)
getGroupMembers(Math2)
getGroupMembers(Summary)
8
CARACTERISTICA DE LAS FUNCIONES TRIGONOMÉTRICAS
Al igual que en Excel y los lenguajes de programación asumen el
ángulo en radianes por lo que hay que hacer la conversión explícita
a grados:
r=pi/180 # factor de conversión
sin(90) # Seno de 90 radianes
sin(90*r) # Seno de 90 grados
cos(90)
cos(90*r)
tan(45)
tan(45*r)
9
PRACTICA: FUNCIONES DE R PARA RESUMIR DATOS (ESTADISTICA DESCRIPTIVA):
porcentaje=humedad*100
p=data.frame(h, porcentaje=porcentaje)
write.table(p,”clipboard”,sep=”\t”,col.names=NA)
write.table(p,”clipboard”)
write.table(p,”clipboard”,sep=”\t”)
write.table(p,”clipboard”,sep=”\t”,col.names=NA) 13
VECTORIZACION Y VECTORES DE ÍNDICES
Vectores lógicos. Los vectores lógicos aparecen al utilizar SOLUCION:
condiciones. Por ejemplo:
fg = c("TV", "SC", "TV", "TO", "SC", "TO",
x = c(5,3,8,10,2,4,3,6,11,21); y = x<5
"SC", "TV", "TO", "SC", "TO", "SC")
Un vector de números naturales positivos. En este caso
los elementos del vector de índices deben pertenecer al # extraer las muestras de TV
conjunto {1, 2, . . . , length(x)}. El resultado es un vector # 1) Creamos una matriz de nombre lista
formado por los elementos del vector referido que
identificando (marco Muestral) fg
corresponden a estos índices y en el orden en que aparecen
en el vector de índices. El vector de índices puede tener lista = data.frame(Id=1:12,fg)
cualquier longitud y el resultado será de esa misma longitud. # 2) Creamos un vector de índices de nombre
Por ejemplo, x[6] es el sexto elemento de x, y x[1:10] es el
vector formado por los diez primeros elementos de x,
ob
(supuesto que length(x) no es menor que 10). y = x[-(1:5)]. ob = lista[,2]=="TV“
Un vector de caracteres. Esta opción solo puede realizarse ob
si el vector posee (nombres) para identificar sus
componentes, en cuyo caso se comportará de modo similar # 3) Vectorizamos la lista con el vector de
al punto 2. fruta= c(5, 10, 1, 20); names(fruta) = índices ob
c("naranja", "plátano", "manzana", "pera"); postre= lista[ob,]
fruta[c("manzana","naranja")].
Ejercicio: Se tiene una lista numerada de muestras de
diferentes formaciones geológicas; SC=San Cayetano,
TV=Toluviejo y TO=Tolu. Se quiere saber cuántas muestras
hay de cada formación geológica.
14
LA FUNCIÓN subset()
PRACTICA. EJERCICIO: Del conjunto de datos humedades, extraiga
subconjuntos de datos para cada valor de la temperatura.
Obtenga ayuda de la función Por ejemplo: h40, h50, … , h80, y expórtelas a una hoja de
Excel.
subset() y anote en su
cuaderno las características y SOLUCION: Cargue el documento humedades, seleccione y
distintos usos de esta función. copie todos los datos, luego lance las siguientes ordenes:
help(subset) h=read.delim("clipboard")
attach(h)
h40=subset(h, temperatura==40)
write.table(h40,”clipboard”,sep=”\t”,col.names=NA)
15
DEPURACION DE LOS DATOS
Traducido de Faraway Julian. 2002. “Practical Regression and Anova using R”
La estadística empieza con un problema, continúa con la recolección de los datos,
procede con el análisis de los datos y finaliza con las conclusiones. Es un error
común de Estadísticos inexpertos inmiscuirse en un análisis complejo sin la
atención debida a cuáles son los objetivos o igualmente si los datos son
apropiados para el análisis propuesto. ¡Mire antes de saltar!
Formulación
“La formulación de un problema es a menudo más esencial que su solución que
puede ser meramente un resultado de la habilidad matemática o experimental”.
Alberto Einstein
16
Para formular el problema correctamente, usted debe:
1. Entienda el contexto físico. Los estadísticos trabajan a menudo en la colaboración con otros y necesitan
entender algunas cosas acerca del área de interés. Considere esto como una oportunidad de aprender algo
nuevo en lugar de un quehacer.
2. Entienda el objetivo. De nuevo, a menudo usted estará trabajando con un colaborador que puede no estar
claro sobre cuáles son los objetivos. Tenga cuidado con “las expediciones de pesca” - si usted no tiene
suficiente claridad, usted querrá casi siempre hallar algo, pero ese algo puede ser simplemente una
coincidencia.
3. Asegúrese que usted sabe que es lo que el cliente quiere. A veces los estadísticos realizan un análisis
mucho más complicado que lo que el cliente realmente necesita. Usted puede encontrarse con que esas
estadísticas descriptivas simples son todo lo que se necesita.
4. Ponga el problema en términos estadísticos. Éste es un paso desafiante y es donde muchas veces ocurren
los errores irreparables. Una vez el problema es traducido en el lenguaje estadístico, la solución es a menudo
rutinaria. Las dificultades con este paso explican por qué las técnicas de Inteligencia Artificial hacen todavía
mucho impacto en las aplicaciones de los estadísticos. Es duro de programar la definición del problema.
Que un método estadístico pueda leer los datos y procesarlos no es suficiente. Los resultados pueden ser
totalmente sin sentido.
17
Recolección de los datos
Es importante entender como fueron recolectados los datos
1. ¿Son los datos observacionales o experimentales? Son los datos una muestra de conveniencia
o fueron obtenidos por un diseñado estudio de la muestra. La manera en que los datos fueron
recolectados tendrá un impacto crucial sobre que conclusiones pueden ser hechas.
2. ¿Son no respuesta? El dato que usted no ve puede ser tan importante como el dato que usted ve.
3. ¿Hay datos faltantes? Este es un problema muy molesto y consume mucho tiempo para tratar con
él.
4. ¿Cómo son codificados los datos? En especial cómo son codificadas las variables cualitativas.
5. ¿Cuáles son las unidades de medición? Muchas veces los datos son recolectados con muchos
más dígitos que los necesarios. Considere el redondeo si esto puede ser ayuda para la
interpretación o los costos de recolección.
6. Tenga cuidado con la entrada de datos erróneos. Los datos erróneos son casi una certeza en
cualquier conjunto de datos reales de al menos un moderado tamaño. Realice algunos chequeos
para limpiar los datos.
18
ALGUNAS FUNCIONES DE USO FRECUENTE EN R PARA LA PREPARACION DE LOS
DATOS ANTES DE ANALIZARLOS:
1. Función sort()
2. Función factor()
3. Función levels()
4. Datos faltantes (NA)
5. Función summary()
install.packages(“faraway”)
library(faraway)
data(pima)
pima
summary(pima)
sort(pima$diastolic)
pima$diastolic[pima$diastolic == 0] <- NA
pima$glucose[pima$glucose == 0] <- NA
pima$triceps[pima$triceps == 0] <- NA
pima$insulin[pima$insulin == 0] <- NA
pima$bmi[pima$bmi == 0] <- NA
19
EJERCICIOS
EJERCICIO: Cargue la tabla pozos. Los valores de ph que están en cero son valores faltantes. Utilice
la constante lógica NA. NA significa “Not Available”, es decir dato faltante. R interpreta la constante
lógica NA como un dato faltante. Seleccione el conjunto de datos pozos en Excel, cópielos y pèguelos
en R con la siguiente orden:
p=read.delim(“clipboard”)
summary(p)
p$ph[p$ph==0]=NA
summary(p)
EJERCICIO: La variable legal y casetabombeo son variables categóricas con las convenciones de:
0=NO y 1=SI. Con la función summary(p), observe que R interpreta estas variables como numéricas.
Para corregirlas se deben primero convertir en factor y después cambiar las categorías por SI y NO.
Esto se hace con las funciones factor() y levels() de la siguiente manera:
summary(p)
p$legal=factor(p$legal)
p$casetabombeo=factor(p$casetabombeo)
summary(p)
levels(p$legal)=c(“NO”,”SI”)
levels(p$casetabombeo)=c(“NO”,”SI”)
20
Funciones de entrada y salida en R
1) Funciones: readline(), print(),cat(), menú().
2) readline(). help("readline"). Read a Line from the Terminal (in
interactive use). peso=readline(“Ingrese peso = “); class(peso);
peso=as.double(peso); class(peso).
5) menu(). help("menu"). Menu Interaction Function. menu presents the user with a
menu of choices labelled from 1 to the number of choices. To exit without choosing
an item one can select 0. Usage: menu(choices, graphics = FALSE, title = NULL)21
FUNCIONES DEFINIDAS POR EL USUARIO
ESCRITURA DE FUNCIONES. R permite al usuario escribir sus
propias funciones, y estas tendrán las mismas propiedades de otras
funciones. Escribir sus propias funciones permite un uso flexible,
eficiente y racional de R. Para que esta función pueda ser ejecutada,
primero es necesario cargarla en memoria, y esto se puede hacer de
varias maneras. Las líneas de la función se pueden escribir
directamente desde el teclado, como cualquier otro comando, o ser
copiada y pegada a un editor de texto. Si la función esta guardada
en un archivo ASCII, se puede cargar con source() como cualquier
otro programa. Si el usuario desea que su función sea cargada cada
vez que comienza R, se puede guardar en un archivo especial
llamado “espacio de trabajo” (del inglés ‘workspace’) .RData que
será cargado en memoria automáticamente si se encuentra en el
directorio de trabajo de R. (Emmanuel Paradis. R para Principiantes).
Para crear o definir una función, se emplea la directiva
Estructura formal de una función. R trata las funciones “function”, en general, asociándola con un símbolo
prácticamente igual que cualquier otra variable. Así, ellas se pueden mediante una operación de asignación, como se muestra
manipular de manera semejante a como se hace con otros objetos en la Figura:
de R: se pueden pasar como argumentos de otras funciones, se
pueden regresar como el valor final de una función, se pueden definir
en el interior de otra función, etc. (Julio Sergio Santana y Efraín
Mateos Farfán. El arte de programar en R: un lenguaje para la
estadística. México: Instituto Mexicano de Tecnología del Agua.
2014)
22
FUNCIONES DEFINIDAS POR EL USUARIO
23
EJERCICIO 1: Crear una función que calcule, evalúe y muestre el índice de
Para Deportistas masa corporal. El índice de masa corporal (IMC) es una medida
de asociación entre la masa y la talla de un individuo ideada por
el estadístico belga Adolphe Quetelet, por lo que también se
conoce como índice de Quetelet. (Wikipedia). Se calcula según
la ecuación: IMC = masa / estatura².
donde la masa se expresa en kilogramos y el cuadrado de la
estatura en metros al cuadrado, siendo la unidad de medida del
IMC en el sistema MKS: kg.m-2 = kg/m²
24
SOLUCIÓN Ejercicio 1: IMC
Una función que resuelva el problema
podría ser como se muestra:
25
EJERCICIO 2: Estadística Descriptiva
Desarrolle una función que reciba un vector numérico
cualquiera y muestre un mensaje que indique cual es el valor
mínimo, máximo, promedio, mediana, desviación estándar y
varianza de la variable indicando el nombre de la variable y sus
unidades.
SUGERENCIAS:
1) Utilice tres parámetros: 1) x: El vector numérico. 2) unidad:
La unidad de la variable, por ejemplo, kg/cm². 3) variable:
Será el tipo de variable, por ejemplo: “resistencia a la
compresión”. Los parámetros unidad y variable, serán
carácter, es decir, no numéricos.
2) Desarrolle la función paso a paso y pruebe cada paso hasta
que funcione bien.
3) Llame a la función: describir().
26
SOLUCIÓN Ejercicio 2:
Estadística Descriptiva
Función describir()
La función quantile(): The generic function
quantile produces sample quantiles
corresponding to the given probabilities. The
smallest observation corresponds to a
probability of 0 and the largest to a probability
of 1.
27
EJERCICIO 3: Desarrolle una función que implemente un menú de 5
Función menú()
opciones:
1. Promedio
2. Máximo
3. Mínimo
4. Varianza
5. Resumen
28
SOLUCIÓN Ejercicio 3:
Estadística Descriptiva
Función Descriptiva()
29
RESUMIENDO INFORMACION: FUNCION aggregate())
http://r-econ.blogspot.com/2013/11/funcion-aggregate-ejemplos.html
Función aggregate EJEMPLO: Muestre un resumen de la Resistencia a la
Compresión del Agregado (rcompa) para cada
En R es fácil resumir información a partir de Formación Geológica (fgeo)
aplicación de funciones sobre los subgrupos
creados según las variables de agrupación (factor o Seleccione y copie con Ctrl+C los
numérica) por las cuales se desean hacer las datos en Excel. Luego en R lance
agrupaciones. Es posible hacer esto con una gran
variedad de funciones (aggregate, split, by, tapply y las ordenes:
con otras funciones del paquete plyr), sin embargo,
este post sólo trata de la función aggregate porque
a=read.delim("clipboard")
está en el paquete base de R y es muy manejable. attach(a)
Según la documentación de la función aggregate,
esta función divide la muestra en subconjuntos, aggregate(rcompa~fgeo,FUN =
calcula los estadísticos deseados por cada summary, data = a)
subconjunto y devuelve el resultado en una forma
conveniente, esto significa que el resultado puede
ser un vector, un data.frame o una lista según sea
Observe que en el
más conveniente.
parámetro FUN, el
Así la sintaxis entera será:
aggregate(variable_a_ser_agrupada ~ variable_de_agrupación,
nombre de la
FUN=función_deseada, data=base_de_datos) función se pasa 30
sin parentesis
[]. Extract or Replace Parts of an EJERCICIOS PROPUESTOS
Object. Operators acting on vectors,
matrices, arrays and lists to extract or 1) Describir los ph de los pozos de los municipios de Corozal,
replace parts. Sincelejo, y Sampues. Cree una función que utilice la función
Usage summary().
x[i] 2) Con lo anterior describa las humedades del trabajo del
x[i, j, ... , drop = TRUE] profesor Fernández para las distintas temperaturas
x[[i, exact = TRUE]]
3) Describa el Consumo energético de la empresa
x[[i, j, ..., exact = (Megavatioshora) (Variable: consumo) de la base de datos
TRUE]] acero. Utilice agricolae (table.freq)
x$name
4) Describa la Producción del tren de bandas calientes
Verifique los miembros de
(Toneladas de acero) (Variable: pr.tbc).
un objeto con: names(x)
De la base de datos acero, responda:
Ejemplo: 1) ¿Qué línea de producción tiene una mayor producción total?
x=c(10,25,15,32,18,22) 2) ¿Qué línea de producción tiene una mayor y menor producción
y=summary(x) promedio en todas las áreas (Tren de bandas calientes, colada
names(y)
continua, convertidor, etc)?. Utilice aggregate().
3) La misma pregunta anterior pero con respecto a la
temperatura.
4) La misma pregunta anterior para el número de averías
detectadas (naverias) 31
NOTA IMPORTANTE PARA LOS PARCIALES 1
35
LA SIGUIENTE ES LA SECUENCIA DE PASOS PARA DESCRIBIR LAS VARIABLES:
temperatura y consumo.
IMPORTAR LOS DATOS DESDE EXCEL HACIA R
36
DESCRIPCIÓN DE LA VARIABLE CUALITATIVA: temperatura
1) Lanzamos la orden summary(temperatura) para realizar un conteo de las
categorías de la variable categórica temperature. Podemos contabilizar el total
de datos, n, con la función length(temperatura) y finalmente podemos obtener los
porcentajes de cada categoría dividiendo el summary(temperature) por
length(temperatura). A continuación se muestran las ordenes con sus resultados:
summary(temperatura)
Alta Baja Media
46 38 33
length(temperatura)
[1] 117
summary(temperatura)/length(temperatura)*100
Alta Baja Media
39.31624 32.47863 28.20513
Con lo anterior, una descripción de la variable categórica temperatura, sería:
De las 117 lecturas de las temperaturas del Sistema, en la fábrica productora de acero,
46 lecturas, es decir, el 39.31624% fueron temperaturas altas, 38 lecturas, es decir, el
32.47863% fueron temperaturas bajas y 33 lecturas, es decir, el 28.20513% fueron
lecturas medias. 37
DESCRIPCIÓN DE LA VARIABLECUANTITATIVA : consumo
summary(consumo)
Min. 1st Qu. Median Mean 3rd Qu. Max.
17.50 99.09 140.10 139.50 182.50 290.70
length(consumo)
[1] 117
Con lo anterior, una descripción de la variable continúa consumo, la cual en la descripción de
la variable, especifica que se refiere al consumo energético de la empresa en Megavatios-Hora.
La descripción sería:
1) El consumo energético de la empresa en la producción del acero, durante los cinco días de
inspección, mostró un consumo promedio (representativo) de 139.50 Megavatios-Hora,
variando desde un consumo mínimo de 17.50 Megavatios-Hora, hasta un consumo máximo
de 29.70 Megavatios-Hora.
2) El 25% (1st Qu.) de los consumos registrados durante los cinco días de inspección de la
empresa estuvo por debajo de 99.09 Megavatios-Hora.
3) El 50% (Median) de los consumos registrados durante los cinco días de inspección de la
empresa estuvo por debajo de 140.10 Megavatios-Hora.
4) El 75% (3rd Qu.) de los consumos registrados durante los cinco días de inspección de la
empresa estuvo por debajo de 182.50 Megavatios-Hora.
38
FIN DE LA SESION