PDF de programación - R - Análisis de datos

Imágen de pdf R - Análisis de datos

R - Análisis de datosgráfica de visualizaciones

Publicado el 20 de Mayo del 2019
1.055 visualizaciones desde el 20 de Mayo del 2019
1,6 MB
96 paginas
Creado hace 9a (07/10/2014)
ANÁLISIS DE DATOS



Ricardo Aler Mur



R

E L E M E N T O S B Á S I C O S

HISTORIA DE R

HISTORIA DE R

• R es un dialecto del lenguaje S

• S fue desarrollado por John Chambers en los

laboratorios Bell en 1976. El objetivo era facilitar el
análisis estadístico. Inicialmente usaba librerías en
Fortran, después fueron reescritas a C.

• Característica de S: análisis de datos interactivo y
también posibilidad de escribir scripts (programas)

• En la actualidad es propiedad de TIBCO (25

millones de dolares)

HISTORIA DE R

• R se crea en 1991en Nueva Zelanda por Ihaka y

Gentleman, con el objetivo de tener similares
posibilidades a S. Sintaxis similar aunque los detalles
internos son distintos

• En el 2000 se crea R 1.0.0 con licencia GNU GPL

(software libre)

• La versión 3.0.2 salió en Diciembre 2013. Desarrollo

muy activo

• Ejecuta en cualquier plataforma (al parecer incluso

en Playstation 3)



HISTORIA DE R

• Ventajas de R:

• Es libre

• Es bastante ligero (comparar el arranque de R

con el arranque de Matlab)

• Orientado al proceso y análisis de datos (gracias
a la estructura data.frame). El acceso a matrices
y data.frames es parecido al de Matlab (ej:
m[1:10,1:2] accede a las diez primeras líneas de
la matriz y a las dos primeras columnas)

• Gráficos potentes

• El más utilizado en análisis de datos (según

encuestas)

• Comunidad muy activa. 4000 paquetes

desarrollados y disponibles en CRAN:
http://cran.r-project.org/

• Mucha documentación y libros sobre el lenguaje



HISTORIA DE R

• Desventajas de R:

• Ya tiene 40 años
• El procesamiento es con datos en memoria (no tan bueno

para conjuntos de datos masivos, aunque dispone de
alternativas: comunicación con mySQL, paquetes para que
los datos residan parcialmente en disco, H2O, …)

• Poco soporte para gráficos en 3D, gráficos dinámicos y

gráficos interactivos, aunque en el último año han
aparecido maneras de generar gráficos interactivos en
javascript desde R, con Shiny, rCharts, …
• http://shiny.rstudio.com/gallery/
• Ej: http://shiny.rstudio.com/gallery/nvd3-line-chart-output.html





RSTUDIO



OBJETOS EN R

OBJETOS EN R

• Escalares: son realmente vectores de un elemento

• Vectores: todos los elementos del mismo tipo

• Factores

• Matrices: todos los elementos del mismo tipo
• Listas: permite combinar elementos de tipos

distintos

• Data frames: son matrices con elementos de

distintos tipos



• Nota: para este tutorial se ha seguido
• http://www.dcc.fc.up.pt/~ltorgo/DataMiningWithR/code.html

VARIABLES

• Asignaciones a variables:

• x <- 945 es lo mismo que x = 945
• Ojo! R es case-sensitive



LISTAR Y BORRAR VARIABLES

• ls(): listar objetos, rm(): borrar objetos

• rm(list=ls()): borrar todos los objetos

TIPOS DE DATOS ESCALARES

(“ATOMIC”)

• Character:

x = "cadena de caracteres"

x = ‘cadena de caracteres’

> paste("variable=",3,"\n")

[1] "variable= 3 \n"

> cat(paste("variable=",3,"\n"))

variable= 3



• Logical:

• x = TRUE, x = T

• x = FALSE, x = F


• Numeric:

• x = 3

• x = NA

• is.na(x) == TRUE
• (valor por omisión,

missing value)

• x = 1/0 == Inf

• X=Inf/Inf == NaN

• is.nan(x) == TRUE

• Complex:
• x = 3 + 4i



is.complex(x) == TRUE



OBJETOS EN R

• Escalares

• Vectores
• Factores
• Matrices
• Data frames
• Listas

VECTORES

NA es “sin valor” o valor faltante
(missing value, not acknowledged)

• Todos los elementos deben ser del mismo tipo:

VECTORES

• Vector vacío:



• Redimensionamiento dinámico de vectores:



VECTORES

• Concatenación de vectores:



> x = c(1,2,3)

> y = c(4,5)

> c(x,y)

[1] 1 2 3 4 5



VECTORIZACIÓN

• Normalmente, una función aplicada a un vector,

es aplicada a cada uno de los elementos

VECTORIZATION

• Nuestras propias funciones también están

vectorizadas

> mif = function(x) {x^2}
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
> mif(x)
[,1] [,2] [,3]
[1,] 1 4 9
[2,] 16 25 36


REGLA DEL RECICLADO

• Si por ejemplo se suman dos vectores de distinto tamaño, el mas

pequeño se replica hasta que tiene el mismo tamaño que el grande
(esto es cierto incluso con valores individuales)

ARITMÉTICA DE VECTORES

• +,-,*,/,^: Se aplican componente a componente. Si
los dos vectores tienen tamaños distintos, se aplica
la regla del reciclado:



> x = c(1,2,3,4)
> x+1
[1] 2 3 4 5
> x^c(1,2)
[1] 1 4 3 16
> x+c(10,11,12,13)
[1] 11 13 15 17

• Producto escalar: x %*% y

• (x1,x2,x3) . (y1,y2,y3) == x1*y1+x2*y2+x3*y3

• %/%: división entera, %%: módulo (resto)



EJEMPLO: CÁLCULO DE LA DISTANCIA

EUCLIDEA



EJEMPLO: CÁLCULO DE LA DISTANCIA

EUCLIDEA



> x = c(1,2,3,4)

> y = c(6,7,8,9)
> x-y

[1] -5 -5 -5 -5

> (x-y)*(x-y)
[1] 25 25 25 25
> x = c(1.1,1.5,3.7)
> y = c(7.9,8.0,1.3)
> x-y
[1] -6.8 -6.5 2.4
> (x-y)*(x-y)
[1] 46.24 42.25 5.76
> sum((x-y)*(x-y))
[1] 94.25
> sqrt(sum((x-y)*(x-y)))
[1] 9.708244

> deuclidea1 = function(x,y)
{return(sqrt(sum((x-y)*(x-y))))}
> deuclidea1(x,y)
[1] 9.708244


> deuclidea2 = function(x,y)
{return(sqrt((x-y) %*% (x-y)))}
> deuclidea2(x,y)
[,1]
[1,] 9.708244


OBJETOS EN R

• Escalares

• Vectores
• Factores
• Matrices
• Data frames
• Listas

FACTORES

• Se utilizan en análisis de datos como una

representación eficiente de valores discretos
(categóricos)

FACTORES



GENERAR VECTORES MEDIANTE

SECUENCIAS

• Crear un vector con enteros de 1 a 1000



• Cuidado con la precedencia de los operadores:

GENERAR VECTORES MEDIANTE

SECUENCIAS

• Secuencias invertidas y secuencias de números

reales:

GENERAR VECTORES MEDIANTE

REPETICIONES



SECUENCIAS ALEATORIAS

• 10 valores de una gaussiana(0,1)



• Gaussiana con media 10 y desviación 3



• 5 valores de t-student con 10 grados de libertad

ACCESO A VECTORES (SUB-SETTING)

• Acceso simple: x[3]

• Acceso mediante índices. Tres tipos:

• Índices lógicos (booleanos)
• Índices por valor
• Índices por nombres



ACCESO A VECTORES MEDIANTE

ÍNDICES LÓGICOS



==, !=, >, <, >=, <=, &, |, !, is.na(), is.nan()

ACCESO A VECTORES MEDIANTE

ÍNDICES BOOLEANOS

• Convertir todos los
valores NA a cero:



> x = c(1,2,NA,3,NA,4)
> x
[1] 1 2 NA 3 NA 4
> x[is.na(x)] = 0
> x
[1] 1 2 0 3 0 4


• Cambiar el signo a

los valores
negativos (igual
que x = abs(x) ):

> x = c(-1, 2, -3, 4)
> x[x<0] = -x[x<0]
> x
[1] 1 2 3 4

ACCESO A VECTORES MEDIANTE

ÍNDICES DE VALORES



Se puede usar el “-” para
excluir valores:

ACCESO A VECTORES POR NOMBRE

• Las posiciones de un vector pueden tener nombre



• Acceso por nombre:

ACCESO AL VECTOR COMPLETO

• Por ejemplo, para borrar todos los elementos de un

vector x:
• x[] = 0 es lo mismo que x[1:length(x)] = 0 (se aplica la “regla

de reciclado”). Asigna 0 a todas las posiciones del vector

• pero es distinto de x = 0, el cual convierte x en un único

valor



> x
[1] 1 2 3 4
> x[]=0
> x
[1] 0 0 0 0
> x = 0
> x
[1] 0



ESTRUCTURAS DE CONTROL

• ESTRUCTURAS DE CONTROL:

• for
• while
• repeat



ESTRUCTURAS DE CONTROL

El bucle for recorre vectores (de
cualquier tipo):

> for (i in c(1,2,3)) { print(i)}
[1] 1
[1] 2
[1] 3

> for (i in c("uno","dos","tres"))
{print(i)}
[1] "uno"
[1] "dos"
[1] "tres"

> i=1
> while(i<4){print(i); i=i+1}
[1] 1
[1] 2
[1] 3


> i=1
> while(TRUE){print(i); i=i+1;
if(i>=4) break}
[1] 1
[1] 2
[1] 3


HACIENDO LAS COSAS A LA MANERA

DE R

• Contar cuantos valores son impares en un vector x

PEOR

MEJOR

CON VECTORIZACIÓN:

sum(x %% 2)

o

sum(x %% 2 == 1)

ESTRUCTURAS DE CONTROL

IF:

> if(i>3) {print(i)}
> if(i>2) {print(i)} else {print(2*i)}

IF es una función!

> x = if(i>3) i else 2*i
> x
[1] 4

ESTRUCTURAS DE CONTROL:

FUNCIONES

• Las funciones son objetos
• Pueden llevar parámetros con nombre con valor por omisión
• Una función devuelve lo último que se ejecuta (se puede utilizar

return, pero no es necesario)

> f = function(x, y=FALSE) {if(y) x else x*x}
> f
function(x, y=FALSE) {if(y) x else x*x}
> f(2)
[1] 4
> f(2,TRUE)
[1] 2
> f(2,y=TRUE)
[1] 2

FICHEROS CON PROGRAMAS (SCRIPTS)

• Archivo / Nuevo script

• Archivo / Abrir script
• CTRL-R: ejecutar una línea del script

• Es necesario usar source(“miscript.R”) cada vez que

modifiquemos el script
• (esto se hará automáticamente cuando usemos Rstudio)

ALGUNOS EJERCICIOS

EXPERIMENTO VECTORIZACIÓN

• Como medir el tiempo: t0 = proc.time()

• Ejercicio: hacer un script que genere dos vectores:

• x=seq(1,10^6)
• y=x*5.2



• Y los multiplique componente a componente de dos

maneras:
• Con un bucle

• x*y

• Medir tiempos y comparar

HACIENDO LAS COSAS AL MODO R

• Sea un vector x = seq(1,10^5)

• Queremos calcular otro vector y de tal manera que

• y[i] = x[i]-x[i+1] para todo i de 1 a length(x)-1

• Hacedlo de dos maneras distintas (con bucle y

vectorizado) y pensad si se os ocurre alguna
variante mas. Medid tiempos.



• Regla: evitar usar bucles en la medida de lo posible

EJERCICIOS

• Crear un vector de 10 elementos así:

• x=sample(1:100, 10)

• Ejercicios:

• Poner a cero los valores pares.
• Poner a cero las posiciones pares. Hacedlo de tres maneras

distintas

• Escribir una función avg_gt con dos argumentos: x y gt (x es
un vector y gt es un real). La función computa la media de
los valores de x mas grandes que gt.



OBJETOS EN R

• Escalares

• Vectores
• Factores
• Matrices
• Data frames
• Listas

MATRICES

• Son como los vectores, pero en DOS dimensiones
• Se pueden crear a partir de un vector y cambiando la

dimensión. Notar que los valores se extienden por columnas:
  • Links de descarga
http://lwp-l.com/pdf15956

Comentarios de: R - Análisis de datos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad