You are on page 1of 34

CursodeIntroduccin

aR
En10horas

CentrodeEstadsticaAplicadaaEstudios
SocioeconmicosCEAESdelaUniversidadNacional
deColombiaSedeMedelln.EscueladeVeranoJulio
de2008.UniversidadEafit.Medelln,Colombia.

JuanDavidOspinaArango
Autor
ElkinArgemiroCastaoVlez
DirectorCEAES

CONTENIDO

Tabladecontenido
CONTENIDO...................................................................................................................................2
SESIN1........................................................................................................................................4
R.................................................................................................................................................4
Ventanadecomandos...............................................................................................................5
InterfacesparaR:tinnr..........................................................................................................11
PaquetesenR..........................................................................................................................11
IntroduccinalosobjetosenR...............................................................................................12
LecturadedatosenR..............................................................................................................13
EscrituradedatosenR............................................................................................................14
SESIN2......................................................................................................................................16
ObjetosenR............................................................................................................................16
Vectores..................................................................................................................................16
Matrices...................................................................................................................................18
Arreglos(arrays)......................................................................................................................20
Nmerosaleatorios.................................................................................................................20
SESIN3......................................................................................................................................22
Grficosenr............................................................................................................................22
Agregarunagrficaadicional:............................................................................................23
Agregarttulos.....................................................................................................................23
Agregartexto......................................................................................................................23
Agregarunaleyenda...........................................................................................................24
Paneldegrficos.....................................................................................................................24
Otrosgrficos..........................................................................................................................25
Histogramas............................................................................................................................25
Boxplot....................................................................................................................................25
Diagramadebarras.................................................................................................................26
Diagramadetorta...................................................................................................................26
Conjuntosdedatosparaexperimentar..............................................................................26
3

SESIN4......................................................................................................................................27
Elementosdeprogramacin...................................................................................................27
Bucles......................................................................................................................................27
for........................................................................................................................................27
while....................................................................................................................................28
ifeifelse..............................................................................................................................28
Scripts......................................................................................................................................30
Funciones................................................................................................................................30
SESIN5......................................................................................................................................32
EstadsticadescriptivaenR.....................................................................................................32
Medidasdelocalizacin,dedispersinyderesumen............................................................32
Medidasdedependencialineal..............................................................................................33
Grficosexploratorios.............................................................................................................33
Modeloslineales.....................................................................................................................34

SESIN1
ElR.Brevehistoria.Ventanadecomandos.InterfacesparaR:TinnR.Introduccinalosobjetos
enR.DatosenR.LecturadedatosenR.EscrituradedatosenR.

R
R es un lenguaje de programacin (que no requiere de compilacin) y un intrprete de
comandos orientado al anlisis estadstico de datos. Esto quiere decir que se puede escribir
programas para llamarlos despus dentro de otros programas o desde una consola.
Histricamente R tiene su origen en el lenguaje S, creado por Bell Labs y su desarrollo se ha
orientado de tal manera que se tenga el mximo de compatibilidad con este lenguaje. As, el
cdigo escrito en R en teora puede ejecutarse sin problemas en S SPlus. Como se dijo
anteriormente R est orientado al anlisis estadstico, aunque es una herramienta de
propsitogeneralquepuedeserusadaencienciaseingeniera.
RestdisponibleparaWindows,LinuxysistemasUnix,esunsoftwareabierto(licenciadobajo
lamodalidadGNU)ycualquierpersonapuedecontribuirasudesarrolloycuentaconaportes
demuchosacadmicosdestacadosquedesarrollanlibrerasyofrecensoporteenlaslistasde
correo.
Quienes buscan en R un programa para llevar a cabo anlisis estadsticos simples y grficos
sencillos, pueden extraar los mens que ofrecen paquetes estadsticos o con funciones de
estadstica como SPSS, SAS, Excel, Minitab, StatGraphics, entre otros
1
. Sin embargo, quienes
requieran de una herramienta verstil que pueda adaptarse a problemas particulares que se
presentanenlaprcticayquelespermitahacerEXACTAMENTELOQUEQUIERAN,vernenR
ungranaliado.
PorquR?
R es un lenguaje orientado a objetos y pensado para trabajar con arreglos (vectores y
matrices). Esto quiere decir que est situado en el paradigma actual del desarrollo de
software: la Programacin Orientada a Objetos (POO), y que personas con una formacin
matemtica apropiada podrn sacarle provecho rpidamente. Por supuesto, quienes no
tengan esta clase de formacin tambin podrn aprovecharse de toda la funcionalidad que
ofrece el programa pero podran tomarse un poco ms de tiempo antes de lograr niveles de
eficienciaadecuadosensuscdigos.
R ES GRATIS! Puede descargarse desde la direccin en internet http://www.rproject.org sin
ningn costo, as como tambin una gran cantidad de documentacin de apoyo. Todos los
estudiantes de ciencias e ingenieras tienen a su disposicin una herramienta gratuita para
llevar a cabo sus trabajos, pero tambin puede ser usado sin costo alguno para desarrollar
actividadesfueradelaacademiacomoconsultoraydesarrollodesoftware.
AqusepareceR?

1
NoobstantelalibreraRCommanderRcmdrtienegranpartedeestasfunciones.
5

Aquellos que estn familiarizados con el uso de S y SPlus, podra decirse que ya estn
familiarizados con R. Otros herramientas similares son Matlab y Octave, que tambin son
lenguajes desarrollados para funcionar con base en arreglos. Sin embargo, estos ltimos,
aunque han incorporado la programacin orientada a objetos en sus ltimas versiones, no
fueronconcebidosparatalfin,adiferenciadeR.
Ayuda
CadavezquetengadudassobreelusodeuncomandoenRescribahelp(comando)osinoest
seguro del nombre del comando escriba help.search(expresin), donde expresin es una
palabraclavesobrelafuncionalidadousodelcomando.

Ventanadecomandos
AlabrirelprogramaRsepuedeobservarlaventanadecomandosdelaFigura1.Enesta
ventanadecomandosepuededesarrollarlasoperacionesaritmticasusuales.

Figura1.VentanadecomandosdeR.

Ejercicio:llevaracabolassiguientesoperaciones.
S +2 7 -
10
19

Cos(S8) + c
2.6

Explorelafuncindelatecla.

[5+27-
10
19

[Cos[
3
8
+c
2.6

ExplorelafuncinCtrl+L
6

Mens
En Windows R se visualiza desde su propia ventana (a diferencia de Linux) donde estn
disponibles diferentes mens. Toda la funcionalidad disponible en los mens tambin se
proporcionaatravsdecomandos.

Archivo:

Figura2.MenArchivo.
Interpretarcdigofuente:
EstafuncinsirveparacargarfuncionesovaloresdevariablesalmacenadosenarchivosdeR.
Nuevoscript/Abrirscript
Estasfuncionesabreneleditordescriptsparacrearunonuevooutilizaralgunoyaexistente.
Mostrararchivo(s)
MuestralosarchivosdeR(*.R,*.S,*.q*.ssc)quehayenalgunaubicacin.
Cargarreadetrabajo/Guardarreadetrabajo
Permitecargar/guardartodaslasvariablesalmacenadasduranteunasesindetrabajoenun
archivodeextensinRData.
Cargarhistrico/Guardarhistrico
Permitecargar/guadartodosloscomandosempleadosduranteunasesindetrabajo(hayan
sidoonocorrectamenteempleados).
Cambiardir
7

ConestafuncinseleindicaaRenquedirectorioseesttrabajando.Estoesimportantepara
la lectura y escritura de archivos ya que si un archivo se especifica solo con su nombre y
extensinseentiendequeesteneldirectoriodetrabajoactual.
Imprimir
Imprimeelcontenidoactualdelaventanadecomandos.
Guardarenarchivo
Grabaenunarchivodetextoplanoelcontenidovisibleenlaventanadecomandos.
Editar

Figura3.MenEditar.
Copiar/Pegar/Pegarsolocomandos/Seleccionartodo
Estas herramientas tienen el comportamiento usual de las correspondientes en Windows. Si
copia un conjunto de comandos ya ejecutados en la consola y se selecciona Pegar solo
comandos,Rcopiarsololoscomandossinelcarcterespecial>queindicalalneaactualde
comando. Seleccionar todo sirve para seleccionar todo el texto que haya en la ventana de
comandos.
Limpiarconsola
Dejaenblancolaventanadecomandos.
Editordedatos
Permiteeditarunavariablemanualmente.Equivalealcomandofix(variable).

Preferenciasdelainterfazgrfica
Permite cambiar las opciones grficas de la consola o ventana de comandos: color y tipo de
fuente del texto ingresado por el usuario, color y tipo de fuente del texto de salida, color del
fondodelaconsola,etc.
8

Misc

Figura4.MenMisc(Miscelnea).

PararcomputacinactualESC/Paracomputacinactual
DetienetodoslosprocesosqueRestejecutando.
Salidaconbuffer
Activado,lassalidasdeRsealmacenanparasacarserpidamentealaconsola.
Terminarpalabra
Cuando est activada esta opcin, en la ventana de comandos al presionar la tecla Tab se
completa la palabra que se est escribiendo. Si se presiona dos veces la misma tecla aparece
unaseriedeopcionesparacompletarlapalabra.
Terminarnombredearchivo
Igualqueterminarpalabra,perosirveparacompletarnombresdearchivos.
Listarobjetos
Escribe en la consola de comandos los nombres de todos los objetos (variables) que se tenga
almacenadasenlamemoria.
Removertodoslosobjetos
Eliminatodoslosobjetos(variables)almacenadosenlamemoriautilizadaporR.
Listarelcaminodebsqueda
Escribeenlaconsolatodoslospaquetescargadosactualmente.

Paquetes

Figura5.MenPaquetes.
Cargarpaquetes
Permiteseleccionarunpaqueteparacargarseentrelospaquetesqueestnactualmente
instalados.
SeleccionarespejoCRAN
Permiteescogerdesdequeubicacin(servidorCRAN)sedescargarnlospaquetes.
Seleccionarrepositorios
Sirveparaseleccionarlosrepositorios,esdecir,conjuntosdearchivosdesdeloscualesse
podrdescargarlospaquetes.
Instalarpaquetes
Permiteseleccionarunoovariospaquetesdesdeunrepositorioparainstalarseenelequipo.
Actualizarpaquetes
Conestecomandoseactivalaactualizacinautomticadelospaquetesinstalados.Rverificasi
ha salido alguna versin nueva de los paquetes instalados actualmente y la descarga
automticamente.
Instalarpaquete(s)apartirdearchivosziplocales
Instalalospaquetesenarchivoszipalmacenadosenalgunaunidadlocal.
Ayuda
10

Figura6.MenAyuda.
Console
MuestraalgunoscomandosrpidosparautilizarenR.
FAQenR/FAQenRparaWindows
Abreenelnavegadorpredeterminadolascorrespondientespginasdepreguntasfrecuentes
FAQ(frequentaskedquestions).
ManualesenPDF
AbrelosmanualesenpdfinstaladosconR.
FuncionesR(texto)
Proporcionaayudasobrealgncomandoofuncin.Esequivalentealcdigohelp(comando).
AyudaHtml
AbreenelnavegadorprincipallaayudahtmlinstaladapordefectoconR.
Buscarayuda
Buscadentrodeladocumentacincoincidenciasconlaexpresindada.Esequivalentea
help.search(expresin).

Sobre
11

Muestraquetemascoincidenenladocumentacinconlaexpresindada.Estoequivalea
apropos(expresin).Ladiferenciaconhelp.searchesqueaproposbuscacoincidenciasexactas
eneltextodelosencabezadosdelostemasdeayuda.
PginaprincipaldelproyectoR/PginaprincipaldelproyectoCRAN
Abreenelnavegadorpredeterminadolapginacorrespondiente,yasealadelproyectoR
dondeestlainformacingeneraldelproyectooladelservidorCRAN(ComprehensiveR
archivesnetwork)dedondesedescargaelsoftwareylospaquetes.
Sobre
MuestralaversindeRqueseestutilizando.

InterfacesparaR:tinnr
QuieneshayanutilizadoentornosdedesarrollosofisticadoscomoeldeMicrosoftVisualStudio
(cualquiera de sus suites) o el de Borland, podran extraar el autoindexado del cdigo, los
colores diferentes para los comandos y variables. Aunque en este curso introductorio no se
cubre,sisemencionalaexistenciadeinterfacesparaRconlafuncionalidaddelosentornosde
desarrollo disponibles en software propietario. Una de estas interfaces es TinnR y se puede
descargar desde http://sourceforge.net/projects/tinnr . TinnR proporciona utilidades como
autocompletado de comandos y sugerencias para los argumentos con que se llama una
funcin.

PaquetesenR
Los paquetes en R (R packages) son las libreras de R. Cualquier persona puede escribir un
paquete de R y ponerlo en el servidor CRAN, desde que cumpla con los estndares de
programacin de R. Esta actividad, por supuesto, es llevada a cabo por personas altruistas y
brillantesquecompartensuconocimientoyhabilidadesdeprogramacinconunacomunidad
que todos los das crece. Al abrir la consola de R se carga automticamente los paquetes
incluidos con la distribucin bsica. A travs del men Paquetes puede acceder a los dems
paquetes disponibles en el servidor CRAN. Hay paquetes que no estn en el servidor CRAN y
que tambin se pueden instalar con la funcin de la consola Instalar paquetes a partir de
archivos zip, no obstante estos paquetes casi siempre son de menor calidad y debe tenerse
muchocuidadoalusarlos.
> library(nombredelpaquete)#cargaelpaquetedeseado.
> library(help=nombredelpaquete)#Despliegalaayudadisponiblesobreelpaquete.
Ejemplo
> library(MASS)#CargalalibreraMASS
> library(help=MASS)#DespliegalaayudadelalibreraMASS.Apartirdeaqusepuede
#buscarayudasobreotroscomandos.
12

Si se indaga sobre una funcin de un paquete que no se ha cargado R dir que no tiene
encuentra un objeto. Es necesario cargar el paquete en el que est la funcin antes de
consultarlaayudadedichafuncindesdelaconsola.

IntroduccinalosobjetosenR
En R todo es un objeto! Pero qu es un objeto? Un objeto es una instancia de una clase.
Unaclaseesunconjuntodepropiedadesyreglasdecomportamiento.Porejemplosisedefine
laclasevendedorpuertaapuertasepuederegistrarcomopropiedades:
Estinteresadoenvenderunproducto.
Hablasobreelproductoquedeseavender.
Supresentacinpersonalesadecuada.
Dentrodesusfuncionessepuedeanotarlassiguientes:
Tocaeltimbreolapuerta.
Saluda.
Ofreceelproducto.
Intentaconvenceralclientedequeelproductooservicioestil.
Recibeeldineroocoordinalaformadepagoporelproductooservicio.
Un ejemplo de objeto es un vendedor de servicios de telefona o internet que llama a su
puerta.Esdecir,unobjetoesunrepresentanteespecficodelaclase.
La programacin orientada a objetos (POO) surge como respuesta a las necesidades de los
programadoresdetrabajarenequipoyreutilizarelcdigodelosprogramas,necesidadesque
laprogramacinestructuradanosatisfaceeficientemente.
Ejercicio
Cree el objeto estudiante as: estudiante=list(nombre=su nombre,identificacin=su
documentodeidentidad,edad=edad).
En el ejercicio anterior se cre un objeto de la clase lista. Para ver esto escriba en la consola
class(estudiante).Paraverlosatributos(ocampos)delobjetoestudianteescribaenlaconsola
attributes(estudiante).
Ejercicio
Agreguedosnuevosregistrosalobjetoestudiante:
> estudiante$nombre[2]=otronombre
> estudiante$edad[2]=edad
> estudiante
> estudiante$edad[1]
> estudiante$nombre[2]
Ahoracambielaclasedelobjetoestudiante:
> est=as.data.frame(estudiante)
13

> class(est)
Preguntas:
Cmoseaccedeauncampooatributodeunobjeto?
Cmoseaccedeadeterminadaposicindeunatributo?
Cmosepuedecambiarlaclasedeunobjetodelaclaselist?
UnclasequeseutilizafrecuentementeenReslaclasedataframe.Aestaclasepertenecenlas
basesdedatosqueleemosdesdearchivosexternosyqueseingresanalamayoraderutinasy
anlisisestadstico.

LecturadedatosenR
Enestecursoseabordardosmanerasdeleerunabasededatos,unaserdesdeExcel(*.xls)
ylaotradesdeunarchivodetextoplano(*.txt)separadoporcomas(*.csv).Losarchivosde
texto ledo, funcionan como bases de datos cargadas en objetos del tipo data.frame. R tiene
funciones que le permiten conectarse con bases de datos SQL y MySQL, entre otras, pero
dichas funciones se salen del alcance de un curso introductorio. La funcin de propsito
generalscan()puedesermuytilcuandolosarchivosaserledosnoestnorganizadosconun
patrnclsico.
read. table()
La funcin read.table() nos permite leer una gran cantidad de tipos de archivos ASCII. Esta
funcin trabaja muy bien leyendo archivos de texto plano. Permite especificar de dnde se
debetomarlosnombresdelasvariables,eltipodeseparadordecimal,elseparadordedatos,
etc.
Para conocer esta funcin se utilizar el procedimiento ms usual a la hora de explorar la
funcionalidaddeuncomando:lafuncinhelp().Escribahelp(read.table).
Ejemplo:
> datos=read.table(rutadelarchivo\nombredelarchivo.extensin,header=T,dec=,,)
> #Lee un archivo desde una ruta especificada, asumiendo que la primera fila contiene
#losnombresdelasvariablesyqueelseparadordecimaleslacoma.
Nota: El smbolo # es el indicador de comentario. El texto que siga este smbolo no ser
interpretadoporR.
Ejercicio
Leaelarchivosesion01.txt(debeinspeccionarloprimeroparasabercmodebeleerlo
ensuequipo).
Ahoraquesehaledounarchivodetextoplanoesfcilleerotrostiposdearchivo.Indaguepor
lasfuncionesread.csv()yread.xls()(delpaquetegdata).
14

Ejercicio
Lealosarchivossesion01.csvysesion01.xls.
Combineestosarchivosconlafuncinrbind()yalmacnelosenotroobjeto.
CuandosetieneunconjuntodedatosysecargaenR,entoncessepuedecomenzaraexplotar
todoelpoderdeRparaanlisisestadsticodedatos.Antesdeesoesconvenientesabercomo
podemosguardarlosobjetosdeRcomoarchivos.

EscrituradedatosenR
Enestecursoseexplorarexclusivamentedostiposdeescrituradearchivos:archivosdeExcel
yarchivosdetextoplano.Otrostiposdearchivosepuedengenerardeformasimilar.
Ejercicio
Exploreelusodelcomandowrite.table().
Exploreelusodelcomandoxls.write()delalibreraxlsReadWrite.
Supongaquelosarchivosledosanteriormentesealmacenaronenlosobjetosdatos1,datos2y
datos3 y que el resultado de la concatenacin (combinacin) de los archivos es el objeto
datosses1.Entonces
> datosses1=rbind(as.matrix(datos1),as.matrix(datos2),as.matrix(datos2))
> #as.matrix() hace que los data.frames sean tratados como matrices y no haya
#problemasconlosnombresdelasvariables.Sitodaslasvariablestienenlascolumnas
#tienenlosmismosnombrespuedeomitirse.
> write.table(datosses1,"sesion01.txt",dec=",",col.names=T,row.names=F,eol="\n",sep="
\t")
> #Escribe en el archivo sesion01.txt la informacin del objeto datosses1, separada por
#tabulaciones,utilizandocomoseparadordecimallacoma,escribiendolosnombresde
#lasvariablesenlaprimerafiladelarchivo.
Encasodequesedeseeagregarinformacinaunarchivoyaexistentesedebeinvocarla
funcin read.table() con el argumento append=T. Esto har que la informacin que se
agregueseescribaalfinaldelarchivo.
> library(xlsReadWrite)#Cargalalibreraapropiada.
> write.xls(datosses1,"sesion01.xls",colNames=T,sheet=1,from=1,rowNames=NA)
> #Escribe desde la primera fila en la hoja (sheet) 1 del archivo sesion01.xls la
#informacincontenidaendatosses1.

Ejercicio(motivacin)
EjecuteenRlossiguientescomandos:
15

> library(MASS)
> help(Aids2)
> datos=Aids2
> summary(datos)
> colnames(datos)
> attach(datos)
> hist(age)
> plot(sex,age)
16

SESIN2
ObjetosenR.Definicindeobjeto.Atributosdeobjetos.Funcionesdeobjetos.Clases.Listas.
Dataframes.Vectores,matrices,arreglos.Nmerosaleatorios.

ObjetosenR
Comosemencionenlasesin1,enRtodoslosdatoshacenpartedeunaestructurallamada
objeto,queasuvezperteneceaunaclase.Laclasealaqueperteneceunobjetodeterminael
tipo de atributos que ste tiene y las operaciones que puede hacerse con l. Para explorar el
usodeobjetos,quenoeselobjetivoprincipaldeuncursointroductorio,seprocederconel
siguienteejercicio.
Ejercicio
EjecuteenRlossiguientescomandos:
> x1=c(1,2,3,4,5,6)#Creaelvectorx1=(1,2,3,4,5,).
> error=rnorm(6,0,0.25) # Genera un vector de seis nmeros aleatorios normalmente
#distribuidosconmediaceroydesviacinestndar0.25.
> y=x1+error#Crealavariableycomolasumadex1yelerror.
> regresion=lm(y~x1) # Corre la regresin y=ax1+b+error, donde el error se distribuye
#normalconmediaceroyvarianzadesconocidaperoconstanteentodoslospuntos.
> regresion#Muestraelobjetoregresion,msnosusatributos.
> summary(regresion)#Aplicacindelafuncinresumenalobjetoregresion.
> plot(regresion)#Aplicacindelafuncindibujaralobjetoregresion.
> anova(regresion)#Aplicacindelafuncinanlisisdevarianza(ANOVA).
> attributes(regresion)#Muestralosatributosylaclasedelobjetoregresion.
> regresion$coefficients#Muestraelobjetocoefficientsqueestcontenidoenelobjeto
#regresion.
En el ejercicio anterior se ha creado un vector, se ha generado nmeros aleatorios y se corre
unaregresinlinealquesealmacenaenelobjetoregresion.Cuandoseejecutalamayorade
funciones de R se debe asignar el resultado de stas a un objeto de manera que se pueda
acceder posteriormente a sus atributos y se pueda aplicar las funciones necesarias. En el
ejercicio se aplicaron los mtodos summary, plot y anova. El resultado de la aplicacin de los
mtodosyfuncionesvaradeacuerdoconlaclasedelobjetoalqueseaplique.

Vectores
LosvectoresenRsecreanconlafuncinc().EnRlosvectorespermitenagilizaroperacionesy
optimizar funciones. Un vector es un conjunto de valores (nmeros o smbolos), todos del
mismo tipo organizados de la forma (elemento 1, elemento 2, , elemento n) y n es la
longitudotamaodelvector.
> a=c(0.5,4,1:6)#Creaelvectora=(0.5,4,1,2,3,4,5,6)
17

> b=c("andrs", "juan", "carlos",2,3) # Crea el vector b=("andrs", "juan",


#"carlos","2","3")
Longituddeunvector
> length(a)#Devuelveelnmerodeelementosdelvectora.
Operacionesconvectores
Son muchas las operaciones que se puede llevar a cabo con vectores en R. Para explorar las
operacionesconvectoreslleveacaboelsiguienteejercicio.
Ejercicio
EjecuteenRlossiguientescomandos:
> d=c(1,0.2,0.3,1:4,6:2)
> length(d)#Devuelvelalongituddelvectord.
> sum(d)#Devuelvelasumadetodosloselementosalmacenadosend.
> cumsum(d)#Devuelveunvectorconlasumaacumuladadelvectord.
> var(d)#Devuelvelavarianzadelvectord.
> mean(d)#Devuelvelamediadelvectord.
> plot(d)#Grficadelvectord.
> d^2#Elevacadacomponentedelvectordalcuadrado.
> sin(d)#Calculaelsenodecadacomponentedelvectord.
> exp(d)#Evalalafuncinexponencialencadacomponentedelvectord.
> sin(exp(2*d^2))#Quhace?
Convectores,puedellevarseacabooperacionessobreunconjuntodenmerosrpidamente.
Por defecto R entiende que las operaciones entre vectores son elemento a elemento. En el
caso de la multiplicacin entre vectores, si se quiere que esta arroje el resultado correcto,
desdeelpuntodevistadellgebralineal,esnecesarioutilizareloperadorespecial%*%.
Ejemplo:
> a=c(1:5)#Creaelvectora=(1,2,3,4,5).
> b=c(6:10)#Creaelvectorb=(6,7,8,9,10).
> c=a+b#Creaelvectorc=(7,9,11,13,15)
> d=a*b#Creaelvectord=c(6,14,24,36,50).
> e=a%*%b#Devuelveelnmero130.
> f=a%*%t(b)#Devuelveunamatriz.
Enelejemploanteriorseutilizlafuncint(),quedevuelvelatranspuestadeunamatrizoun
vector.
Sucesiones
Se puede crear sucesiones (secuencias) de nmeros fcilmente con la funcin seq(). Esta
funcinseutilizacomosucesin=seq(valorinicial,valorfinal,tamaodepaso).
18

Ejemplo:
> suc=seq(1,10,2)#Devuelveelvectorsuc=(1,3,5,7,9)
> suc1=seq(1,1,0.25) # Devuelve el vector suc1=( 1.00, 0.75, 0.50, 0.25, 0.00, 0.25,
#0.50,0.75,1.00)

Matrices
Las matrices en R son un caso particular de los arreglos (arrays) en R. Por su sencillez se
tratarn primero. Al igual que los vectores, R entiende que las operaciones sobre matrices se
llevanacaboelementoaelemento.
Creacindematrices
Lasmatricessecreandevariasformas:
> A=matrix(0,ncol=2,nrow=3) # Crea una matriz de dos columnas y tres filas con todas
#susentradasigualesacero.
> B=matrix(c(1,2,3,4),ncol=2)#CreaunamatrizdospordosB = j
1 S
2 4
[.
> dim(B)#DevuelvelasdimensionesdelamatrizB.
En general las matrices se crean como matriz=matrix(vector, dimensiones). En vector se
almacenanlosdatos(nmeros)ydimensioneseslaformadeespecificarlasdimensionesdela
matriz. Las dimensiones de la matriz se pueden especificar con el nmero de filas, l nmero
decolumnasoconambas.Paradefinirunamatrizcorrectamenteesnecesariotenerencuenta
que si se especifica sus valores en un vector, este vector se escribir a lo largo de la primera
columna hasta llenarla y luego continuar en la segunda columna hasta llenarla y se repetir
hastallenartodaslascolumnasdelamatriz.Decualquiermaneraelnmerodeentradasdela
matrizdebeserunmltiploosubmltiplodelalongituddelvector.
Ejemplo
> C=matrix(c(1,2,3,4),ncol=6,nrow=8)

Transpuestadeunamatriz
Lafuncint()devuelvelatranspuestadeunamatrizovector.
> t(A)#DevuelvelatranspuestadelamatrizA

Inversaydeterminantedeunamatriz
Lafuncinsolve()devuelvelainversadeunamatriz.
> solve(A)#DevuelvelainversadelamatrizA.
19

> x=solve(A)%*%b #Devuelve la solucin del sistema Ax=b. Si el sistema es


#sobredeterminadodevuelvelasolucindemnimoscuadrados.
Lafuncindet()devuelveeldeterminantedeunamatriz.
> det(A)#DevuelveeldeterminantedelamatrizA.
Valoresyvectorespropios
Lafuncineig()devuelveenunobjetolosvaloresyvectorespropiosdeunamatriz.
> vals=eig(A)
> vals$values#ValorespropiosdelamatrizA.
> vals$vectors#VectorespropiosdelamatrizA.

Matricesdiagonales
La funcin diag() sirve para obtener la diagonal de una matriz o para construir una matriz
diagonal.
> x=diag(A)#DevuelveenelvectorxladiagonalprincipaldelamatrizA.
> B=diag(d)#DevuelveunamatrizdiagonalBcuyadiagonalprincipalesigualalvectord.
Puedeexplorarelusodelasfuncioneslower.tri()yupper.tri().

ndices
LoselementosdelasmatricesestnindexadosenRcomoA[fila,columna].PorejemploA[4,5]
es el elemento de la matriz A que est en la fila 4 y la columna 5. Sin embargo las
funcionalidadesdeindexadodeRvanmuchomsalldellamarunelementodeunamatriz.
> A=matrix(rnorm(25,0,1),ncol=5)#Creaunamatrizcuadradadedimensionescincopor
#cincocuyasentradassonnmerosaleatoriosnormalesdemediaceroyvarianza1.
> A[2,3]#Extraelaposicin(2,3)delamatrizA.
> b=A[cbind(c(2,3,4),c(1,2,3))]#Creaelvectorb=(A[2,1],A[3,2],A[4,3]).
En trminos generales se puede construir una matriz de dos columnas que en cada fila tenga
las posiciones de la matriz A que se deseen extraer. De igual manera, con operaciones de
indexacinsepuedeasignarvaloresaloselementosdelamatriz.
> A[cbind(c(2,3,4),c(1,2,3))]=0#Convierteencerolasposiciones(2,1),(3,2)y(4,3)dela
matrizA.

20

Arreglos(arrays)
Losarreglossonunaclasedegeneralizacindematricesdemsdedosdimensiones.Aveces
resulta cmodo crear matrices y vectores usando la funcin array() por su versatilidad.
A=array(vector,dim=c(dimensiones)) es la forma de crear arreglos en R. Funciona de manera
similaralasmatricesperoesmsverstil.
> A=array(0,dim=c(3,3))#Creaunamatrizdecerosdetresfilasytrescolumnas.
> D=array(runif(27,0,1),dim=c(3,3,3))#Creaunarreglodetresdimensionesdelongitud3
#en cada dimensin cuyas componentes son nmeros aleatorios uniformemente
distribuidosentreceroyuno.
Concatenacin
Las funciones cbind() y rbind() sirven para concatenar arreglos de dimensiones compatibles
porcolumnasyporfilasrespectivamente.
> A=array(c(0.1,2,39),dim=c(4,2))
> B=array(c(10,9,8,7,6,5,4,3),dim=c(2,4))
> cbind(A,t(B))#Quhace?
> rbind(t(A),B)#Quhace?
> rbind(A,t(B))#Quhace?

Nmerosaleatorios
R es un paquete con una marcada orientacin hacia la estadstica. Por esta razn tiene
incorporados una gran variedad de mtodos para generar nmeros aleatorios de diferentes
distribuciones. Adicionalmente permite calcular los cuantiles y percentiles de estas
distribuciones.ParasabersiunadistribucindesuintersestenlospaquetesinstaladosdeR
escribaenlaconsolahelp.search(nombredeladistribucin).
Usualmente el comando para obtener el valor de la funcin de densidad de probabilidad de
una funcin en un punto (o un conjunto de puntos) es una abreviatura del nombre de la
funcinantecedidadelaletrad.Ej:dnorm()esladensidaddeladistribucinnormalydpois()
es la densidad de la distribucin poisson. El comando se utiliza como ddist(vector,
parmetros), dnde vector contiene el conjunto de puntos en el que se desea evaluar la
funcindedistribucinyparmetrossonlosparmetrosquedeterminanladistribucin.
> dnorm(c(0.86,1.6),0,1)
Silaabreviacindeladistribucinesdist,entonces
ddist()evalalafuncindedensidaddeprobabilidadenunconjuntodepuntos
pdist() evala la funcin de densidad acumulada en un conjunto de puntos (devuelve
percentiles).
qdist()devuelveloscuantilesdeunconjuntodeprobabilidades.
rdist()generanmerosaleatoriosdeladistribucin.

21

Ejemplos:
Obtengaelpercentil97.5%deladistribucinnormalestndar.
> qnorm(0.975,0,1)
> qnorm(0.975,0,1)#Ladistribucinnormalessimtrica.
Genere11nmerosaleatoriosdeladistibucinpoissonconmedia2.
rpois(11,2)
La funciones para obtener los cuantiles qdist() y para evaluar la funcin de densidad
acumulada pdist() tienen la opcin de especificar si las probabilidades son de la forma
P(X x) P(X > x), con el parmetro lower.tail=T (por defecto) o lower.tail=F,
respectivamente.

Ejemplo:
CuleslaprobabilidaddequeunavariablealeatoriaYdistribuidabeta(a=0.8,b=1.3)sea:
Mayorque0.9
pbeta(0.9,0.8,1.3,lower.tail=F)#P(Y>0.9)
Menorque0.3
pbeta(0.3,0.8,1.3)#P(Y<0.3)=P(Y<=0.3)
Ejercicio
Genere100nmerosaleatoriosdeunadistribucinnormaldemediaceroyvarianza4.
Obtenga la probabilidad de que una variable aleatoria Y distribuida Gamma(2,3) sea:
mayorquedos,menoroiguala0.7ymenoroigualque0.5.
Cul es la probabilidad de que una variable distribuida binomial(80,0.75) sea igual a
15?

22

SESIN3
Grficos en R. Diagramas de dispersin. Grficos de series de tiempo. Grficos de torta.
Modificadores de grficos: colores, tipos de lnea, tamao de texto, legenda. Agregar lneas a
grficos.Ventanasconvariosgrficos.

Grficosenr
R permite construir grficos profesionales y llamativos, adecuados para trabajos de grado,
artculos en revistas indexadas o presentaciones de ideas y proyectos. Por supuesto, como se
havistoanteriormente,losgrficostambinseconstruyenapartirdecomandos.
Ungrficoconelqueconvienecomenzareselgrficodepuntos.
Ejemplo:
> y=seq(0,5,0.5)#Construyeunvectordenmerosdel0al5separadosentrespor0.5.
> plot(y)#Dibujaelvectorycontrasusndices.
En el ejemplo se produce un grfico sencillo (inspido) que no llama la atencin y muchos
podran juzgar errneamente el desempeo de R en cuanto a elaboracin de grficos viendo
ste. No obstante, en la ventana de este grfico ya se dispone de varias opciones tiles. Si
observa,enelmenArchivodelaventanadelgrficosepuedeguardarocopiarelgrficoen
diferentestiposdeformatooparadistintospropsitos.
Ejemplo:
> x=seq(3,3,0.25)#Generaunasecuenciade25datosequiespaciadosentre3y3.
> error=rnorm(length(x),0,0.75)#Generaunaseriedeerroresnormalesdemediaceroy
#varianza0.75^2.
> y=2*x+0.5+error#Crealavariableysimulandoasunmodelolinealsimple.
> plot(x,y)#Dibujalanubedepuntos(x,y).
Aquseobtuvonuevamenteungrficodepuntospocollamativoopresentable.Pero,comola
mayora de funciones en R, existen argumentos (opciones) de las funciones que se pueden
utilizarparamejorarlapresentacin.
plot(x,y,xlab="Variable explicativa",ylab="Variable respuesta",main="Diagrama de
dispersinxvs.y",sub="Simulacindeunmodelolineal")
Aqu se us varios de los posibles argumentos de la funcin plot(). Estos argumentos se
puedenescribirenlafuncinsinunordenenparticular.
xlab:ttulodelejex.
ylab:ttulodelejey.
main:ttuloprincipaldelgrfico.
sub:subttulodelgrfico.Seescribeenlaparteinferiordelgrfico.
Argumentosadicionalesson:
23

cex:controlaeltamaodelospuntos(Ej:cex=0.6).
col:defineelcolordelgrfico(Ej:col="red")
type: define el tipo de lneas. Puede ser puntos (p), lnea (l), lneas y puntos (b) (Ej:
type="l").
xlim:definelosvaloresmximoymnimodelejex(Ej:xlim(0.5,1.2)).
ylim:definelosvaloresmximoymnimodelejey(Ej:ylim(0,10)).
Lafuncingrid()permiteaadirunacuadrculaalgrficoactualsimplementeescribindolaen
la ventana de comandos. Si desea un tipo de cuadrcula especfica entonces indague por las
posibilidadesdelafuncin:help(grid).
Ejercicio:
Incluyaelargumentocexdentrodelafuncinplotenelejemploanterior,asignndole
elvalorde3.Quocurre?
Incluyaelargumentopchdentrodelafuncinplotenelejemploanterior,asignndole
elvalorde4.Quocurre?
Si desea conocer todos las opciones que se pueden controlar para los grficos escriba
help(par).

Agregarunagrficaadicional:
Aveces,enunagrficaesimportantedibujarotrasfuncionesoconjuntosdepuntos.El
siguienteejemplomuestracomohacerlo.
> plot(x,y,type="l")#Graficaxvs.y.
> lines(x,exp(x))#Agregaalagrficaactuallafuncinexp(x).
> lines(x,log(x))#Agregaalagrficaactuallafuncinln(x).
Esimportanteanotarquepuedeagregarungrannmerodegrficasynosolodoscomoenel
ejemplo.Debetenerseencuentaquelafuncinlines()solopuedeserllamadacuandoyahay
ungrfico.

Agregarttulos
An si el grfico se crea sin ttulos, stos pueden agregarse posteriormente con la funcin
title().
> plot(x,y)
> title(xlab="Variable explicativa",ylab="Variable respuesta",main="Diagrama de
dispersinxvs.y",sub="Simulacindeunmodelolineal")

Agregartexto
Puedeagregarsetextoencualquierpartedelgrficoconlafuncintext().Estoestilsiquiere
resaltarsealgunacaractersticadeunpuntodelagrfica.
24

> x=seq(0,5,0.5)
> y=2*x+rnorm(length(x),0,0.5)
> plot(x,y)
> title(xlab="Variableexplicativa",ylab="Variabledeinters",main="GrficodexVs.y")
> text(x[c(5,9)],y[c(5,9)],labels=c(x=2","x=4"),pos=1)

Agregarunaleyenda
A veces es til agregar una leyenda para incluir informacin necesaria para interpretar la
grfica.Estopuedelograrseconlafuncinlegend().
> x=seq(4,4,0.1)
> y1=dnorm(x,0,1)#Evalaladensidaddeunanormalconmediaceroyvarianza1enx.
> y2=dnorm(x,0.5,1)#Hacelomismoperoconmediaiguala0.5.
> plot(x,y1,type="l")#Dibujalaprimeradensidad.
> lines(x,y2,lty=2)#Agregalasegundadensidad.
> legend("topleft",c("u=0","u=0.5"),lty=c(1,2)) #Agrega una leyenda en la esquina
#superiorizquierda.

Paneldegrficos
Elcomandopar()seutilizaparaconfigurardiferentesparmetrosdeunagrfica.Unpanelde
grficos son varios grficos que se acomodan en una misma ventana. El tipo de panel que se
trabajar est formado por filas y columnas de grficos y se crea con la funcin
par(mfrow=c(filas,columnas)).Elsiguienteejemploilustracmousarestecomando.
> x=seq(4,4,0.1)
> y1=dnorm(x,0,1)#Evalaladensidaddeunanormalconmediaceroyvarianza1enx.
> y2=dnorm(x,0.5,1)#Hacelomismoperoconmediaiguala0.5.
> r1= rnorm(1000,0,1) # Simula mil nmeros aleatorios de normal con media cero y
#varianza1.
> r2= rnorm(1000,0.5,1) # Simula mil nmeros aleatorios de normal con media 0.5 y
#varianza1.
> par(mfrow=c(3,2))#Generaunpaneldegrficasdetresfilasydoscolumnas.
> plot(x,y1)#Graficaladensidaddelaprimeranormal.
> plot(x,y2)#Graficaladensidaddelasegundanormal.
> hist(r1) # Grafica el histograma de los nmeros aleatorios generados de la primera
#distribucinnormal.
> hist(r2) # Grafica el histograma de los nmeros aleatorios generados de la segunda
#distribucinnormal.
> boxplot(r1)#Graficaeldiagramadebigotesdelosnmerosaleatoriosgeneradosdela
#primeradistribucinnormal.
> boxplot(r2)#Graficaeldiagramadebigotesdelosnmerosaleatoriosgeneradosdela
#primeradistribucinnormal.
25

Otrosgrficos
EnRhayunagrancantidaddegrficosdisponibles.Algunosdeellosestnimplementadosen
la librera base y otros vienen en paquetes que han desarrollado usuarios de R. Entre las
posibilidades que no se abarcarn en este curso estn los grficos 3D, del tipo imagen (para
procesamiento digital de imgenes), curvas de nivel de funciones, entre otros muchos. Pero
todosellospuedenaprenderseconlasuficientepacienciaeinters.

Histogramas
En R la funcin hist() crea el histograma a partir de una muestra o un conjunto de datos. Las
categoras del histograma se crean automticamente. En los histogramas puede utilizarse
todoscomandosvistosanteriormenteparaagregarttulos,leyendasyanotaciones.Lafuncin
curve()puedeutilizarseparacontrastarelhistogramaconalgunadistribucindeprobabilidad.
Ejemplo:
> nor=rnorm(250,3,1.2)#Simuladatosdeunanormal.
> poi=rpois(200,3)#Simuladatosdeunapoisson.
> par(mfrow=c(2,1))#Creaunpaneldedatos.
> hist(nor,main="Histograma normal",xlim=c(2,8),probability=T,ylim=c(0,0.5)) #Grafica
#elhistogramadelosdatosnormales.
> curve(dnorm(x,3,1.2),0,6,add=T,col="red")#Agregalagrficadeladensidadnormal.
> hist(poi,main="Histogramapoisson",probability=T)#Graficaelhistogramadelosdatos
#poisson.
> lines(0:10,diff(ppois(0:11,3)),type="s",add=T,col="red") #Agrega la densidad de una
#variablepoisson.

Boxplot
Anlogoalhistogramaestlafuncinboxplot()quepermitedibujareldiagramadebigotesde
unconjuntodedatos.Sinembargo,estafuncinvamsallypermitedibujarlosdiagramasde
bigotesparadiferentesnivelesdeunavariable.
Ejemplo:
> norm=rnorm(250,1,0.85)#Generadatosdeunanormal.
> boxplot(norm,main="Diagramadebigotes")#Graficaeldiagramadebigotes.
Ejemplo:
> niveles=rbinom(200,1,0.41)#Simulacindelosniveles
> y=rnorm(length(niveles),niveles*5+(1niveles)*3,0.8) #Simulacin de una muestra
#normalcuyamediadependedelosnivelesobtenidos.
> datos=as.data.frame(cbind(niveles,y))#Creacindelobjetodataframe.
> boxplot(y~niveles,data=datos,notch=T)#Diagramadebigotespornivel.
26

Diagramadebarras
Este es quiz uno de los grficos que menor nivel de automatizacin tiene. En este grfico el
usuario debe especificar las alturas de las barras y luego relacionarlas manualmente con las
categoras de alguna variable. Sin embargo, el usode la funcin summary() agiliza la creacin
delosgrficosdebarras.
Ejemplo:
> r=rpois(50,3)#Simulacindeunavariablepoisson.
> y=ifelse(r==0,"categoria1",ifelse(r==1,"categoria2","categoria3"))
> z=as.factor(y)#Simulacindeunavariablecategrica.
> barplot(summary(z),col="green",main="Diagrama de barras") #Diagrama de barras de
#lavariablesimulada.

Diagramadetorta
Estediagramaessimilaraldiagramadebarrasenconstruccineinterpretacin.
> pie(summary(z),main="Diagrama de torta") #Diagrama de torta de la variable
#simulada.

Como en todos los grficos vistos anteriormente es posible manipular los ttulos, ejes,
etiquetasdelosejes,etc.
Conjuntosdedatosparaexperimentar
Rtienevariosconjuntosdedatosparaexperimentar.Paraverlosescribaenlaconsoladata().
Para ver en la pantalla el conjunto de comandos escriba su nombre en la consola de R y
presione Enter. Finalmente para obtener ayuda sobre un conjunto de datos, as como la
explicacindelasvariablesqueloconformanescribahelp(nombredeldataframe).

Ejercicio:
CargueelconjuntodedatosOrangeyconstruyaloshistogramas,bloxplotygrficosde
barras que considere pertinentes. En todos los casos agregue ttulos, subttulos y
leyendas.Exploreutilizarcoloresdiferentesalospredeterminados.

27

SESIN4
Elementos de programacin. Bucles If, for, while. Programacin vectorizada. Scripts.
Funciones.Creacindefunciones.Llamadoaunafuncin.

Elementosdeprogramacin
En R se puede implementar casi cualquier tipo de software. Es posible disear complejas
interfacesgrficasqueutilicenRcomoeloperadordeprocesos.Enestasesinsepretendedar
los elementos bsicos para programar en R. Inicialmente se describirn los bucles,
posteriormentelosscriptsyporltimolasfunciones.

Bucles
Los bucles o ciclos son elementos de decisin o de repeticin de procedimientos. A
continuacinsedescribirbrevementecomoseutilizaelfor,elwhileyelif.

for
El ciclo for se utiliza para llevar a cabo una operacin en funcin de una secuencia. Su uso es
comosigue:
> for(variableinsecuencia){
> operacionesenfuncindelavariable
> }
Es de conocimiento general que el ciclo for de R no es muy eficiente. En lugar de este es
preferible utilizar operaciones entre vectores o el comando apply(). A esto se le llama
programacinvectorizada.Noobstante,cuandolasoperacionesquesellevaacabodentrodel
forsonintensivasentiempodecmputo,estecicloresultaapropiado.
Ejemplo:
> x=seq(0,10,1)#Creaunvectordetamao11conlosnmerosdel0al10.
> y=seq(0,0,length.out=11)#Creaunvectordecerosdondeseguardarlosresultados.
> for(iin1:11){
> y[i]=x[i]^2
> }
> y
Laoperacindeelevarcadaelementodelvectorxalcuadradoyalmacenarelresultadoenel
vector y se pudo haber llevado a cabo con la simple instruccin y=x^2. La secuencia no
necesariamentetienequeserdenmeros,comoseveenelsiguienteejemplo.
Ejemplo:
> for(iinc("Proceso1","Proceso2","Proceso3")){
28

> print(cbind("Ejecutandoel",i))
> }

while
Elciclowhilesepuedeentendercomounageneralizacindelciclofor.Enelwhileunconjunto
deoperacionesseejecutahastaverificarunacondicincomo
> while(severifiquelacondicin){
> operaciones
> }
Ejemplo:
> j=0
> while(j<10){
> j=j+1
> print(j)
> }
Enelejemploseincrementaunavariablehastaqueestatomeelvalorde10.Elusodelwhile
requiere un cuidado especial para no caer involuntariamente en un ciclo infinito con una
condicindefinalizacindeciclomalespecificada.Enelejemploanteriortambinseobserva
comoelwhilepodraremplazaralforendeterminadasocasiones.
Ejemplo:
> N=25
> res=N/2
> j=1
> while(res>1){
> print(j)
> res=res/2
> j=j+1
> }
Enelejemploanteriorseutilizunciclowhileparadeterminarcuntasveceshabaquedividir
elnmeroNentre2hastaobtenerunresultadomenora1.

ifeifelse
Losciclosderepeticincomoelforyelwhileadquierenunagranpotenciacuandoseusanen
junto con ciclosdedecisin,quepermitanen cadaiteracin evaluarcondicionesdel proceso.
En R se tiene el if, comn a todos los lenguajes de programacin y adicionalmente el ifelese
quesepuedevercomounaimplementacinconjuntadelforyelifdiseadaespecficamente
paratrabajarconvectoresyarreglos.
29

Elifevalaunaexpresinparaencontrarsuvalordeverdad.Encasodequeresulteverdadera
ejecuta determinadas operaciones y en caso de ser falsa ejecuta unas operaciones
alternativas.Sufuncionamientoescomosigue
> if(condicin){
> operacionessilacondicinesverdadera
> }else{
> operacionessilacondicinesfalsa
> }
Ejemplo:
> N=100
> if(N>10){
> print("Nesmayorque10")
> }else{
> print("Nesmenoroigualque10")
> }
EnelejemploanteriorseevalasiunnmeroNesmayorque10ysereportaelresultadode
estaevaluacin.
Elifelseesbastantetilparaaplicarcriteriosdedecisinsobreunvectoroarreglo.Elresultado
deestaaplicacindecriteriospuedealmacenarseenunvector.Funcionacomosigue
> ifelse(condicin en funcin de un vector, valor de la componente del vector si la
condicinesverdadera,valordelacomponentedelvectorsilacondicinesfalsa)
> resultado=ifelse(condicinenfuncindeunvector,valordelacomponentedelvector
silacondicinesverdadera,valordelacomponentedelvectorsilacondicinesfalsa)
Ejemplo:
> x=seq(1,20,1)
> y=ifelse(x%%2==0,1,0) #Evala que valores de x son divisibles exactamente por dos y
#enestecasoasigna1,paralosquenosondivisiblesexactamentepordosasignacero.
> y
Una alternativa a la funcin ifelse cuando se desea saber que componentes de un vector
arreglocumplenunacondicinespecficaeslafuncinwhich().Estadevuelvelosndicesdelas
componentesdelvectoroarregloquecumplenconunacondicin.
Ejemplo:
> x=seq(1,20,1)
> y=which(x%%2==0)
30

Scripts
Los scripts son conjuntos de instrucciones independientes para llevar a cabo determinadas
operaciones. La utilidad de estos radica en que una vez escrito un cdigo, este puede ser
ejecutadocuantasvecesseanecesariohastaobtenerelresultadoquesebusca.
ParacrearunnuevoscriptenRvayaaArchivo>Nuevoscriptyparaabrirunoyaexistentevaya
aArchivo>Abrirscript.
EnunscriptpuedeseleccionarunconjuntodelneasyejecutarlasconlasteclasCtrl+R.

Funciones
Las funciones tambin son conjuntos de cdigo para llevar a cabo operaciones especficas. La
principal diferencia con los scripts radica en el espacio de memoria que utilizan. Los scripts
utilizanelmismoespaciodememoriaquelainterfazdeR,mientrasquelasfuncionessonms
eficientesenelalmacenamientodevariablesyusodelamemoriadelcomputador.
Lasfuncionesseutilizancomosigue:
> nombre=funcin(argumentos){
> operaciones
> nombre=resultadosdeinters
> }
Deestaformasecreaunafuncinquesellamanombre.Losargumentossonvariablesconlas
queseejecutanlasoperacionesdentrodelasfunciones.
Ejemplo:
> descriptivos=function(x){
> media=mean(x)
> mediana=median(x)
> varianza=var(x)
> x11()
> hist(x)
> desciptivos=list(media=media,mediana=mediana,varianza=varianza)
> }
La funcin anterior calcula la media, mediana y la varianza de un vector y lo almacena en el
objetoresultado.Adicionalmentegraficaelhistograma.Puedeusarsecomosigue:
> z=rnorm(100,0,1)
> des.z=descriptivos(z)
> p=rpois(150,4)
> des.p=descriptivos(p)

31

Ejercicio:
Se tiene una lista de 10 personas para ocupar un cargo disponible en el archivo
ejercicioseleccion.xls. Se desea contratar una persona con ttulo profesional
universitario y con experiencia laboral. El sistema de evaluacin de hoja de vida
funcionacomosigue:
o Si tiene ms de 3 aos de experiencia tiene 3 puntos. En caso contrario
obtienesolouno.
o Siessolteroobtiene2puntos,encasocontrarioobtiene0.
o Sitienealgnposgradotiene3puntos.Encasocontrarioobtiene0.
o Eltotaldelospuntossesumayseescogeeldemayorpuntaje.
EscribaunporgramaenRquepermitaseleccionarlasmejoresopciones.

32

SESIN5
EstadsticadescriptivaenR.Estadsticosderesumen.Histograma.Grficodebigotes.Grfico
de dispersin. Matriz de dispersin. Diagnstico de datos atpicos. Suavizaciones. Ajuste de
modeloslineales.

EstadsticadescriptivaenR
En R hay implementadas una gran cantidad de funciones orientadas a la estadstica. En este
punto,deberesultarfcilimplementarfuncionespropiasyobtenergrficasparallevaracabo
anlisisestadsticos.Anas,Rpermitehacerestodeunaformatodavamssimpleutilizando
lasfuncionesquevienenenlaslibrerasdisponiblesenelservidorCRAN.
Por estadstica descriptiva en este mdulo entenderemos ciertas operaciones sobre un
conjuntodedatosquepermitenobtener:
Medidasdelocalizacinydispersindelasvariables.
Grficosexploratorios(dedispersin,histogramasyboxplots).
Medidasdedependencialinealentrelasvariables(covarianzaycorrelacin).
Modeloslinealesentrelasvariablesyalgunastransformacionesusualesdelasmismas
(logaritmos,exponencialespotenciales).
En esta sesin se ilustrar lo anterior con la base de datos USArrests que hace parte de la
libreradatadeR.
> datos=USArrests#GuardaenelobjetodatoslabasededatosUSArrests.
Antesdeproseguirhayqueentenderprimerolabasededatos:
> help(USArrests)

Medidasdelocalizacin,dedispersinyderesumen.
Ahoravamosaobteneralgunosestadsticosderesumenconlafuncinsummary().
> summary(datos)
De esta forma se obtienen medidas de localizacin de las variables. Ahora, para obtener
medidas de dispersin se utilizarn las funciones de varianza var() y de desviacin estndar
sd().Comounaesfuncindelaotra,lousualesreportarsolounadelasdos.Haydosopciones
> var(datos[,1])#Obtienelavarianzadelacolumna1.
> var(datos[,2])#Obtienelavarianzadelacolumna2.
> var(datos[,3])#Obtienelavarianzadelacolumna3.
> var(datos[,4])#Obtienelavarianzadelacolumna4.
Alternativamente podemos hacerlo todo con una sola instruccin usando la funcin apply()
que funciona como apply(arreglo, dimensin, funcin, argumentos adicionales de la funcin),
33

dondedimensinpuedeser1,siseaplicalafuncinalasfilas2siseaplicaalascolumnas;
funcineslafuncinqueseaplicarypuedeserunafuncindeRosuslibrerasounapropiay
losargumentosadicionalessoloseescribencuandolafuncinlorequiera.
> apply(datos,2,var)#Aplicalafuncinvar()alascolumnas(2)delamatrizdedatos.
De igual manera se podra proceder con las funciones mean(), median() y quantile() para
obtenerlosestadsticosderesumenproporcionadosporlafuncinsummary().
Ejercicio:
> Lleveacaboelmismoprocedimientoconlafuncinsd().

Medidasdedependencialineal
Paraobtenermedidasdedependencialinealseusanlasmatricesdecorrelacinycovarianza.
Esusualpresentarsolounadelasdos.
> cov(datos)#Obtienelamatrizdevarianzasycovarianzas.
> cor(datos)#Obtienelamatrizdecorrelaciones.

Grficosexploratorios
Cuando no son muchas variables se puede elaborar el grfico de dispersin de todas las
variablesdosados.Paraestoseutilizalafuncinpairs().
> pairs(datos)
Ahora se obtendr los histogramas y boxplots de las variables. Primero puede resultar
convenientesepararlasvariablesdelabasededatosenlamemoriadeR.Estoselograconel
comandoattach().
> attach(datos)
ParaobtenerelhistogramadelavariableMurderyelboxplotenlamismaventanaseprocede
comosigue:
> par(mfrow=c(2,1))
> hist(Murder)
> boxplot(Murder)
Recuerdequepuedemodificarlosgrficosparahacerlosmsllamativoseinterpretables.
En el grfico de dispersin obtenido pareca haber una relacin lineal evidente entre las
variables Assault y Murder. Este tipo de relaciones se pueden explorar con una suavizacin,
queenRsellevacaboconlafuncinksmooth()(entreotras).Lafuncinksmoth()seusacomo
sigue:
> ksmooth(variabledependiente,variableexplicativa,anchodelaventana).
34

Enelejemploquesesiguesepuedeutilizarcomo
> suavizacion=ksmooth(Assault,Murder,bandwidth=200)#Llevaacabolasuavizacin.
> plot(Assault,Murder)
> lines(suavizacion,type="l",col="red")

Modeloslineales
Paraconstruirunmodelolinealqueayudeainvestigarlahiptesisderelacinlinealsepuede
utilizarelcomandolm().
> regresion=lm(Assault~Murder)#Llevaacabolaregresinparaelmodelolineal.
> plot(regresion)#Obtienelosgrficosdiagnsticosdelmodeloobtenido.
> summary(regresion)#Escribeenlapantallalosresultadosdelaregresin.
En un anlisis descriptivo bsico faltara tratar las variables categricas. Si stas han sido
codificadas con nmeros, entonces deben ser convertidas a la clase factor. En caso de que
estasnoestcodificadasconnmerosRlasasumecategricasautomticamente.
Ejemplo:
Suponga que la variable var1 del data frame datos es categrica y est codificada
como 1, 2 y 3. Para convertirla en variable categrica en R siga los siguientes
pasos:
> datos$var1=as.factor(datos$var1)
Ejemplo:
> datos=chickwts#Almacenaenelobjetodatoslabasededatoschickwts.
> summary(datos)#Obtienelosestadsticosdescriptivosdelabasededatos.
> barplot(summary(chickwts$feed))#Obtieneelgrficodebarrasdelavariablefeed.

Ejercicio
LleveacabounanlisisdescriptivodelabasededatosToothGrowth.

You might also like