Sei sulla pagina 1di 29

Introducción a R: un entorno de programación

para el análisis de datos y la elaboración de


gráficos

Juan José Gibaja Martı́ns

7 de noviembre de 2008
Índice general

1. Estructuras de datos en R 3
1.1. Creación y eliminación de objetos. Vectores numéricos, de carácter
y lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Factores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Arrays y matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5. Dataframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6. Bases de datos en R . . . . . . . . . . . . . . . . . . . . . . . . . 10

2. Análisis de datos 11
2.1. Variables aleatorias . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2. Estadı́stica descriptiva univariante . . . . . . . . . . . . . . . . . 12
2.3. Estadı́stica para dos variables . . . . . . . . . . . . . . . . . . . . 14
2.4. Tablas en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5. Regresión lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6. Análisis de componentes principales . . . . . . . . . . . . . . . . 19
2.7. Ejemplo de tipologı́a de Comunidades Autónomas con el paque-
te ade4 (Cuidado: Antes de utilizar el package ade4 es preciso
instalarlo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.8. Análisis de componentes principales con FactoMineR . . . . . . . 20

3. Varios 22
3.1. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2. Ayuda en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1
ÍNDICE GENERAL 2

3.3. Establecer el directorio de trabajo . . . . . . . . . . . . . . . . . 23


3.4. Área de trabajo en R (Workspace) . . . . . . . . . . . . . . . . . 23
3.5. Histórico de comandos . . . . . . . . . . . . . . . . . . . . . . . . 23
3.6. Ejecución de comandos desde un archivo de texto . . . . . . . . . 24
3.7. Trabajo con gráficos . . . . . . . . . . . . . . . . . . . . . . . . . 24
Capı́tulo 1

Estructuras de datos en R

1.1. Creación y eliminación de objetos. Vectores


numéricos, de carácter y lógicos
Todo en R son objetos. ¿De qué objetos disponemos en este momento?

ls()

Creamos nuestro primer objeto: un vector numérico. Efectuamos algunas op-


eraciones sobre él y vemos los resultados. Como no los guardamos en ningún
objeto, los resultados se muestran y se pierden:

x<-c(1,2,3)
x
sqrt(x)
1/x
ls()

...y lo eliminamos

rm(x)
ls()

Creamos otro vector, esta vez de tipo carácter. Intentamos efectuar operaciones
numéricas sobre él, pero no es posible.

3
CAPÍTULO 1. ESTRUCTURAS DE DATOS EN R 4

x<-c("Koldo","Kepa")
x
1/x

¿Se pueden crear vectores mixtos?. No. Se fuerza al tipo menos restrictivo.

x<-c(1.5,"Kepa")
x

Vamos a sumar dos vectores. El segundo sólo tiene un elemento. ¿Qué ocurrirá?
Se repite tantas veces como sea necesario para ajustarse a la longitud del más
largo. Nótese que en R no existe el concepto de escalar sino como vector con un
único elemento.

x<-c(1,2)
y<-3
x+y

Algunas funciones sobre vectores numéricos con significados evidentes:

max(x)
min(x)
range(x)
length(x)
mean(x) # media aritmética
var(x) # varianza (con el divisor n-1)

Los vectores lógicos se pueden crear concatenando valores lógicos TRUE, FALSE

temp<-c(TRUE,FALSE,FALSE,FALSE,TRUE)
temp

O también mediante expresiones lógicas (>,<,>=,<= ==, !=). ¿Son mayores


que 13 los componentes del vector x? Algunos sı́ (TRUE) y otros no (FALSE)

temp<-x>13
CAPÍTULO 1. ESTRUCTURAS DE DATOS EN R 5

temp

¿Cómo se puede acceder a los elementos de un vector? Mediante un vector de


ı́ndices (entre [ ])

x<-c(10,20,30,40,50) x[1] # da como resultado el primer elemento


del vector x
x[c(1,2)] # proporciona los dos primeros elementos del vector
x
x[x>30] # nos da un vector con los elementos de x mayores que
30
x[c(-1,-2)] # nos da los elementos de x excepto los dos primeros

Podemos transformar un tipo de vector en otro

cx<-as.character(x)
cx
y<-as.numeric(cx)
y

1.2. Factores
Los vectores son muy importantes pero existen otras estructuras en R como los
factores. Creamos un vector numérico x y a partir de él definimos un factor
fx. Vemos como el procedimiento summary() tiene diferentes efectos sobre un
vector numérico y sobre un factor.

x<-c(1,1,1,2,2,2,1,1,1)
summary(x)
fx<-as.factor(x)
fx
summary(fx)

A los niveles de un factor les podemos poner etiquetas

fx<-factor(x,labels=c("chico","chica"))
CAPÍTULO 1. ESTRUCTURAS DE DATOS EN R 6

fx
summary(fx)

También podemos crear factores a partir de vectores “continuos”. Para ello


generamos una secuencia de 5000 números aleatorios con una distribución nor-
mal de media 100 y desviación estándar 10. A partir de ese vector numérico
creamos un factor con la función cut() estableciendo como puntos de corte
60,70,...,140. Vemos como la función plot() actúa de forma diferente sobre un
factor (fincomes) y sobre un vector numérico (incomes). El efecto de plot()
sobre el factor es similar al efecto de hist() -histogramas- sobre un vector
numérico.

incomes<-rnorm(5000,100,10)
incomes
fincomes<-cut(incomes,breaks=60+10*(0:8))
summary(fincomes)
plot(fincomes)
plot(incomes)
hist(incomes)

1.3. Arrays y matrices


Otra estructura muy importante es el array. Un caso particular de array es la
matriz (array bidimensional). La definimos creando un vector y dándole la forma
deseada mediante su valor dim(). Como ejemplo vamos a crear una matriz de
dos filas y tres columnas.

x<-c(1,2,3,4,5,6)
dim(x)<-c(2,3)
x
x[1,1]
x[1,2]
x[1,]
x[,1]
x[,]
x
CAPÍTULO 1. ESTRUCTURAS DE DATOS EN R 7

1.4. Listas
Las listas son una generalización del concepto de vector. Mientras estos deben
constar de componentes homogéneos en cuanto a su tipo, las listas pueden estar
formadas por componentes de distintos tipos:

ingresos<-rnorm(5000,100,10)
gastos<-rnorm(5000,80,10)

lista1<-list(ingresos,gastos)
lista1
patrimonio<-rnorm(5000,1000,10)
lista2<-list(lista1,patrimonio)

summary(lista2)

1.5. Dataframes
Muy similares a las listas son los dataframes. Son las estructuras más utilizadas
en R para recoger los datos más habituales en Estadı́stica, aquellos en los que
contamos con un conjunto de n individuos para cada uno de los cuales hemos
obtenido los valores en k variables, que pueden ser de distinta naturaleza.

df1<-data.frame(ingresos,gastos,patrimonio)
df1
summary(df1)
plot(df1)

Para referirnos a las variables de un dataframe debemos escribir dataframe$variable.


No obstante, se puede obtener una copia de las variables de un dataframe me-
diante el comando attach(). Cuidado: los cambios que se efectúen sobre estas
variables no afectan al dataframe. Para eliminar las variables de memoria em-
pleamos el comando detach().

attach(df1)
detach(df1)
CAPÍTULO 1. ESTRUCTURAS DE DATOS EN R 8

La forma más cómoda de introducir datos en R es mediante la lectura de un


fichero de datos externo (normalmente en formato texto). Para ello construimos
un fichero en cuya primera fila se recogen los nombres de las variables de los
datos separados por un espacio en blanco. En cada una de las restantes filas se
incluye una etiqueta de la fila y los datos del individuo correspondiente en cada
una de las variables separados también por espacios en blanco. Un ejemplo es
el siguiente:
Peso Altura Edad Sexo
"Koldo" 80 175 18 "chico"
"Luis" 75 182 19 "chico"
"Nerea" 63 164 42 "chica"
"Juanjo" 85 177 34 "chico"
"Amaia" 59 160 34 "chica"
"Ainhoa" 45 167 19 "chica"
"Uxue" 52 170 17 "chica"
Nótese que tanto los nombres de las filas como los valores de las variables cuali-
tativas deben introducirse entrecomillados. No ası́ los nombres de las variables.
Para leer los datos utilizamos el comando read.table(). El resultado es un
objeto de la clase dataframe. En este caso, creamos el dataframe DatosPeso y
creamos una copia de sus variables mediante el comando attach():

DatosPeso<-read.table("DatosPeso.txt", header=TRUE)

DatosPeso
attach(DatosPeso)

A continuación empleamos algunos comandos de estadı́stica descriptiva como


summary(), plot() e hist():

summary(Peso)
plot(Peso)
hist(Peso)

Especialmente útil es el comando tapply() que calcula el estadı́stico recogido en


su tercer argmento a los datos de la variable recogida en su primer argumento
en los grupos formados por el segundo argumento. Los siguientes comandos
calculan la media -mean- del Peso y la Altura para los distintos valores de la
variable Sexo:
CAPÍTULO 1. ESTRUCTURAS DE DATOS EN R 9

tapply(Peso,Sexo,mean)
tapply(Altura,Sexo,mean)

Podemos modificar un dataframe mediante el comando fix(). Podemos probar,


por ejemplo, a añadir nuevos individuos -nuevas filas- al dataframe.

fix(DatosPeso)
DatosPeso

Sin embargo, el número de individuos de la variable Peso no ha cambiado. ¿Por


qué?

length(Peso)

¿Qué ocurrira si hacemos attach(DatosPeso) y volvemos a ver cuántos indi-


viduos tenemos ahora? ¿Por qué?

length(Peso)

Puede construirse un dataframe desde cero introduciendo los datos desde el


teclado. El siguiente comando abre una ventana en forma de hoja de cálculo. Al
cerrarla el resultado se guardará como un dataframe en el objeto Data:

Data<-edit(data.frame())

Para exportar un dataframe de R a un documento de texto deberı́amos escribir


la siguiente lı́nea de comando:

write.table(df1,file="nombrearchivo.txt")

Asimismo podrı́amos exportar dicho dataframe de R a un documento de formato


csv con la siguiente lı́nea de comando:

write.csv(df1,file="nombrearchivo.csv")
CAPÍTULO 1. ESTRUCTURAS DE DATOS EN R 10

1.6. Bases de datos en R


R dispone de gran cantidad de bases de datos a cuyo listado se puede acceder
mediante el comando data():

data()

Para acceder a una base de datos concreta basta con teclear su nombre -si
está accesible en alguno de los packages cargados en R-

WorldPhones
class(WorldPhones)
cars

Si queremos ver las bases de datos disponibles en algún otro package debe-
mos emplear el comando data(package="package"). Por ejemplo, el siguiente
comando nos proporciona la lista de bases de datos disponibles en el package
survival.

data(package="survival")

Para cargar los datos de una base de datos de un package no cargado en memoria
debemos emplear el comando data(database,package="package"):

data(tobin,package="survival")
tobin
class(tobin)
Capı́tulo 2

Análisis de datos

2.1. Variables aleatorias


R dispone de una calculadora de variables aleatorias. Con ella podemos generar
vectores de números aleatorios que siguen diferentes funciones de distribución
teóricas -normal, binomial, t de Student, Chi cuadrado, F-, calcular probabili-
dades a partir de estas funciones, calcular valores crı́ticos, etcétera. Por ejemplo,
el siguiente comando genera un vector de 1000 números aleatorios seleccionados
de una variable aleatoria con distribución binomial de parámetros n=5 y p=0.5

x<-rbinom(5000,5,.5)
x<-factor(x)
plot(x)
x<-rbinom(5000,5,.5)
hist(x)
x<-factor(x)
x
summary(x)

Seguimos jugando con las variables aleatorias:

pnorm(2,0,1) # ¿Qué área queda a la derecha de 2 en una N(0,1)?


qnorm(0.95,0,1) # ¿Qué valor de una N(0,1) deja a su izquierda
0,95?

11
CAPÍTULO 2. ANÁLISIS DE DATOS 12

Vamos a dibujar funciones de densidad. En primer lugar creamos un vector


numérico con los números desde -2 hasta +2 con un incremento de 0.001.

x<-seq(-2,2,by=0.001)

A continuación calculamos la función de densidad normal (0,1) para estos valores


y la representamos gráficamente:

z<-dnorm(x,0,1)

plot(x,z)

Lo mismo para una N(0,2)

w<-dnorm(x,0,2)

lines(x,w)

Lo mismo para una N(0,0.5)

y<-dnorm(x,0,0.5)

lines(x,y)

2.2. Estadı́stica descriptiva univariante


Vamos a revisar algunos conceptos de estadistica descriptiva univariante. Para
ello vamos a recurrir a una base de datos disponible en R y reativa a las erup-
ciones de un geyser. El dataframe contiene dos variables, eruptions (duración
de la erupción) y waiting (tiempo entre erupciones). Mediante el nombre de la
base de datos accedemos a ella y con el comando class() comprobamos que se
trata de un dataframe. A continuación con el comando attach() hacemos una
copia de las variables contenidas en el dataframe.

faithful
class(faithful)

attach(faithful)

Los comandos summary() y fivenum() nos proporcionan los estadı́sticos básicos


para una variable numérica. Con el comando stem() obtenemos un diagrama
de tallos y hojas:
CAPÍTULO 2. ANÁLISIS DE DATOS 13

summary(eruptions)
fivenum(eruptions)
stem(eruptions)

A continuación vamos a recodificar la variable eruptions -numérica- para con-


vertirla en una variable ordinal. Empleamos el comando cut() y establecemos
un corte en 5 grupos. Con el comando class() verificamos que el nuevo ob-
jeto creado -feruptions- es un factor. Vemos, a continuación, el efecto de los
comandos summary() y plot() sobre un objeto de tipo factor:

feruptions<-cut(eruptions,breaks=5)
class(feruptions)
summary(feruptions)
plot(feruptions)

Los histogramas resultan muy útiles para estudiar la distribución de variables


de naturaleza cuantitativa. El comando hist() proporciona el histograma de
una variable. En concreto, el siguiente comando establece un histograma con 20
clases en el que las frecuencias no son absolutas sino relativas -freq=FALSE-:

hist(eruptions,breaks=20,freq=FALSE)

En ocasiones preferimos suavizar el histograma mediante las llamadas Estima-


ciones kernel de densidad. Lo conseguimos con el comando density() para el
que hemos establecido un ancho de banda de 0,1. Puede ser interesante jugar
con el valor de bw y ver el efecto sobre el gráfico:

lines(density(eruptions,bw=0.1))

La inspección del histograma nos hace ver que los datos no siguen ninguna de
las distribuciones teóricas habituales -normal, gamma,...- Vamos a jugar algo
más con los datos. ¿Para qué sirve el siguiente comando?:

longeruptions<-eruptions[eruptions>=3]

Comprobémoslo:

length(longeruptions)
length(eruptions)
CAPÍTULO 2. ANÁLISIS DE DATOS 14

Y ahora obtengamos el histograma y la estimación de densidad para las erup-


ciones de al menos tres minutos de duración:

hist(longeruptions,breaks=10,freq=FALSE)
lines(density(longeruptions,bw=0.1))

Este histograma no es perfectamente normal pero ¿existe evidencia suiciente


para rechazar que sea normal? Utilicemos el test de Kolmogorov-Smirnov:

ks.test(longeruptions,"pnorm",mean(longeruptions),sqrt(var(longeruptions)))

O el de Shapiro

shapiro.test(longeruptions)

¡Vaya! Son contradictorios. A ver qué nos dice un gráfico Q-Q:

qqnorm(longeruptions)

2.3. Estadı́stica para dos variables


Vamos a ver algunos comandos para estadı́stica de dos variables. Para empezar
creamos dos vectores A y B, que contienen valores de ciertas variables:

A<-c(79.98,80.04,80.02,80.04,80.03,80.03,80.04,79.97,80.05,80.03,80.02,80.00,80.02)
B<-c(80.02,79.94,79.98,79.97,79.97,80.03,79.95,79.97)

Con el comando boxplot() obtenemos un diagrama de caja para una, dos o


más variables:

boxplot(A)
boxplot(A,B)

El comando t.test() nos permite comprobar la hipótesis nula de que la media


aritmética poblacional de la variable de la que se han obtenido las observaciones
de A toma el valor mu -frente a la alternativa de que la media poblacional es
distinta de mu:

t.test(A,mu=0)
CAPÍTULO 2. ANÁLISIS DE DATOS 15

Podemos modificar la dirección de la hipótesis alternativa mediante el argumento


alternative:

t.test(A,mu=0,alternative="less")

El mismo comando t.test() nos permite efectuar un contraste de hipótesis


sobre la igualdad de las medias de dos poblaciones:

t.test(A,B)

Por defecto, el comando t.test() asume que existe heterocedasticidad y por


tanto lleva a cabo la conocida como aproximación de Welch -nótese que los
grados de libertad no son un número entero-.
Pero, no tenemos por qué suponer heterocedasticidad. Vemos qué nos dice el co-
mando var.test(). Con él conseguimos efectuar el contraste sobre la igualdad
de las varianzas poblacionales de dos variables.

var.test(A,B)

Como el resultado del test de igualdad de varianzas no arroja evidencia empı́ri-


ca suficiente como para rechazar la hipótesis de igualdad de varianzas pode-
mos modificar el comando t.test() mediante el argumento var.equal=TRUE. Se
calcula de este modo una varianza estimada común a partir de las varianzas
muestrales de cada una de las variables:

t.test(A,B,var.equal=TRUE)

Para aplicar el test de la t de Student debemos suponer que los datos provienen
de una variable con distribución normal -o aplicar el teorema central del lı́mite-
Si esto no es ası́ -o el teorema no es aplicable-, es mejor recurrir a la prueba no
paramétrica correspondiente:

wilcox.test(A,B)

Una utilidad adicional de la prueba de Kolmogorov-Smirnov es la de contrastar


que dos conjuntos de datos provienen de la misma población. ¿Es ası́ en nuestro
caso?

ks.test(A,B)
CAPÍTULO 2. ANÁLISIS DE DATOS 16

2.4. Tablas en R
Vamos a echar un vistazo a las tablas en R. Por ejemplo, la base de datos
Titanic es de la clase tabla, como podemos comprobar con el comando class():

Titanic
class(Titanic)

El comando summary() proporciona -cuando se aplica sobre una tabla- la prueba


de hipótesis Chi cuadrado sobre la independencia de las variables que componen
las dimensiones de la tabla:

summary(Titanic)

Especialmente interesante es el comando plot() aplicado sobre tablas:

plot(Titanic)

El comando mosaicplot() nos permite obtener representaciones parciales de la


tabla total:

mosaicplot(~ Sex + Age, data=Titanic)

Vamos, a continuación, a extraer algunas subtablas de la tabla global. En con-


creto, creamos la tabla AgeSurvived a partir de las variables 3 y 4 de la tabla
Titanic. Igualmente, obtenemos la tabla ClassSex a partir de las variables 1
y 2 de la tabla Titanic:

AgeSurvived<-margin.table(Titanic,c(3,4))

ClassSex<-margin.table(Titanic,c(1,2))
ClassSex
AgeSurvived

Ahora podemos utilizar el comando assocplot() con el fin de obtener una rep-
resentación gráfica de la desviación respecto a la independencia de las variables
consideradas. Este comando sólo puede emplearse para tablas de contingencia
de dos variables:

assocplot(ClassSex)
CAPÍTULO 2. ANÁLISIS DE DATOS 17

assocplot(AgeSurvived)
summary(ClassSex)
summary(AgeSurvived)

Seguimos extrayendo tablas. ¿Qué ocurrió con el Titanic?

ClassSurvived<-margin.table(Titanic,c(1,4))
summary(ClassSurvived)

assocplot(ClassSurvived)

En nuestro repaso de las tablas en R hemos partido de una base de datos con
formato de tabla -la base de datos Titanic- pero ¿cómo podemos construir
una tabla a partir de datos de un dataframe -por ejemplo-? Para verlo vamos a
emplear la base de datos cars -que es de la clase dataframe-:

cars
attach(cars)

Para empezar creamos dos factores a partir de las variables numéricas:

fdist<-cut(dist,breaks=5)
fspeed<-cut(speed,breaks=5)

El comando table() nos da como resultado un objeto de la clase tabla, que en


esta ocasión se guarda con el nombre de DistSpeed:

DistSpeed<-table(fdist,fspeed)

DistSpeed
plot(DistSpeed)
summary(DistSpeed)
assocplot(DistSpeed)
CAPÍTULO 2. ANÁLISIS DE DATOS 18

2.5. Regresión lineal


La regresión lineal la efectuamos en R mediante el comando lm(). Su resultado
es un objeto de la clase lista, al que podemos aplicar otros comandos de la
siguiente forma:

lr1<-lm(dist~speed)
summary(lr1)

anova(lr1)
plot(lr1)

Para obtener el diagrama de dispersión de las variables recurrimos al comando


plot() y añadimos una lı́nea recta -la recta de regresión- mediante el comando
abline() al que le pasamos los valores correspondientes del objeto lr1 -que es
el que almacena los resultados del ajuste lineal-:

plot(speed,dist)
abline(lr1)

Podemos estudiar la existencia de observaciones influyentes mediante el coman-


do influenc.measures() tomado como argumento único el objeto que guarda
los resultados de la regresión:

influence.measures(lr1)

Para terminar con la regresión veamos un ejemplo de regresión lineal múltiple


-trabajamos con la base de datos LifeCycleSavings-. Es especialmente intere-
sante ver la sintaxis de la formula que recoge la relación entre las variables
exógenas y endógena:

LifeCycleSavings
fm1 <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
summary(fm1)

anova(fm1)
CAPÍTULO 2. ANÁLISIS DE DATOS 19

2.6. Análisis de componentes principales


Vamos a ver cómo resuelve R el análisis de componentes principales. Para ello
vamos a emplear la base de datos USArrests, que recoge datos sobre detenciones
efectuadas en diferentes estados de EE.UU.:

USArrests
plot(USArrests) # matriz de diagramas de dispersión

pc1<-princomp(USArrests) # guardamos los resultados del ACP en


pc1
plot(pc1) #valores propios. ¿Es adecuado el ACP?
biplot(pc1) #representación simultánea de variables e individuos

pc1<-princomp(USArrests,scale=TRUE) #trabajamos con la matriz


cor.
biplot(pc1)
summary(pc1)

pc1$scores # puntuaciones de los individuos sobre los ejes

2.7. Ejemplo de tipologı́a de Comunidades Autóno-


mas con el paquete ade4 (Cuidado: Antes
de utilizar el package ade4 es preciso insta-
larlo)
Leemos los datos y creamos el data.frame DatosComunidades.

DatosComunidades<-read.table("Prueba.txt", header=TRUE)

Efectuamos un análisis de componentes principales normado y ponderado (con la


población de las comunidades autónomas) empleando el comando dudi.pca():

library(ade4)
acp2<-dudi.pca(subset(DatosComunidades,select=-c(UE15,POBLACION)),row.w=DatosComunid

Veamos el resumen de resultados:


CAPÍTULO 2. ANÁLISIS DE DATOS 20

acp2

El cı́rculo de correlación:

s.corcircle(acp2$co)

Las coordenadas de las Comunidades Autónomas en el nuevo sistema de refer-


encia:

s.label(acp2$li)

Ahora vamos a aplicar un algoritmo de clasificación jerárquica ascendente con el


comando hclust(). Previamente debemos calcular la matriz de distancias entre
las Comunidades Autónomas para lo que nos valdremos del comando dist():

dist1<-dist(subset(DatosComunidades,select=-c(UE15,POBLACION)))
dist1
clust1<-hclust(dist1)
plot(clust1)

2.8. Análisis de componentes principales con Fac-


toMineR
Cargamos el package:

library(FactoMineR)

Efectuamos un ACP y guardamos los resultados en el objeto acp2:

acp2<-PCA(subset(DatosComunidades,select=-c(UE15,POBLACION)),row.w=DatosComunidades$

Vemos los resultados referidos a los valores propios (incluidos porcentajes de


inercia acumulados y sin acumular correspondientes a cada componente princi-
pal):

acp2$eig

Los resultados para los individuos (coordenadas, contribuciones y cosenos cuadra-


dos):
CAPÍTULO 2. ANÁLISIS DE DATOS 21

acp2$ind

Los resultados para las variables (coordenadas, correlaciones con los compo-
nentes principales, contribuciones y cosenos cuadrados):

acp2$var
Capı́tulo 3

Varios

3.1. Packages
Las instalaciones de R consisten en un módulo básico y un conjunto de packages
recomendados -alrededor de 25-. Sin embargo existen cientos de packages que
recogen las contribuciones de la comunidad que desarrolla R ası́ como de otros
investigadores. Para ver cuáles son los packages que se encuentran instalados
en R debe utilizarse el comando library(). Este mismo comando sirve para
cargar un package previamente instalado, en la forma library(package). El
comando search() proporciona un listado de los packages activos.
La forma más sencilla de instalar un nuevo package es mediante la opción
Paquetes / Instalar paquetes a partir de archivos zip locales que se encuen-
tra disponible en el menú principal de R Gui. Obviamente es necesario haber
obtenido previamente el package en formato zip.

3.2. Ayuda en R
La sintaxis de R es relativamente complicada. Por ese motivo es del máximo
interés disponer de una buena ayuda on-line. Esa ayuda se puede invocar de
varias maneras:

help.start() #arranca el navegador y la ayuda on-line


help(comando) #proporciona ayuda sobre un comando en particular
help.search(\caracter") #busca ayuda sobre el tema \caracter"
library(help=package) #proporciona ayuda sobre los comandos de
un package concreto
example(comando) #proporciona ejemplos sobre un comando concreto

22
CAPÍTULO 3. VARIOS 23

3.3. Establecer el directorio de trabajo


Para conocer cuál es el directorio de trabajo por defecto debemos utilizar la fun-
ción getwd(). A continuación podemos establecer el nuevo directorio de trabajo
mediante la función setwd(), del siguiente modo:

setwd("c:/docs/mydir")

3.4. Área de trabajo en R (Workspace)


El área de trabajo es el lugar donde R guarda todos los objetos que están activos
en un momento dado. Se puede obtener una copia del área de trabajo mediante
el comando save.image().
Si, por ejemplo, deseamos obtener una copia de todos los objetos del área de
trabajo en el archivo .RData -archivo de área de trabajo por defecto- deberemos
escribir:

save.image()

Si deseamos guardar sólo algunos de los objetos y, además, deseamos hacerlo en


un archivo con un nombre distinto deberemos emplear el comando:

save(ListaDeObjetos,file="myfile.RData")

Cuando deseemos recuperar los objetos copiados en un archivo de área de tra-


bajo debemos emplear la función:

load("myfile.RData")

3.5. Histórico de comandos


Si deseamos guardar una copia de los comandos que hemos utilizado o cargarla
en la memoria debemos emplear respectivamente los comandos savehistory(file
= ".Rhistory") y loadhistory(file = ".Rhistory").
CAPÍTULO 3. VARIOS 24

3.6. Ejecución de comandos desde un archivo de


texto
Además de trabajar interactivamente con R también es posible escribir un con-
junto de comandos -correspondientes, por ejemplo, a un análisis determinado- y
ejecutar todos ellos de una sola vez -esta forma de funcionamiento se llama pro-
ceso por lotes (batch processing)-. Podemos acceder a ella mediante el comando
source(). Por ejemplo, el siguiente comando ejecuta los comandos recogidos en
el fichero de texto MiFichero.txt situado en el directorio de trabajo :

source("MiFichero.txt")

3.7. Trabajo con gráficos


Además de ver los gráficos en la consola gráfica puede interesar obtener una
copia de ellos para incluirlos en un documento de texto o en un informe. Para
ello se puede utilizar el siguiente conjunto de comandos:

jpeg("c:/MisGraficos/myplot.jpg")
plot(x)

dev.off()

El primer comando indica a R que debe guardar una copia del gráfico en un
archivo llamado myplot.jpg situado en el directorio C:/MisGraficos. Además,
el formato del gráfico será jpg -cabe también crear gráficos con formato pdf,
Windows Metafile, png, etcétera-. El segundo comando recoge la generación del
gráfico. El tercero devuelve el destino de los gráficos a la consola gráfica.
Bibliografı́a

Berk, R.A. (2008); Statistical Learning form a Regression Perspective; Springer.


Bliese, P. (2006); Multilevel Modeling in R;
Burns, P. (2003); A Guide for the Unwilling S User
Chambers, J.M. (2008); Software for Data Analysis. Programming with R;
Springer
Cohen, Y; Cohen, J.Y. (2008); Statistics and Data with R: An Applied Approach
Through Examples; Wiley
Cook D., Swayne D.F. (2007); Interactive and Dynamic Graphics for Data Anal-
ysis; Springer.
Crawley, M.J. (2007); The R Book; Wiley.
Dalgaard, P. (2002); Introductory Statistics with R; Springer
Everitt B.S. (2005); And R and S-Plus Companion to Multivariate Analysis;
Springer.
Faraway J.J. (2002); Practical Regression and Anova using R
Farnsworth, G.V. (2006); Econometrics in R
Galwey N.W. (2006); Introduction to Mixed Modelling. Beyond Regression and
Analysis of Variance; Wiley.
Gelman, A., Hill, J. (2007); Data Analysis Using Regression and Multilevel/Hierarchical
Models; Cambridge University Press
Kuhnert, P., Venables, B. (2005); An Introduction to R: Software for Statistical
Modelling & Computing; CSIRO.
Maindonald, J.H. (2008); Using R for Data Analysis and Graphics. Introuduc-
tion, Code and Commentary; Australian National University
Maindonald J., Braun J. (2003); Data Analysis and Graphics Using R – an
Example-based Approach; Cambridge University Press.
Marques de Sá, J.P. (2007); Applied Statistics Using SPSS, STATISTICA,
MATLAB and R; 2nd edition; Springer.

25
CAPÍTULO 3. VARIOS 26

Muenchen, B. (2007); R for SAS and SPSS Users


Murrel P. (2006); R Graphics; Chapman & Hall / CRC
Owen, W.J. (2007); The R Guide; University of Richmond
Paradis E. (2005); R for Beginners.
Quené, H. (2006); Statistics with R and S-Plus; Utrecht University
Robinson, A. (2008); icebrakeR; University of Melbourne
Seefeld, K., Linder, E. (2007); Statistics using R with Biological Examples;
University of New Hampshire
Torgo, L. (2003); Data Mining with R: learning by case studies.
Venables W..N., Smith, D.M. (2008); An Introduction to R. Notes on R: A
Programming Environment for Data Analysis and Graphics.
Venables W.N., Ripley B.D. (2000); S Programming; Springer.
Venables W.N., Ripley B.D. (2002); Modern Applied Statistics with S 4th edi-
tion
Verzani, J. (2002); simpleR. Using R for Introductory Statistics
Wang, K.K. (2002); R for Windows Users; Department of Statistics; New Zealand
Recursos online

Página del proyecto R: http://www.r-project.org/


The Comprehensive R Archive Network: http://cran.r-project.org/
R wiki: http://wiki.r-project.org/
R news: http://cran.r-project.org/doc/Rnews/
R en Wikipedia: http://en.wikipedia.org/wiki/R_%28programming_language%
29
Página web de Quick-R: http://www.statmethods.net/
R Graphical Manual: http://bm2.genes.nig.ac.jp/RGM2/index.php
R video tutorials: http://www.decisionsciencenews.com/?p=261
Página de JGR. Java GUI for R: http://jgr.markushelbig.org/JGR.html
Resources to help you learn and use R: http://www.ats.ucla.edu/stat/R/
Rtips (consejos para trabajar con R): http://pj.freefaculty.org/R/Rtips.
html
R for Categorical Data Analysis: http://www.stat.ufl.edu/~presnell/Courses/
sta4504-2000sp/R/R-CDA.pdf
Pagina de la conferencia useR! 2008: http://www.r-project.org/useR-2008
Statistical Analysis on the Web (RWeb): http://bayes.math.montana.edu/
Rweb/Rweb.general.html
R graph gallery: http://addictedtor.free.fr/graphiques/
Statistics with R: http://zoonek2.free.fr/UNIX/48_R/all.html
Serie use R de Springer: http://www.springer.com/series/6991
Curso básico de R de la Universidad de Barcelona: http://www.ub.es/stat/
docencia/EADB/Curso%20basico%20de%20R.htm
Curso introductorio de R de Raúl Vaquerizo Romero: http://es.geocities.
com/r_vaquerizo/Manual_R_menu.htm

27
CAPÍTULO 3. VARIOS 28

A Brief Guide to R for Beginners in Econometrics: http://people.su.se/~ma/


R_intro/
Introduction to Statistical Thought: http://www.stat.duke.edu/~michael/
book.html
Statistical Computing with R: a tutorial: http://www.math.ilstu.edu/dhkim/
Rstuff/Rtutor.html
FactoMiner: http://factominer.free.fr/

Potrebbero piacerti anche