miércoles, 18 de septiembre de 2013

Usando R

Análisis básicos usando R

Análisis básicos con R

Continuamos elaborando algunos análisis básicos empleano R, en el contexto del análisis estratégico. En esta oportunidad practicamos la elaboración de algunos gráficos básicos.Para ello hemos utilizado data sobre disponibilidad de alimentos, obtenida del INE, e información sobre disputados a la Asamblea Nacional venezolana en el periodo anterior obtenida de Wikipedia.

Recordemos que para crear un vector y una matrix en R procedemos de la siguiente forma:

# crea un vector
a <- c(1, 2, 3, 4, 5, 6, 7, 8)
a
## [1] 1 2 3 4 5 6 7 8
# crea una matriz que se rellena por columna
A <- matrix(a, nrow = 2, ncol = 4, byrow = FALSE)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    3    5    7
## [2,]    2    4    6    8
# crea una matriz con u codigo simplificado
A <- matrix(a, 2, 4)
# transponemos la matriz
t(A)
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
## [4,]    7    8

Adquisición de la data en hojas tipo Excel en zonas en las que la coma se emplea como separador decimal (y por tanto los valores de la tabla se separan con punto y coma)

d1 <- rea.csv2("~/disponibilidad.cvs", header = T)  #evita que usemos:
# read.csv('~/disponibilidad.csv', sep=',', dec=';')

Revisión de la data

Exploramos la data para ver cuántos casos y cuantas variable tiene la data:

dim(d1)
## [1] 11  3
# se puee obtener en forma separada:
nrow(d1)
## [1] 11
ncol(d1)
## [1] 3

La data tiene once casos y tres variables. Ahora podemos investigar qué tipo de variables tenemos, y si lo deseamos, podemos reasignar la modalidad y ordenar la data siguiendo algún criterio:

# para conocer la clasificacion de las variables
str(d1)
## 'data.frame':    11 obs. of  3 variables:
##  $ años     : int  1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 ...
##  $ calorias : int  2267 2163 2202 2127 2254 2361 2120 2279 2460 2355 ...
##  $ proteinas: num  60.4 59.6 64.9 61.8 66.4 68.1 63.1 67.9 69 66.9 ...
# cambiar el tipo de variable asignado por R
id$proteina <- as.factor(id$proteina)
# ordenar
d1$calorias <- ordered(d1$calorias, levels = c())

Podemos acceder a valores individuales dentro de la data, a filas o a columnas, para ello:

# para acceder a toda la columna 3

d1[, 3]
##  [1] 60.4 59.6 64.9 61.8 66.4 68.1 63.1 67.9 69.0 66.9 71.1

# equivale a
d1$proteinas
##  [1] 60.4 59.6 64.9 61.8 66.4 68.1 63.1 67.9 69.0 66.9 71.1

# acceder a la segunda variable del caso 1
d1[1, 2]
## [1] 2267

# información de toda la fila 3
d1[3, ]
##   años calorias proteinas
## 3 1998     2202      64.9

# acceder a los 4 primeros casos
d1[1:4, ]  #ofrece informacion desde la celda 1 hasta la celda 4, incluyendo las columnas
##   años calorias proteinas
## 1 1996     2267      60.4
## 2 1997     2163      59.6
## 3 1998     2202      64.9
## 4 1999     2127      61.8
# visualizamos los 4 primeros registros
head(d1, 4)
##   años calorias proteinas
## 1 1996     2267      60.4
## 2 1997     2163      59.6
## 3 1998     2202      64.9
## 4 1999     2127      61.8

# visualizamos los ultimos 4 registros
tail(d1, 4)
##    años calorias proteinas
## 8  2003     2279      67.9
## 9  2004     2460      69.0
## 10 2005     2355      66.9
## 11 2006     2468      71.1

d1[d1$años < 2000, ]  # de la base de datos y de la variable años, toda la data cuyo año es menot a  2000
##   años calorias proteinas
## 1 1996     2267      60.4
## 2 1997     2163      59.6
## 3 1998     2202      64.9
## 4 1999     2127      61.8

Para cambiar un valor dentro de un data.frame

# queremos cambiar el valor de la tercera celda de la columna precio

d1$calorias[3] <- 2420

Obtenemos algunas medidas de posición:

summary(d1[, 2:3])
##     calorias      proteinas   
##  Min.   :2120   Min.   :59.6  
##  1st Qu.:2208   1st Qu.:62.5  
##  Median :2279   Median :66.4  
##  Mean   :2298   Mean   :65.4  
##  3rd Qu.:2390   3rd Qu.:68.0  
##  Max.   :2468   Max.   :71.1

Elaboración de gráficos

Podemos elaborar un gráfico para observar la relación entre proteinas y calorias en los años analizados. Creamos el título principal usando main(), los títulos de los ejes con xlab(), ylab() respectivamente

plot(d1$proteinas, d1$calorias, main = "Venezuela. Consumo protéico y calorias, 1996-2006", 
    xlab = "consumo de proteina", ylab = "calorias", pch = 20)
grid()

plot of chunk unnamed-chunk-1

Tenemos otra base de datos con informacion sobre diputados y partidos políticos en la Asamblea, en el pasado periodo. Exploremos su contenido y practiquemos cómo crear algunos gráficos básicos en R:

str(as)
## 'data.frame':    163 obs. of  5 variables:
##  $ diputado   : Factor w/ 162 levels " Adel El Zabayar Samara ",..: 32 93 24 34 38 60 63 105 153 19 ...
##  $ estado     : Factor w/ 25 levels "Amazona","Anzoátegui",..: 1 1 2 2 2 2 2 2 2 3 ...
##  $ partido    : Factor w/ 6 levels "Independiente",..: 4 4 4 4 4 4 4 4 4 4 ...
##  $ siglas     : Factor w/ 6 levels "Independiente",..: 5 5 5 5 5 5 5 5 5 5 ...
##  $ comentarios: Factor w/ 21 levels " Abre Brecha ",..: 20 19 14 14 14 14 14 14 18 14 ...
barplot(sort(table(as$partido)), las = 2, names.arg = c("independientes", "mov. ecol", 
    "pcv", "ppt", "upp", "psuv"), border = "white", ylim = c(0, 140))
grid()

plot of chunk congreso


barplot(table(as$partido, as$estado), las = 2, col = rainbow(6), border = "NA", 
    ylim = c(0, 20))
grid()

legend("topleft", c("independientes", "mov. ecol", "pcv", "psuv", "ppt", "upp"), 
    col = rainbow(6), pch = 15, bty = "n")

plot of chunk congreso

No hay comentarios: