You are on page 1of 79

Gr acas y C omputo

Estadstico Usando R
Jos e A. Montoya
Departamento de Matem aticas
Universidad de Sonora
ii
Contenido
1 Antes de iniciar 1
1.1 Instalaci on de R . . . . . . . . . . . . . . . . . . . 1
1.2 Directorio de trabajo . . . . . . . . . . . . . . . . 2
1.3 Archivo de trabajo en R . . . . . . . . . . . . . . . 2
1.4 Primer programa en R . . . . . . . . . . . . . . . . 3
1.5 Ayuda para programar en R . . . . . . . . . . . . . 3
2 Tipos de objetos en R 5
2.1 Tipos de objetos . . . . . . . . . . . . . . . . . . . 5
2.1.1 Vector . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Matriz . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Arreglo . . . . . . . . . . . . . . . . . . . 7
2.1.4 Factor . . . . . . . . . . . . . . . . . . . . 7
2.1.5 data.frame . . . . . . . . . . . . . . . . . . 8
2.1.6 lista . . . . . . . . . . . . . . . . . . . . . 8
2.1.7 ts . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Atributos de objetos . . . . . . . . . . . . . . . . . 10
2.2.1 Tipo y longitud . . . . . . . . . . . . . . . 10
3 Manejo de archivos de datos 11
iv CONTENIDO
3.1 Leer datos de un archivo . . . . . . . . . . . . . . 11
3.1.1 Archivos de texto . . . . . . . . . . . . . . 11
3.1.2 Archivos de Excel . . . . . . . . . . . . . 12
3.2 Guardar datos en un archivo . . . . . . . . . . . . 12
3.2.1 Archivos de texto . . . . . . . . . . . . . . 12
3.2.2 Archivos de Excel . . . . . . . . . . . . . 13
4 Variables aleatorias 15
4.1 Discretas . . . . . . . . . . . . . . . . . . . . . . 16
4.1.1 Poisson . . . . . . . . . . . . . . . . . . . 16
4.1.2 Binomial . . . . . . . . . . . . . . . . . . 16
4.1.3 Binomial Negativa . . . . . . . . . . . . . 17
4.2 Continuas . . . . . . . . . . . . . . . . . . . . . . 17
4.2.1 Uniforme . . . . . . . . . . . . . . . . . . 17
4.2.2 Exponencial . . . . . . . . . . . . . . . . . 18
4.2.3 Normal . . . . . . . . . . . . . . . . . . . 18
5 An alisis exploratorio de datos 19
5.1 Estadsticas descriptivas . . . . . . . . . . . . . . . 19
5.2 Gr acas descriptivas . . . . . . . . . . . . . . . . 20
5.2.1 Histograma . . . . . . . . . . . . . . . . . 20
5.2.2 Gr aca de barras . . . . . . . . . . . . . . 20
5.2.3 Gr aca de X versus Y . . . . . . . . . . . . 21
6 Operaciones b asicas 23
6.1 Vectores . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . 25
6.3 L ogicas . . . . . . . . . . . . . . . . . . . . . . . 26
CONTENIDO v
7 Estructuras de programaci on en R 27
7.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.2 while . . . . . . . . . . . . . . . . . . . . . . . . 28
7.3 if-else . . . . . . . . . . . . . . . . . . . . . . . . 28
7.4 repeat . . . . . . . . . . . . . . . . . . . . . . . . 28
7.5 switch . . . . . . . . . . . . . . . . . . . . . . . . 29
8 Denir, evaluar y maximizar funciones 31
8.1 Ejemplo: Funci on de verosimilitud Binomial (N
0
, p) 31
8.2 Ejemplo: Funci on de verosimilitud Exponencial () 33
8.3 Ejemplo: Funci on de verosimilitud Lognormal (, ) 34
9 Supercies, Contornos y perles de funciones 37
9.1 Ejemplo: Funci on de verosimilitud Normal (, ) . 37
9.2 Tarea Final . . . . . . . . . . . . . . . . . . . . . 40
vi CONTENIDO
Captulo 1
Antes de iniciar
1.1 Instalaci on de R
Para instalar R se sugiere seguir los siguentes pasos:
1. Ir a la p agina del proyecto R (http://www.r-project.org/).
2. Seleccionar la opci on CRAN.
3. Aparecer a una lista de lugares de donde es posible descar-
gar R. Seleccionar uno de ellos. Por ejemplo, Argentina
(http://cran.patan.com.ar/).
4. Seleccionar el sistema operativo para R. Por ejemplo, Win-
dows.
5. Seleccionar el subdirectorio llamado base para descargar R.
6. Seleccionar la versi on de R (Download R 2.11.0 for Win-
dows) y guardar el archivo de instalaci on en tu computadora
(R-2.11.0-win32.exe).
7. Por ultimo, se debe abrir el archivo anterior y seguir el pro-
ceso de instalaci on.
2 Antes de iniciar
1.2 Directorio de trabajo
Para crear una carpeta de trabajo donde R guarde y lea informaci on
de forma directa se proceder a de la siguiente forma:
1. Crear una carpeta en alg un lugar del disco duro o en alguna
memoria USB
(C:\Documents and Settings\Mery\Escritorio\R-JAMontoya).
La carpeta creada (R-JAMontoya) ser a llamada carpeta de
trabajo.
2. Usar la carpeta de trabajo como direcci on actual de trabajo
de R. Para ello se seguir an los siguientes pasos.
(a) Abrir el programa R.
(b) Seleccionar la opci on Archivo del men u y luego ir a
Cambiar dir...
(c) Seleccionar la carpeta de trabajo (R-JAMontoya) y Acep-
tar.
1.3 Archivo de trabajo en R
Para crear un archivo donde se especicar an las instrucciones o
comandos que R ejecutar a se siguen los siguientes pasos:
1. Seleccionar la opci on Archivo del men u y luego ir a Nuevo
script.
2. Seleccionar la opci on Ventana del men u y elegir una vista
adecuada.
3. Seleccionar la opci on Archivo del men u y luego ir a Guan-
dar como ...
1.4 Primer programa en R 3
4. Dar un nombre adecuado al archivo y Guardar
(JAMontoyaPrograma01).
5. Por ultimo, vericar que el archivo de trabajo se guard o en
la carpeta de trabajo.
1.4 Primer programa en R
El Programa01 del Ap endice muestra como asignar valores a ob-
jetos y como borrar objetos en memoria. Se usan las siguientes
instrucciones:
Comando Descripci on
# Un caracter que dene comentarios en el
archivo de datos. Lneas que comienzen con
este caracter son ignoradas en la lectura.
<- Asigna valores a objetos
ls() Lista objetos en memoria
rm() Borra objetos en memoria
Escribe tu propia versi on del Programa01 y gr abalo en tu
carpeta de trabajo.
1.5 Ayuda para programar en R
A continuaci on se muestran dos estrategias para buscar ayuda.
1. Cuando se conoce el nombre de la funci on o caracter no
convencional que se desea utilizar.
Instrucci on Descripci on
help(rm) Muestra la ayuda para la funci on rm
help(!=) Muestra la ayuda para el caracter no con-
vencional !=
4 Antes de iniciar
2. Cuando no se conoce el nombre de la funci on o caracter no
convencional que se desea utilizar.
Se recomienda buscar en Google utilizando palabras
claves. Por ejemplo,
Qu e deseo hacer? Palabras claves en Google
Borrar objetos de la
memoria de R.
R delete object.
Evaluar si un objeto
es diferente a otro.
R no equal operator.
Int entalo!!!
Captulo 2
Tipos de objetos en R
C omo le hago entender a R que los valores 0 y 1 no son re-
sultados de una variable aleatoria sino que representan cate-
goras?
Aqu se presentar an 7 diferentes tipos de objetos de R: Vec-
tor, factor, arreglo, matriz, data.frame, ts y lista.
Adem as, para cada tipo de objeto se especicar an sus atrib-
utos. V ease el Programa02 del Ap endice.
Particularmente, todo esto es importante puesto que la acci on
de una funci on sobre un objeto depende del tipo de objeto.
2.1 Tipos de objetos
2.1.1 Vector
Instrucci on Descripci on
x<-c(0,1,2.5,-100,9,20) x es un vector num erico
y<-c(A,B,C,D) y es un vector de caracteres
z<-c(T,T,F,F) z es un vector l ogico
6 Tipos de objetos en R
Para obtener el i- esimo elemento de un vector x se escribe
x[i].
2.1.2 Matriz
Todas las columnas en una matriz deben ser de la misma clase
(num erico, caracteres, etc.) y de la misma longitud.
Instrucci on Descripci on
Mx<-matrix(x,nrow=3,ncol=2,
byrow=FALSE)
Convierte al vector x en una
matriz num erica Mx de 3 -
las y 2 columnas. N otese que
los elementos del vector x son
colocados verticalmente en la
matriz Mx (byrow=FALSE)
My<-matrix(y,nrow=2,ncol=2,
byrow=F)
Convierte al vector y en una
matriz de caracteres My de 2
las y 2 columnas. N otese
que los elementos del vector y
son colocados verticalmente
en la matriz My (byrow=F)
Mz<-matrix(z,nrow=2,ncol=2,
byrow=T)
Convierte al vector z en una
matriz l ogica My de 2 las y 2
columnas. N otese que los ele-
mentos del vector z son colo-
cados horizontalmente en la
matriz Mz (byrow=T)
Para obtener el ij- esimo elemento de una matriz M se escribe
M[i,j].
C omo se obtiene la i- esima la de M?
C omo se obtiene la j- esima columna de M?
2.1 Tipos de objetos 7
C omo se obtienen los elementos de la columna j contenidos
entre las las r y s de M?
2.1.3 Arreglo
Son similares a las matrices pero pueden tener m as de dos dimen-
siones.
Instrucci on Descripci on
Ma<-array(c(1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12), dim=c(2,2,3))
>Ma[,,1]
[, 1] [, 2]
[1, ] 1 3
[2, ] 2 4
>Ma[,,2]
[, 1] [, 2]
[1, ] 5 7
[2, ] 6 8
>Ma[,,3]
[, 1] [, 2]
[1, ] 9 11
[2, ] 10 12
2.1.4 Factor
Un objeto factor almacena el valor de una variable nominal (vari-
able cualitativa que no puede ser sujeta a un orden). Por ejemplo,
sexo, colores, etc.
Instrucci on Descripci on
F<-factor(c(Hombre, Hombre,
Mujer, Mujer, Hombre))
>summary(F)
Hombre Mujer
3 2
8 Tipos de objetos en R
2.1.5 data.frame
Es m as general que una matriz en el sentido de que las columnas
pueden tener diferentes clases de objetos (num ericos, caracteres,
factores, etc).
Instrucci on Descripci on
D<-data.frame(c(0,1),c(Rojo,
Amarillo), c(TRUE,FALSE))
names(D)<-c(X1,X2,X3)
>D
X1 X2 X3
1 0 Rojo TRUE
2 1 Amarillo FALSE
2.1.6 lista
Es una colecci on ordenada de objetos.
Instrucci on Descripci on
L<-list(x,Mx,D) >L[[1]]
[1] 0 1 2.5 -100 9 20
>L[[2]]
[, 1] [, 2]
[1, ] 0 -100
[2, ] 1 9
[3, ] 2.5 20
>L[[3]]
X1 X2 X3
1 0 Rojo TRUE
2 1 Amarillo FALSE
2.1.7 ts
Crea un objeto serie de tiempo.
2.1 Tipos de objetos 9
Instrucci on Descripci on
DT<-data.frame(c(0.2875, 0.3000,
0.3195, 0.3180, 0.3415, 0.3725,
0.5550, 0.7825, 0.7475, 0.5520,
0.2860, 0.2620, 0.3270, 0.3960,
0.4060), c(16.0484, 17.1786, 18.7016,
23.4083, 24.7016, 28.4417, 30.2742,
28.9677, 27.9000, 23.2016, 18.2000,
13.0323, 14.8710, 15.0357, 15.9032))
names(DT)<-c(NDVI,Temp)
>DT
NDVI Temp
1 0.2875 16.0484
2 0.3000 17.1786
3 0.3195 18.7016
4 0.3180 23.4083
5 0.3415 24.7016
6 0.3725 28.4417
7 0.5550 30.2742
8 0.7825 28.9677
9 0.7475 27.9000
10 0.5520 23.2016
11 0.2860 18.2000
12 0.2620 13.0323
13 0.3270 14.8710
14 0.3960 15.0357
15 0.4060 15.9032
tsData<-ts(DT,frequency=12) >tsData
NDVI Temp
Jan 1 0.2875 16.0484
Feb 1 0.3000 17.1786
Mar 1 0.3195 18.7016
Apr 1 0.3180 23.4083
May 1 0.3415 24.7016
Jun 1 0.3725 28.4417
Jul 1 0.5550 30.2742
Aug 1 0.7825 28.9677
Sep 1 0.7475 27.9000
Oct 1 0.5520 23.2016
Nov 1 0.2860 18.2000
Dec 1 0.2620 13.0323
Jan 2 0.3270 14.8710
Feb 2 0.3960 15.0357
Mar 2 0.4060 15.9032
10 Tipos de objetos en R
2.2 Atributos de objetos
Todo objeto tiene dos atributos intrnsecos: tipo y longitud.
2.2.1 Tipo y longitud
El tipo se reere a la clase b asica de los elementos en el
objeto. Por ejemplo, numerico, caracter, l ogico.
La longitud es simplemente el n umero de elementos en el
objeto.
Para ver el tipo y la longitud de un objeto se pueden usar las
funciones mode y length como se muestra a continuaci on:
Instrucci on Descripci on
mode(x) [1] numeric
length(x) [1] 6
mode(Mx) [1] numeric
length(Mx) [1] 6
mode(Ma) [1] numeric
length(Ma) [1] 12
mode(F) [1] numeric
length(F) [1] 5
mode(D) [1] list
length(D) [1] 3
mode(L) [1] list
length(L) [1] 3
Escribe tu propia versi on del Programa02 y gr abalo en tu car-
peta de trabajo.
Captulo 3
Manejo de archivos de datos
R puede leer y guardar datos en diferentes formatos (Texto,
Excel, SAS, SPSS,...).
Aqu se describir an unicamente funciones para leer y guardar
datos en formato Texto y Excel (v ease Programa03).
3.1 Leer datos de un archivo
3.1.1 Archivos de texto
Para leer un archivo de texto (ASCII) se puede utilizar la
funci on read.table.
La funci on read.table crea un marco de datos de tipo data.frame.
DatosPMA<-read.table(s26032PrecipMaxAnual.txt ,
header=TRUE,sep=)
12 Manejo de archivos de datos
3.1.2 Archivos de Excel
Para leer un archivo Excel se puede usar la funci on read.xls.
Sin embrago, esta funci on requiere tener instalada la librera
xlsReadWrite.
Para instalar esta librera se puede escribir la siguiente or-
den:
install.packages(xlsReadWrite )
Luego, comentar la instrucci on anterior para no reinstalar
xlsReadWrite cada vez que se ejecute el programa.
#install.packages(xlsReadWrite )
Una vez instalada la librera xlsReadWrite es necesario ac-
tivarla. Para hacerlo se escribe lo siguiente:
library(xlsReadWrite)
Ahora ya se puede utilizar la funci on read.xls para leer un
archivo Excel.
NivelGlucosa<-read.xls(DatosGlucosa2007Nogales.xls ,
sheet=1,type=data.frame )
3.2 Guardar datos en un archivo
3.2.1 Archivos de texto
Para guardar informaci on en un archivo de texto se puede
utilizar la funci on write.table.
3.2 Guardar datos en un archivo 13
write.table(DatosPMA,le=PrecipMaxAnual.txt ,
sep=, col.names = TRUE, row.names = FALSE)
3.2.2 Archivos de Excel
Para guardar informaci on en un archivo de Excel se puede
utilizar la funci on write.xls.
write.xls(DatosPMA,le=PrecipMaxAnual.xls ,
colNames = TRUE,sheet = 1,rowNames = FALSE)
Escribe tu propia versi on del Programa03 y gr abalo en tu car-
peta de trabajo.
14 Manejo de archivos de datos
Captulo 4
Variables aleatorias
Aqu se ver a como evaluar la funci on de densidad de probabilidad
(d) y la funci on de distribuci on (p) de variables aleatorias discretas
y continuas. Adem as, se mostrar a como calcular los cuantiles (q)
y como simular muestras (r) de dichas variables (Programa04).
R tiene implemetado, para diversas variables aleatorias, fun-
ciones especcas para calcular d, p, q y r.
En general, el nombre de estas funciones se encuentra con-
formado por dos partes: (Operaci onNombreR):
1. Operaci on: d, p, q, r.
2. NombreR : Es el nombre que R tiene especicado para
la variable aleatoria (beta, binom, exp, norm, etc.). Para
m as informaci on v ease p agina 33 de R-intro.pfd (Men u
de R, Ayuda, Manuales (en PDF), An Introduction
to R).
Por ejemplo,
dbeta(), pbeta(), qbeta() y rbeta().
dnorm(), pnorm(), qnorm() y rnorm().
16 Variables aleatorias
4.1 Discretas
4.1.1 Poisson
Sup ongase que X es una variable aleatoria Poisson con me-
dia = 30.
Instrucci on Descripci on
dpois(25,lambda=30) Funci on de probabilidad
evaluada en X = 25
ppois(25,lambda=30) Funci on de distribuci on,
P(X 25)
qpois(0.95,lambda=30) Cuantil 0.95
rpois(50,lambda=30) Muestra simulada de
tama no n = 50
4.1.2 Binomial
Sup ongase que X es una variable aleatoria Binomial con
par ametros N = 100 y p = 0.3.
Instrucci on Descripci on
dbinom(25,size=100,prob=0.3) Funci on de probabilidad
evaluada en X = 25
pbinom(25,size=100,prob=0.3) Funci on de distribuci on,
P(X 25)
qbinom(0.95,size=100,prob=0.3) Cuantil 0.95
rbinom(50,size=100,prob=0.3) Muestra simulada de
tama no n = 50
4.2 Continuas 17
4.1.3 Binomial Negativa
Sup ongase que X es una variable aleatoria Binomial Nega-
tiva con par ametros r = 100 y p = 0.9. Aqu, X se puede
pensar como el n umero de fallas antes de conseguir r exitos.
La probabilidad de exito es p.
Instrucci on Descripci on
dnbinom(25,size=100,prob=0.9) Funci on de probabilidad
evaluada en X = 25
pnbinom(25,size=100,prob=0.9) Funci on de distribuci on,
P(X 25)
qnbinom(0.95,size=100,prob=0.9) Cuantil 0.95
rnbinom(50,size=100,prob=0.9) Muestra simulada de
tama no n = 50
4.2 Continuas
4.2.1 Uniforme
Sup ongase que X es una variable aleatoria Uniforme con
par ametros a = 0 y b = 1.
Instrucci on Descripci on
dunif(0.5,min=0,max=1) Funci on de densidad
evaluada en X = 0.5
punif(0.5,min=0,max=1) Funci on de distribuci on,
P(X 0.5)
qunif(0.95,min=0,max=1) Cuantil 0.95
runif(50,min=0,max=1) Muestra simulada de
tama no n = 50
18 Variables aleatorias
4.2.2 Exponencial
Sup ongase que X es una variable aleatoria Exponencial con
par ametro = E[X] = 10.
Instrucci on Descripci on
dexp(10,rate=1/10) Funci on de densidad
evaluada en X = 10
pexp(10,rate=1/10) Funci on de distribuci on,
P(X 10)
qexp(0.95,rate=1/10) Cuantil 0.95
rexp(50,rate=1/10) Muestra simulada de
tama no n = 50
4.2.3 Normal
Sup ongase que X es una variable aleatoria Normal con me-
dia = E[X] = 0 y desviaci on =

Var[X] = 1.
Instrucci on Descripci on
dnorm(0,mean=0,sd=1) Funci on de densidad
evaluada en X = 0
pnorm(0,mean=0,sd=1) Funci on de distribuci on,
P(X 0)
qnorm(0.95,mean=0,sd=1) Cuantil 0.95
rnorm(50,mean=0,sd=1) Muestra simulada de
tama no n = 50
Qu e sucede si las funciones de densidad, distribuci on y
cuantiles son evaluadas en un vector?
Escribe tu propia versi on del Programa04 y gr abalo en tu carpeta
de trabajo.
Captulo 5
An alisis exploratorio de datos
Aqu se calcular an varias estadsticas descriptivas (media,
varianza, desviaci on, etc.) haciendo uso de funciones de R.
Tambi en se mostrar a como elaborar y almacenar gr acas
tpicas en el an alis exploratorio de datos (histogramas, gr aca
de dispersi on, etc.).
Detalles del c odigo de programaci on empleado se muestran
en el Programa05.
5.1 Estadsticas descriptivas
Instrucci on Descripci on
length(y) N umero de elementos de y
min(y) Mnimo valor de y
max(y) M aximo valor de y
mean(y) Media muestral o promedio
median(y) Mediana muestral
var(y) Varianza muestral (usa n-1)
sd(y) Desviaci on muestral (usa n-1)
20 An alisis exploratorio de datos
La funci on sort() ordena elementos de un vector en forma
descendente o ascendente. As, para obtener la i- esima es-
tadstica de orden se puede escribir la siguiente instrucci on:
sort(y)[i]
N otese que el rango muestral se puede calcular como el
m aximo menos el mnimo de los datos.
5.2 Gr acas descriptivas
5.2.1 Histograma
A continuaci on se muestran las funciones usadas en el Pro-
grama05 para gracar el histograma del nivel de glucosa
de mujeres entre 15 y 70 a nos medido en Nogales, Sonora,
M exico durante el 2008.
Instrucci on Descripci on
read.xls() Leer los datos (Hombres y
Mujeres)
subset() Seleccionar nivel de glucosa
de mujeres entre 15 y 70 a nos
hist() Gracar el histograma
axis() Manejar los ejes del his-
tograma (espaciamiento)
curve() Ajustar una curva al his-
tograma
5.2.2 Gr aca de barras
A continuaci on se muestran las funciones usadas en el Pro-
grama05 para elaborar una gr aca de barras de tres tipos de
5.2 Gr acas descriptivas 21
defectos encontrados en siete actividades asociadas al desar-
rollo de software (DatosDefectosSoftware.xls).
Instrucci on Descripci on
read.xls() Leer los datos
as.matrix() Convierte los datos a una ma-
triz
barplot() Gr aca de barras
5.2.3 Gr aca de X versus Y
A continuaci on se muestran las funciones usadas en el Pro-
grama05 para gracar la precipitaci on m axima anual obser-
vada en una estaci on meteorol ogoca de Hermosillo, Sonora,
M exico.
Instrucci on Descripci on
read.table() Leer los datos
plot() Gr aca de X versus Y
legend() Leyenda
title() Ttulo de la gr aca
Para grabar una gr aca sigue la siguiente instrucci on. Del
men u de R, primero selecciona Archivo y luego Guardar
como. Por ultimo, selecciona el formato de grabaci on: Metale,
Postscript, PDF, etc.
Escribe tu propia versi on del Programa05 y gr abalo en tu
carpeta de trabajo.
22 An alisis exploratorio de datos
24 Operaciones b asicas
Captulo 6
Operaciones b asicas
6.1 Vectores
Instrucci on Descripci on
rep() Repite un vector un n umero
especicado de veces
seq() Crea una secuencia de val-
ores. Requiere un valor ini-
cial, un valor nal y el tama no
de los incrementos
cbind() Concatena vectores (por
columnas)
rbind() Concatena vectores (por las)
cumsum() Suma acumulada de los elem-
ntos de un vector
vec1==vec2 Compara los elementos de
dos vectores. Produce TRUE
si son iguales o FALSE si son
diferentes
vec1!=vec2 Compara los elementos de
dos vectores. Produce TRUE
si son diferentes o FALSE si
son iguales
6.2 Matrices 25
6.2 Matrices
Sup ongase que X, Y y Z son matrices y que c es un escalar.
Instrucci on Descripci on
X + Y Suma de matrices
X + c Suma a cada elemento de la
matriz X el escalar c
X Y Resta de matrices
X c Resta a cada elemento de la
matriz X el escalar c
X%*%Z Producto de matrices (di-
mensi on compatible)
X Y Multiplicaci on de matrices
elemento a elemento (di-
mensi on compatible)
X c Multiplica a cada elemento de
la matriz X el escalar c
XY Potencia de matrices ele-
mento a elemento (dimensi on
compatible)
Xc Eleva cada elemento de la
matriz X a la potencia c
X/Y Divisi on de matrices ele-
mento a elemento (dimensi on
compatible)
X/c Divide a cada elemento de la
matriz X entre el escalar c
t(X) Transpuesta de X
solve(X) Inversa de X
det(X) Determinante de X
diag(k) Matriz identidad de kxk (con-
tiene unos en la diagonal)
26 Operaciones b asicas
6.3 L ogicas
Sup ongase que vec es un vector l ogico. Es decir, sus entradas son
TRUE o FALSE.
Instrucci on Descripci on
all(vec) Produce TRUE si todas las
entradas de vec son TRUE.
En otro caso produce FALSE
any(vec) Produce TRUE si alguna de
las entradas de vec es TRUE.
En otro caso produce FALSE
Escribe tu propia versi on del Programa06 y gr abalo en tu carpeta
de trabajo.
Captulo 7
Estructuras de programaci on
en R
R permite crear estructuras repetitivas y la ejecuci on condicional
de sentencias a trav es de las instrucciones for, while, if-else, re-
peat y switch. Detalles del c odigo de programaci on relacionado
con estas instrucciones se muestran en el Programa07.
7.1 for
Permite crear una estructura repetitiva.
Instrucci on Descripci on
for(i in VectorValores)
{
sentencias
}
Para cada i en VectorValores,
se repiten las sentencias o in-
strucciones programadas den-
tro de las llaves. N otese que
las sentencias pueden depen-
der de i
28 Estructuras de programaci on en R
7.2 while
Permite crear una ejecuci on condicionada.
Instrucci on Descripci on
while(condici on)
{
sentencias
}
Se ejecutan la sentencias
mientras que la condici on se
cumpla
7.3 if-else
Permite crear una ejecuci on condicionada.
Instrucci on Descripci on
if(condici on)
{
sentencias1
}
else
{
sentencias2
}
Si se cumple la condici on en-
tonces se ejecutan las senten-
cias1. En caso contrario, se
ejecutan las sentencias2
7.4 repeat
Permite crear una estructura repetitiva.
7.5 switch 29
Instrucci on Descripci on
repeat
{
if(condici on)
{
sentencias
}
else
{
break
}
}
Repite las sentencias si se
cumple la condici on. En caso
contrario, naliza el proceso
de repetici on
7.5 switch
Permite crear una estructura condicionada.
Instrucci on Descripci on
switch(opci on,
Instrucci on 1
Instrucci on 2
Instrucci on 3
.
.
.
Instrucci on n
}
Si opci on es igual a 1 en-
tonces ejecuta Instrucci on 1.
Si opci on es igual a 2 en-
tonces ejecuta Instrucci on 2
. . .
Escribe tu propia versi on del Programa07 y gr abalo en tu carpeta
de trabajo.
30 Estructuras de programaci on en R
Captulo 8
Denir, evaluar y maximizar
funciones
Aqu se muestra como se puede denir, evaluar y maximizar una
funci on matem atica que realiza una tar ea especca. Se presen-
tan tres ejemplos desarrollados en el Programa08, Programa09 y
Programa10, respectivamente.
8.1 Ejemplo: Funci on de verosimilitud Bi-
nomial (N
0
, p)
Sup ongase que se tiene la siguiente funci on de p:
L(p; N
0
, x
0
) =
_
N
0
x
0
_
p
x
0
(1 p)
N
0
x
0
,
donde p [0, 1] y N
0
y x
0
son jos y conocidos. N otese que
se trata del modelo de probabilidad Binomial(N
0
, p); pero visto
como funci on del par ametro p. La frecuencia de exitos, x
0
, y el
n umero de experimentos, N
0
, ya fueron observados. Esta funci on
ser a llamada funci on de verosimilitud de p.
32 Denir, evaluar y maximizar funciones
1. Denir la funci on L(p; N
0
, x
0
) en el lenguaje R.
2. Evaluar la funci on L(p; N
0
, x
0
) en p = 0.5. De aqu en ade-
lante usar N
0
= 10 y x
0
= 5.
3. Encontrar el estimador de m axima verosimilitud (emv) de
p, p. Es decir, hallar el valor p que maximiza la funci on
L(p; N
0
, x
0
). N otese que encontrar el valor p que maximiza
la funci on L(p; N
0
, x
0
) es equivalente a encontar el valor p
que minimiza la funci on -log[L(p; N
0
, x
0
)] (logverosimili-
tud). Se recomienda usar la funci on nlm().
4. Denir la funci on de verosimilitud relativa de p,
R(p; N
0
, x
0
) =
L(p; N
0
, x
0
)
L( p; N
0
, x
0
)
,
donde p es el estimador de m axima verosimilitud de p. N otese
que R(p; N
0
, x
0
) no requiere el c alculo de
_
N
0
x
0
_
, el cual puede
causar problemas computacionales cuando N
0
es grande con
respecto a x
0
.
Nota: Muchas veces es computacionalmente conveniente
programar la verosimilitud relativa en t erminos de la logverosimil-
itud,
R(p; N
0
, x
0
) = exp
_
logL(p; N
0
, x
0
) logL( p; N
0
, x
0
)
_
.
5. Calcula los valores de p que cumplen que R(p; N
0
, x
0
) = c,
donde 0 c 1 es un valor jo y conocido. Se recomienda
programar una nueva funci on R(p; N
0
, x
0
)c y encontrar sus
raices empleando la funci on uniroot(). Usar c = 0.15.
Escribe tu propia versi on del Programa08 y gr abalo en tu carpeta
de trabajo.
8.2 Ejemplo: Funci on de verosimilitud Exponencial () 33
8.2 Ejemplo: Funci on de verosimilitud Ex-
ponencial ()
Sup ongase que se tiene la siguiente funci on de :
L(; x
1
, ..., x
n
) =
_
1

_
n
exp
_

_
n
i=1
x
i

_
,
donde > 0 y x
0
= (x
1
, ..., x
n
) es un vector de cantidades jas
y conocidas. N otese que se trata del producto de densidades ex-
ponenciales; pero visto como funci on del par ametro = E[X]. El
vector x
0
= (x
1
, ..., x
n
) ya fue observado. Esta funci on ser a llamada
funci on de verosimilitud de .
1. Denir la funci on L(; x
0
) en el lenguaje R.
2. Evaluar la funci on L(; x
0
) en = 10. De aqu en adelante
usar x
0
= (1.51, 9.31, 30.74, 7.48, 1.01).
3. Encontrar el estimador de m axima verosimilitud (emv) de
,

. Es decir, hallar el valor

que maximiza la funci on
L(; x
0
). N otese que encontrar el valor que maximiza la
funci on L(; x
0
) es equivalente a encontar el valor que
minimiza la funci on -log[L(; x
0
)]. Se recomienda usar la
funci on nlm().
4. Denir la funci on de verosimilitud relativa de ,
R(; x
0
) =
L(; x
0
)
L(

; x
0
)
,
donde

es el estimador de m axima verosimilitud de .
Nota: Se recomienda programar la verosimilitud relativa de
en t erminos de la logverosimilitud de como en el ejerci-
cio anterior.
34 Denir, evaluar y maximizar funciones
5. Calcula los valores de que cumplen que R(; x
0
) = c,
donde 0 c 1 es un valor jo y conocido. Se recomienda
programar una nueva funci on R(; x
0
) c y encontrar sus
raices empleando la funci on uniroot(). Usar c = 0.15.
Escribe tu propia versi on del Programa9 y gr abalo en tu carpeta
de trabajo.
8.3 Ejemplo: Funci on de verosimilitud Log-
normal (, )
Sup ongase que se tiene la siguiente funci on de (, ):
L(, ; x
0
) =
n
_
i=1
1

2x
i
exp
_

1
2
2
_
log(x
i
)
_
2
_
= C
_
1

_
n
exp

1
2
2
n

i=1
_
log(x
i
)
_
2

,
donde R, > 0 y C es una constante que no depende de los
par ametros y . N otese que se trata del producto de densidades
lognormales; pero visto como funci on de los par ametros y . El
vector x
0
= (x
1
, ..., x
n
) ya fue observado. Esta funci on ser a llamada
funci on de verosimilitud lognormal de y .
Nota: Por simplicidad, considera a la funci on de verosimilitud
lognormal de (, ) como:
L(, ; x
0
) =
_
1

_
n
exp

1
2
2
n

i=1
_
log(x
i
)
_
2

,
1. Denir la funci on -log
_
L(, ; x
0
)
_
en el lenguaje R.
2. Evaluar la funci on -log
_
L(, ; x
0
)
_
en (, ) = (1, 1). De
aqu en adelante usar x
0
= (0.83, 4.53, 2.84, 1.14, 1.53, 3.47,
9.74, 4.81, 11.07, 2.68).
8.3 Ejemplo: Funci on de verosimilitud Lognormal (, ) 35
3. Encontrar el estimador de m axima verosimilitud (emv) de
y , ( , ). Es decir, hallar los valores y que maximizan
la funci on L(, ; x
0
). N otese que encontrar los valores de
de y que maximizan la funci on L(, ; x
0
) es equivalente
a encontar los valores de y que minimizan la funci on
-log
_
L(, ; x
0
)
_
(logverosimilitud). Se recomienda usar la
funci on nlm().
Escribe tu propia versi on del Programa10 y gr abalo en tu carpeta
de trabajo.
36 Denir, evaluar y maximizar funciones
Captulo 9
Supercies, Contornos y
perles de funciones
Aqu se muestra como gracar supercies, contornos y perles de
funciones en R
2
. Se presenta un ejemplo para el caso Normal(, ).
V ease Programa11.
9.1 Ejemplo: Funci on de verosimilitud Nor-
mal (, )
Sup ongase que se tiene la siguiente funci on de y :
L(, ; x) =
n
_
i=1
1

2
exp
_

1
2
2
(x
i
)
2
_
,
donde R, > 0. N otese que se trata del producto de den-
sidades normales; pero visto como funci on de los par ametros y
. El vector x = (x
1
, ..., x
n
) ya fue observado. Esta funci on ser a
llamada funci on de verosimilitud normal de y .
1. Gracar la funci on de verosimilitud relativa de y . Es
38 Supercies, Contornos y perles de funciones
decir, la supercie de verosimilitud. El vector que contiene
la muestra observada se presenta en Programa11.
2. Gracar los contornos de la verosimilitud relativa de y .
3. Gracar la funci on de verosimilitud perl relativa de .
4. Gracar la funci on de verosimilitud perl relativa de .
Nota (Supercies): Para gracar una supercie se recomienda
denir la funci on de verosimilitud relativa de y de manera vec-
torial. Es decir, considerar a y como vectores de la misma di-
mensi on y en consecuencia la funci on de verosimilitud relativa de
y produce una matriz, donde la la i y columna j corresponde
a la relativa evaluada en [i] y [ j], respectivamente. Ejemplo:
Relativamusigma<-function(vmu,vsigma,datos)
{
n<-length(datos)
MV<-0
for(i in 1:n)
{
MV<-MV+(log(1/vsigma)-0.5*((datos[i]-vmu)2)/vsigma2)
}
y<-exp(MV-max(max(MV)))
y
}
Luego, instalar la librera lattice y usar la funci on de R llamada
wireframe.
Nota (Contornos): Para gracar contornos se recomienda usar
la funci on outer y contour.
Nota (Perles): Para el c alculo de las perles se considerar a
una expresi on simple de la funci on de verosimilitud de y
9.1 Ejemplo: Funci on de verosimilitud Normal (, ) 39
puesto que para el c omputo es adecuado:
L(, ; x) =
n
_
i=1
1

2
exp
_

1
2
2
(x
i
)
2
_
= C
_
1

_
n
exp

1
2
2
n

i=1
(x
i
)
2

,
Denici on: La perl de es la silueta que se observa cunado
la funci on z = L(, ; x) se proyecta sobre en el plano Z. La
denici on matem atica es:
L
P
(; x) = max
|
L (, ; x) ,
Los pasos para el c alculo computacional de la perl de ser an los
siguientes. Primero, se dene la menos logverosimilitud de y ;
pero considerando a jo.
MenosLogLsigmamujo<-function(vec,datos,vmu)
{
vsigma<-vec[1]
if(vsigma>0)
{
n<-length(datos)
S2<-sum((datos-vmu)2)
z<-n*log(1/vsigma)-(0.5*S2/vsigma2)
y<z
y
}
else
{
y<-10100
y
}
}
40 Supercies, Contornos y perles de funciones
Luego, se mediante la instrucci on for se minimiza la funci on
MenosLogLsigmamujo para cada valor jo de [i] y se guarda
en un vector el valor mnimo de la funci on; pero multiplicado por
menos uno. Es decir, el vector contiene el valor m as alto de la
logverosimilitud para cada valor jo [i]. Posteriormente, se cal-
cula la verosimilitud relativa perl de dividiendo el vector entre
su m aximo.
Para calcular la perl de se procede de forma an aloga.
Escribe tu propia versi on del Programa9 y gr abalo en tu car-
peta de trabajo.
9.2 Tarea Final
Sup ongase que se tiene la siguiente funci on de (, ):
L(, ; x
0
) =
n
_
i=1
1

2x
i
exp
_

1
2
2
_
log(x
i
)
_
2
_
= C
_
1

_
n
exp

1
2
2
n

i=1
_
log(x
i
)
_
2

,
donde R, > 0 y C es una constante que no depende de los
par ametros y . N otese que se trata del producto de densidades
lognormales; pero visto como funci on de los par ametros y . El
vector x
0
= (x
1
, ..., x
n
) ya fue observado. Esta funci on ser a llamada
funci on de verosimilitud lognormal de y .
Nota: Por simplicidad, considera a la funci on de verosimilitud
lognormal de (, ) como:
L(, ; x
0
) =
_
1

_
n
exp

1
2
2
n

i=1
_
log(x
i
)
_
2

,
1. Simula n = 30 observaciones de una variable aleatoria Log-
normal con par ametros = 1 y = 0.7.
9.2 Tarea Final 41
2. Calcula las estadsticas descriptivas.
3. Graca el histograma.
4. Calcula los estimadores de m axima verosimilitud de y .
5. Ajusta la densidad Lognormal al histograma (usa los valores
estimados para los parametros).
6. Gr aca de supercie de la verosimilitud relativa de y .
7. Gr aca los contornos de la verosimilitud relativa de y .
8. Graca la perl de .
9. Entrega un reporte (en un archivo PDF o Word) con
del c odigo y los resultados obtenidos al ejecutar dicho
c odigo. Adem as, al nal del archivo escribe un comen-
tario breve sobre el curso de R.
Nombre del archivo: TrabajoFinalCursoR Nombre Apellido
Page 1
############################################################
#Programa01 : Asignar valores a objetos y borrar objetos #
# en memoria #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 20/05/2010 #
############################################################
x<-1 #Asigna al objeto x el valor 1
X<-100 #Asigna al objeto X el valor 100
x #Muestra el contenido del objeto x
X #Muestra el contenido del objeto X
#R reconoce maysculas y minsculas
x<-2 #Asigna al objeto x el valor 2
X<-200 #Asigna al objeto X el valor 200
x #Muestra el contenido del objeto x
X #Muestra el contenido del objeto X
#Si objeto ya existe, su valor anterior es borrado despus
#de la asignacin
ls() #Lista los objetos en memoria
rm(x,X) #Borra los objetos x, X
ls()
x
X
#Se recomienda colocar al inicio de cada programa la
#siguiente instruccin:
rm(list=ls()) #Borra todos los objetos en memoria
#Tarea 1: Mostrar que la instruccin anterior
# borra todos los objetos en memoria
Page 1
############################################################
#Programa02 : Definicin de diferentes tipos de objetos #
# en R. Adems se muestran sus atributos #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 24/05/2010 #
############################################################
###############TIPOS DE OBJETOS EN R########################
x<-c(0,1,2.5,-100,9,20) #Vector numrico x
x #Contenido del vector x
y<-c("A","B","C","D") #Vector de caracteres y
y #Contenido del vector y
z<-c(T,T,F,F) #Vector lgico z
z #Contenido del vector z
x[4] #Cuarto elemento del vector x
Mx<-matrix(x,nrow=3,
ncol=2,
byrow=FALSE
) #Matriz de 3x2 por columna
Mx #Contenido de la matriz Mx
My<-matrix(y,nrow=2,
ncol=2,
byrow=F
) #Matriz de 2x2 por columna
My #Contenido de la matriz My
Mz<-matrix(z,nrow=2,
ncol=2,
byrow=T
) #Matriz de 2x2 por fila
Mz #Contenido de la matriz Mz
Mx[2,1] #Fila 2 y columna 1 de Mx
Mx[1,] #Fila 1 de Mx
Mx[,2] #Columna 2 de Mx
Mx[1:2,1] #Fila 1 y 2 de la columna 1 de Mx
Ma<-array(c(1,2,3,4,5,6,7,8,9,10,11,12),
dim=c(2,2,3)
) #Arreglo de dimensin 2x2x3
Ma[,,1] #Matriz 2x2 para la posicin 1
Ma[,,2] #Matriz 2x2 para la posicin 2
Ma[,,3] #Matriz 2x2 para la posicin 3
F<-factor(c("Hombre","Hombre","Mujer",
"Mujer","Hombre"),
) #Objeto tipo factor
summary(F) #Frecuencias de categoras
D<-data.frame(c(0,1),
c("Rojo","Amarillo"),
c(TRUE,FALSE)
Page 2
) #Objeto tipo data.frame
D #Muestra el contenido de D
names(D)<-c("X1",
"X2",
"X3") #Asigna nombres a las columnas de D
D #D tiene nombres en las columnas
L<-list(x,Mx,D) #Lista de tres diferentes objetos
L[[1]] #Muestra el objeto 1
L[[2]] #Muestra el objeto 2
L[[3]] #Muestra el objeto 3
DT<-data.frame(c(0.2875,0.3000,0.3195,0.3180,0.3415,
0.3725,0.5550,0.7825,0.7475,0.5520,
0.2860,0.2620,0.3270,0.3960,0.4060),
c(16.0484,17.1786,18.7016,23.4083,24.7016,
28.4417,30.2742,28.9677,27.9000,23.2016,
18.2000,13.0323,14.8710,15.0357,15.9032)
) #Objeto tipo data.frame
names(DT)<-c("NDVI",
"Temp"
) #Nombres a las columnas de DT
DT #Muestra el contenido de DT
tsData<-ts(DT,
frequency=12
) #Convierte DT a objeto ts
tsData #Muestra el objeto serie de tiempo
#################ATRIBUTOS DE OBJETOS EN R##################
mode(x) #x es numrico (x es un vector)
length(x) #x tiene 6 elementos
mode(Mx) #Mx es numrico (Mx es una matriz)
length(Mx) #Mx tiene 6 elementos
mode(Ma) #Ma es numrico (Ma es un arreglo)
length(Ma) #Ma tiene 12 elementos
mode(F) #F es numrico (F es un factor)
length(F) #F tiene 5 elementos
mode(D) #D es list (D es un data.frame)
length(D) #D tiene 3 elementos
Page 3
mode(L) #L es list (L es una lista)
length(L) #L tiene 3 elementos
#Tarea 2: Crea un vector de 12 elementos.
#Convirte el vector a una matriz de 3x4.
#Convierte el mismo vector a un arreglo de 3x2x2.
#Por ltimo, crea una lista con los objetos anteriores.
Page 1
############################################################
#Programa03 : Manejo de archivo de datos. Leer y guardar #
# datos en formato texto y Excel. #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 31/05/2010 #
############################################################
rm(list=ls(all=TRUE))
###############LEER ARCHIVO DE TEXTO########################
DatosPMA<-read.table("s26032PrecipMaxAnual.txt",
header=TRUE,
sep=""
) #Lee archivo de texto y lo almacena
#en el objeto DatosPMA (data.frame)
#La primera lnea contiene el
#nombre de las variables. Los datos
#son leidos considerando espacios en
#blanco como separacin entre ellos
DatosPMA #Primera columna el ao y segunda
#columana el nivel de precipitacin
#mximo
##################LEER ARCHIVO EXCEL (xls)########################
##################NO FUNCIONA EN VERSIONES ACTUALES DE R Porqu?
#install.packages("xlsReadWrite") #Instala la librera
#xlsReadWrite que permite
#leer archivos Excel
#library(xlsReadWrite) #Activar la librera
#NivelGlucosa<-read.xls("DatosGlucosa2007Nogales.xls",
sheet=1,
type="data.frame"
) #Lee la primera hoja del
#archivo Excel. La guarda
#como tipo data.frame
#NivelGlucosa #Primera columna Glucosa
#Segunda columna Edad
#Tercera columna el sexo
##################LEER ARCHIVO EXCEL (csv)########################
NivelGlucosa<-read.csv("DatosGlucosa2007Nogalescsv.csv",
sep = ";") #Lee archivo Excel (csv)
NivelGlucosa #Primera columna Glucosa
#Segunda columna Edad
#Tercera columna el sexo
###############GUARDAR ARCHIVO DE TEXTO#####################
write.table(DatosPMA,
file="PrecipMaxAnual.txt",
sep = " ",
Page 2
col.names = TRUE,
row.names = FALSE
) #Guarda la informacin
#contenida en el objeto
#DatosPMA en un archivo de
#texto PrecipMaxAnual.txt
#el cual es ubicado en el
#directorio de trabajo.
#Guadra el nombre de las
#variables (columnas). No
#guarda nombre de filas
##################GUARDAR ARCHIVO EXCEL########################
write.xls(DatosPMA,
file="PrecipMaxAnual.xls",
colNames = TRUE,
sheet = 1,
rowNames = FALSE
) #Guarda la informacin
#contenida en el objeto
#DatosPMA en la Hoja 1 de
#un archivo Excel llamado
#PrecipMaxAnual.xls (vase
#directorio de trabajo).
#Guadra el nombre de las
#variables (columnas). No
#guarda nombre de filas
#Tarea 3:
#(a) Crea una pequea base de datos (archivo Excel o texto) y
#lela usando alguna de las instrucciones anteriores. Luego,
#modifica parte de la informacin y garda la base de datos
#modificada como un archivo Excel.

#(b) Guarda el objeto DatosPMA como un archivo de objetos
#de R dndole el nombre PrecipMaxAnualObjR.Rdata. Para esta
#tarea usa la funcin save.
#Luego, borra todos los objetos en memoria y verifica que el
#objeto DatosPMA no se encuentra en memoria.
#Ahora, carga los datos del archivo PrecipMaxAnualObjR.Rdata
#en la memoria de R usando la funcin load.
#Luego, verifica que la informacin del objeto DatosPMA ya se
#encuentra cargada en memoria.
#Para ms informacin sobre las funciones load y save usa la
#ayuda de R: help("load") y help("save").
Page 1
############################################################
#Programa04 : Variables aleatorias: Densidad, #
# distribucin, cuantiles y simulacin. #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 01/06/2010 #
############################################################
rm(list=ls(all=TRUE))
################VARIABLES ALEATORIAS DISCRETAS##############
#################POISSON
vlambda<-30 #Valor esperado
fP<-dpois(25,lambda=vlambda) #Probabilidad
fP
FP<-ppois(25,lambda=vlambda) #Ditribucin
FP
QP<-qpois(0.95,lambda=vlambda) #Cuantil 0.95
QP
xP<-rpois(50,lambda=vlambda) #Muestra simulada (n=50)
xP
#################BINOMIAL
vN<-100 #Nmero de experimentos
vp<-0.3 #Probabilidad de xito
fB<-dbinom(25,size=vN,prob=vp) #Probabilidad
fB
FB<-pbinom(25,size=vN,prob=vp) #Ditribucin
FB
QB<-qbinom(0.95,size=vN,prob=vp) #Cuantil 0.95
QB
xB<-rbinom(50,size=vN,prob=vp) #Muestra simulada (n=50)
xB
#################BINOMIAL NEGATIVA
vr<-100 #xitos a conseguir
vp<-0.9 #Probabilidad de xito
fBN<-dnbinom(25,size=vr,prob=vp) #Probabilidad
fBN
FBN<-pnbinom(25,size=vr,prob=vp) #Ditribucin
FBN
QBN<-qnbinom(0.95,size=vr,prob=vp) #Cuantil 0.95
QBN
xBN<-rnbinom(50,size=vr,prob=vp) #Muestra simulada (n=50)
xBN
################VARIABLES ALEATORIAS CONTINUAS##############
#################UNIFORME
va<-0 #Valor mnimo
vb<-1 #Valor mximo
fU<-dunif(0.5,min=va,max=vb) #Densidad
fU
Page 2
FU<-punif(0.5,min=va,max=vb) #Ditribucin
FU
QU<-qunif(0.95,min=va,max=vb) #Cuantil 0.95
QU
xU<-runif(50,min=va,max=vb) #Muestra simulada (n=50)
xU
#################EXPONENCIAL
valpha<-10 #Parmetro escala=E[X]
fE<-dexp(10,rate=1/valpha) #Densidad
fE
FE<-pexp(10,rate=1/valpha) #Ditribucin
FE
QE<-qexp(0.95,rate=1/valpha) #Cuantil 0.95
QE
xE<-rexp(50,rate=1/valpha) #Muestra simulada (n=50)
xE
#################NORMAL
vmu<-0 #Parmetro localizacin
vsigma<-1 #Parmetro escala
fN<-dnorm(0,mean=vmu,sd=vsigma) #Densidad
fN
FN<-pnorm(0,mean=vmu,sd=vsigma) #Ditribucin
FN
QN<-qnorm(0.95,mean=vmu,sd=vsigma) #Cuantil 0.95
QN
xN<-rnorm(50,mean=vmu,sd=vsigma) #Muestra simulada (n=50)
xN
#Tarea 4: Simula n=100 observaciones de una variable aleatoria:
#(a) Hipergeomtrica
#(b) Gamma
#(c) Gumbel
#Nota: Para el caso (c) primero debes activar la librera evd.
Page 1
############################################################
#Programa05 : Anlisis exploratorio de datos. #
# Estadsticas y grficas descriptivas #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 06/06/2010 #
############################################################
rm(list=ls(all=TRUE))
#################ESTADSTICAS DESCRIPTIVAS##################
DatosPMA<-read.table("s26032PrecipMaxAnual.txt",
header=TRUE,
sep=""
)
y<-DatosPMA[,2] #El objeto y contiene los datos de
#precipitacin mxima anual
numdedatos<-length(y) #Nmero de datos (tamao de muestra)
numdedatos
minimoy<-min(y) #Mnimo valor de y
minimoy
maximoy<-max(y) #Mximo valor de y
maximoy
mediay<-mean(y) #Promedio
mediay
medianay<-median(y) #Mediana muestral
medianay
varianzay<-var(y) #Varianza muestral (usa n-1)
varianzay
desviaciony<-sd(y) #Desviacin estndar (usa n-1)
desviaciony
EstOrdeni<-sort(y)[30] #Estadstica de orden i=30
EstOrdeni
Rangoy<-maximoy-minimoy #Rango muestral
Rangoy
###################GRFICAS DESCRIPTIVAS####################
library(xlsReadWrite)
#######HISTOGRAMA (NIVEL GLUCOSA MUJERES ENTRE 15 Y 70 AOS)
NivelGlucosa<-read.xls("DatosGlucosa2007Nogales.xls",
sheet=1,
type="data.frame"
) #Lee los datos
NivelGlucosa #Datos de niveles de glucosa,
#edad y sexo
NGMujeres<-subset(NivelGlucosa,
Edad>15 & Edad<70 & Sexo=="FEMENINO",
select=c(mg.dL)
) #Datos de niveles de glucosa
#de mujeres entre 15 y 70 aos
x<-NGMujeres[,1] #Vector numrico x con los
#datos de glucosa de mujeres
#entre 15 y 70 aos
###GRFICA 1: SIN CONTROL DE ESPACIAMIENTO EN LOS EJES
Page 2
hist(x, #Vector de datos
nclass=40, #Nmero de casillas
freq=TRUE, #Y=Frecuencia Absoluta
main=paste("Histograma"), #Titulo
xlab="Nivel Glucosa", #Etiqueta eje X
ylab="Frecuencia Observada", #Etiqueta eje Y
cex.main=2, #Tamao de letra: Ttulo
cex.lab=1.5, #Tamao: Etiquetas de ejes
cex.axis=1.2, #Tamao: Marcas de ejes
xlim=c(0,500), #Lmites eje X
ylim=c(0,500), #Lmites eje Y
)
###GRFICA 2: CONTROL DEL ESPACIAMIENTO EN LOS EJES
hist(x,
nclass=40,
freq=TRUE,
main=paste("Histograma"),
xlab="Nivel Glucosa",
ylab="Frecuencia Observada",
cex.main=2,
cex.lab=1.5,
xlim=c(0,500),
ylim=c(0,500),
axes=F
)
axis(1, #Eje X
at=seq(0,500, by=50), #Espaciamiento
labels=seq(0,500, by=50), #Marcas
cex.axis=1.2 #Tamao de las marcas
)
axis(2, #Eje Y
cex.axis=1.2 #Tamao de las marcas
)
###GRFICA 3: AJUSTANDO UNA DENSIDAD NORMAL AL HISTOGRAMA
hist(x,
nclass=40,
freq=FALSE, #Y=Frecuencia Relativa
main=paste("Histograma"),
xlab="Nivel Glucosa",
ylab="Frecuencia Observada",
cex.main=2,
cex.lab=1.5,
cex.axis=1.2,
xlim=c(0,500),
ylim=c(0,0.03)
)
curve(dnorm(x,mean=111,sd=55), #Curva Normal
col=2, #Color de la curva
lty=2, #Tipo de lnea
lwd=2, #Grueso de lnea
add=TRUE #Aade la curva
)
########################GRFICA DE BARRAS
Page 3
DatosDefectos<-read.xls("DatosDefectosSoftware.xls",
sheet=1,
type="data.frame"
) #Lee los datos
DatosDefectos
datos<-as.matrix(DatosDefectos) #Convierte los datos a
#una matriz
datos
barplot(datos, #Datos
xlab="Actividad", #Etiqueta eje X
ylab="Defectos", #Etiqueta eje Y
cex.lab=1.5, #Tamao: Etiquetas de ejes
cex.names=1, #Tamao: Marcas del eje X
cex.axis=1.2, #Tamao: Marcas de eje Y
beside=TRUE, #Barras yuxtapuestas
col=c("lightblue","mistyrose","lightcyan"), #Colores
legend=rownames(datos), #Legenda: Nombre de filas
ylim=c(0,50) #Lmites eje Y
)
########################GRFICA DE X versus Y
DatosPMA<-read.table("s26032PrecipMaxAnual.txt",
header=TRUE,
sep=""
) #Leer datos
DatosPMA

Tiempo<-DatosPMA[,1] #Variable para el eje X
PMaxAH<-DatosPMA[,2] #Variable para el eje Y
vxmin<-min(Tiempo) #Valor mnimo para eje X
vxmax<-max(Tiempo) #Valor mximo para eje X
vymin<-min(PMaxAH) #Valor mnimo para eje Y
vymax<-max(PMaxAH) #Valor mximo para eje Y
plot(Tiempo,PMaxAH, #Vectores X y Y
type="b", #Tipo: puntos y lineas
pch=19, #Tipo de smbolo
col="blue", #Color de lneas y puntos
xlab="Aos",
ylab="Precip. mxima (mm)",
cex.lab=1.5,
cex.axis=1.2,
ylim=c(vymin,vymax),
xlim=c(vxmin,vxmax)
)
legend("topleft", #Ubicacin:Derecha-Arriba
c("s26032"), #Legenda
pch=19, #Smbolo
col=c("blue"), #Color
box.lty=0 #No aparece caja de leyenda
)
title("Precipitacin mxima anual",
cex.main=1.8, #Tamao de letra
font.main=1, #Tipo de letra
col.main= "black" #Color de letra
)
Page 4
#Tarea 5: (a) Realiza un histograma del nivel de glucosa
#de hombres entre 15 y 70 aos.
#(b) Grafica el peso versus la altura de mujeres de
#Sonora dados en el archivo PesoAlturaMujeresSonora.xls.
#(c) Simula 50 observaciones de una variable aleatoria normal
#con media mu=20 y varianza=2. Luego, realiza un histograma con
#los datos simulados y ajsta una densidad normal con media 20 y
#varianza 2.
Page 1
############################################################
#Programa06 : Operaciones bsicas con vectores y matrices#
# Tambin operaciones lgicas. #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 09/06/2010 #
############################################################
rm(list=ls(all=TRUE))
############################VECTORES########################
##########REPETIR UN VECTOR
vec1<-c(1,2,3,4,5)
vec2<-c(1,-2,3,-4,5)
rep(vec1,times=4)
rep(vec2,times=5)
rep(0,times=10)
##########GENERAR UNA SECUENCIA
seq(from=0,to=1,by=0.01)
##########UNIR VECTORES
cbind(vec1,vec1) #Por columnas
rbind(vec1,vec1) #Por filas
##########SUMA ACUMULADO DE LOS ELEMENTOS DE UN VECTOR
vec1
cumsum(vec1)
##########IGUAL: PRODUCE VERDAD O FALSO
vec1==vec2
##########DIFERENTE: PRODUCE VERDAD O FALSO
vec1!=vec2
############################MATRICES########################
X<-matrix(c(1,2,3,4),ncol=2)
Y<-matrix(c(5,6,7,8,9,10),ncol=3)
Z<-matrix(c(10,20,30,40),ncol=2)
X
Y
Z
##########SUMA
X+Z
X+5
##########RESTA
X-Z
X-5
##########PRODUCTO
X%*%Y
X*Z
X*3
##########POTENCIA
Page 2
Z^X
Y^2
##########COCIENTE
Z/X
Y/2
##########TRANSPUESTA
t(Y)
##########INVERSA
solve(X)
X%*%solve(X)
##########DETERMINANTE
det(X)
##########MATRIZ DIAGONAL (IDENTIDAD)
diag(4)
##########MATRIZ DE CEROS
nfilas<-3
mcolumnas<-4
vec<-rep(0,times=nfilas*mcolumnas)
matrix(vec,ncol=mcolumnas)
############################LGICAS########################
x<-c(-1,0,1)
y<-c(-2,0,2)
x>0 #Vector lgico
##########VERDAD: SI TODOS SON VERDAD
all(x>0)
##########VERDAD: SI ALGUNO ES VERDAD
any(x>0)
#Tarea 6: (a) Investiga el funcionamiento de: cumprod(),
#cummax() y cummin().
#(b) Crea una matriz identidad 10x10 y agrgale una primera
#columna con el valor 1. Usa funciones mostradas en esta
#prctica.
Page 1
############################################################
#Programa07 : Estructuras de programacin en R: for, #
# while, if-else, repeat, whicth #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 12/06/2010 #
############################################################
rm(list=ls(all=TRUE))
##############################FOR###########################
######EVALUAR UNA EXPRESIN E IMPRIMIRLA EN PANTALLA
for (i in 1:10)
{
print(choose(10,i))
}
######EVALUAR UNA EXPRESIN, GUARDAR EL RESULTADO Y GRAFICAR
p<-seq(from=0,to=1,by=0.001) #Secuencia de valores (rejilla)
n<-length(p) #Nmero de elementos de p
Lp<-c() #Se crea un vector sin elementos
for(i in 1:n) #i toma valores 1,2,3,...,n
{
Lp[i]<-p[i]^5*(1-p[i])^5 #Evalua la expresin para cada i
}
Rp<-Lp/max(Lp) #Estandariza Lp, 0<=Rp<=1
plot(p,Rp,type="l") #Grafica cada punto (p[i],Rp[i])
#y los une con una lnea
##############################WHILE#########################
######IMPRIME EN PANTALLA LOS NMEROS NATURALES MENORES QUE 5
z<-1 #z toma el valor inicial 1
while(z<5) #Mientras z<5, el valor de z
{ #se imprime en pantalla
print(z)
z<-z+1
}
######CALCULAR LOS VALORES DE p TAL QUE fx==c (APROXIMACIN)
c<-0.15
######CASO 1: VALOR INFERIOR
k<-1 #k toma el valor inicial 1
while(Rp[k]<c ) #Mientras Rp[k]<c, el valor de k
{ #se incrementa. En caso contrario,
#finaliza el ciclo
k<-k+1
}
LimiteInferior<-p[k-1] #Valor de p buscado
LimiteInferior
Page 2
######CASO 2: VALOR SUPERIOR
k<-n #k toma el valor inicial n
while(Rp[k]<c) #Mientras Rp[k]<c, el valor de k
{ #decrece. En caso contrario,
#finaliza el ciclo
k<-k-1
}
LimiteSuperior<-p[k+1] #Valor de p buscado
LimiteSuperior
######GRAFICAR LOS LIMITES E INCLUYE SU VALOR
plot(p,Rp,type="l") #Grfica de Rp
segments( #Une dos puntos con una lnea
LimiteInferior,0, #Primer punto
LimiteInferior,c, #Segundo punto
lty=1, #Tipo de lnea
lwd=1, #Grosor de lnea
col="blue" #Color de la lnea
)
text( #Insertar texto
0.25,0.075, #Ubicacin: Coordenadas X y Y
labels=LimiteInferior, #Texto: Valor lmite inferior
cex=1.2 #Tamao texto
)
segments(LimiteSuperior,0,
LimiteSuperior,c,
lty=2,
lwd=2,
col="green"
)
text(0.75,0.075,labels=LimiteSuperior,cex=1.2)
############################IF-ELSE#########################
######GUARDAR PARES E IMPARES DEL 1 AL M=10
M<-10 #Se inicializa M
pares<-c() #Se crea un vector sin elementos
impares<-c() #Vector sin elementos (vacio)
for(i in 1:M) #i toma valores 1,2,...,M
{
if(i%%2==0) #Si al dividir i entre 2 sale 0
{
pares<-c(pares,i) #Se concatenan los nmeros pares
}
else #En caso contrario
{
impares<-c(impares,i) #Concatenar los nmeros impares
}
}
pares
impares
Page 3
############################REPEAT#########################
######IMPRIME EN PANTALLA LOS NMEROS NATURALES MENORES QUE 5
######NOTA QUE PRODUCE EL MISMO RESULTADO QUE WHILE
i<-1 #i toma el valor inicial 1
repeat #Inicia ciclo de repeticin
{
if(i<5) #Si i<5 entonces se imprime i. Adems
{ #se incrementa i en una unidad
print(i)
i<-i+1
}
else #En caso contrario, se rompe el ciclo
{ #de repeticin
break
}
}
################################SWITCH###########################
######CALCULAR LA MEDIA, MEDIANA Y VARIANZA SEGN LA SELECCIN
datos<-rnorm(100,0,1) #muestra normal simulada de tamao 100
######CASO 1: SE CALCULA LA MEDIA
opcion<-1
switch(opcion,
media=mean(datos),
mediana=median(datos),
varianza=var(datos)
)
mean(datos)
######CASO 2: SE CALCULA LA MEDIANA
opcion<-2
switch(opcion,
media=mean(datos),
mediana=median(datos),
varianza=var(datos)
)
median(datos)
######CASO 3: SE CALCULA LA VARIANZA
opcion<-3
switch(opcion,
media=mean(datos),
mediana=median(datos),
varianza=var(datos)
)
var(datos)
Page 4
#Tarea 7:
#(a)Piensa en aplicaciones simples de cada una de las
#estructuras de programacin mostradas aqu. Intenta
#programarlas.
#(b)Usa la funcin menu() para construir una barra de
#opciones. La primera opcin proporciona un histograma.
#La segunda opcin produce una grfica de X versus Y.
#Usa los datos de Programa05.
op<-menu(c("Histograma","Grfica X versus Y"),
graphics = TRUE,
title = "Barra de opciones")
library(xlsReadWrite)
switch(op,
{
#######################HISTOGRAMA
NivelGlucosa<-read.xls("DatosGlucosa2007Nogales.xls",
sheet=1,
type="data.frame"
) #Lee los datos
#edad y sexo
NGMujeres<-subset(NivelGlucosa,
Edad>15 & Edad<70 & Sexo=="FEMENINO",
select=c(mg.dL)
) #Datos de niveles de glucosa
#de mujeres entre 15 y 70 aos
x<-NGMujeres[,1] #Vector numrico x con los
#datos de glucosa de mujeres
#entre 15 y 70 aos
Histrograma=hist(x, #Vector de datos
nclass=40, #Nmero de casillas
freq=TRUE, #Y=Frecuencia Absoluta
main=paste("Histograma"), #Titulo
xlab="Nivel Glucosa", #Etiqueta eje X
ylab="Frecuencia Observada", #Etiqueta eje Y
cex.main=2, #Tamao de letra: Ttulo
cex.lab=1.5, #Tamao: Etiquetas de ejes
cex.axis=1.2, #Tamao: Marcas de ejes
xlim=c(0,500), #Lmites eje X
ylim=c(0,500) #Lmites eje Y
)
},
{
########################GRFICA DE X versus Y
DatosPMA<-read.table("s26032PrecipMaxAnual.txt",
header=TRUE,
sep=""
) #Leer datos

Tiempo<-DatosPMA[,1] #Variable para el eje X
PMaxAH<-DatosPMA[,2] #Variable para el eje Y
vxmin<-min(Tiempo) #Valor mnimo para eje X
Page 5
vxmax<-max(Tiempo) #Valor mximo para eje X
vymin<-min(PMaxAH) #Valor mnimo para eje Y
vymax<-max(PMaxAH) #Valor mximo para eje Y
plot(Tiempo,PMaxAH, #Vectores X y Y
type="b", #Tipo: puntos y lineas
pch=19, #Tipo de smbolo
col="blue", #Color de lneas y puntos
xlab="Aos",
ylab="Precip. mxima (mm)",
cex.lab=1.5,
cex.axis=1.2,
ylim=c(vymin,vymax),
xlim=c(vxmin,vxmax)
)
legend("topleft", #Ubicacin:Derecha-Arriba
c("s26032"), #Legenda
pch=19, #Smbolo
col=c("blue"), #Color
box.lty=0 #No aparece caja de leyenda
)
title("Precipitacin mxima anual",
cex.main=1.8, #Tamao de letra
font.main=1, #Tipo de letra
col.main= "black" #Color de letra
)
}
)
Page 1
############################################################
#Programa08 : Se define, evalua y maximiza la funcin de #
# verosimilitud Binomial (N0,p). #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 20/06/2010 #
############################################################
rm(list=ls(all=TRUE))
##################VALORES FIJOS DE N0 Y x0##################
vN0<-10 #Valor de N0
vx0<-5 #Valor de x0
##############FUNCIN DE VEROSIMILITUD DE p#################
Lp<-function(vec,N0,x0)
{
p<-vec[1] #p es el primer y nico elemento de vec
y<-choose(N0,x0)*(p^x0)*(1-p)^(N0-x0)
y
}
Lp(0.5,vN0,vx0) #Valor de Lp para p=0.5, N0=10 y x0=5
##############GRFICA DE LA FUNCIN Lp
vp<-seq(0.1,0.9,0.01) #Valores de p
vLp<-c() #Vector vaco
for(i in 1:length(vp))
{
vLp[i]<-Lp(vp[i],vN0,vx0) #Almacena valores de Lp
}
plot(vp,vLp,type="l") #Grfica de Lp
#########FUNCIN MENOS LOG VEROSIMILITUD DE p###############
MenosLogLp<-function(vec,N0,x0)
{
p<-vec[1]
z<-x0*log(p)+(N0-x0)*log(1-p)
y<--z
y
}
MenosLogLp(0.5,vN0,vx0) #Valor de MenosLogLp para
#p=0.5, N0=10 y x0=5
##MINIMIZACIN DE LA FUNCIN MENOS LOG VEROSIMILITUD DE p###
vp0<-0.4 #Valor inicial de p para la
#optimizacin (minimizacin)
nlm(MenosLogLp,vp0,vN0,vx0) #nlm minimiza la funcin
#MenosLogLp. Aparece un mensaje
#de alerta puesto que el mtodo
#de minimizacin (tipo Newton)
#evalua valores de p fuera de
#su dominio
#Nota: A continuacin se programa nuevamente la fucin
#MenosLogLp; pero considerando que 0<p<1 para evitar
#problemas numricos del mtodo de minimizacin.
Page 2
MenosLogLp<-function(vec,N0,x0)
{
p<-vec[1]
if(p>0 & p<1)
{
z<-x0*log(p)+(N0-x0)*log(1-p)
y<--z
y
}
else
{
y<-10^100
y
}
}
MenosLogLp(0.5,vN0,vx0) #Valor de MenosLogLp para
#p=0.5, N0=10 y x0=5
MenosLogLp(2,vN0,vx0) #Valor de MenosLogLp para
#p=2, N0=10 y x0=5
nlm(MenosLogLp,vp0,vN0,vx0) #nlm minimiza la funcin
#MenosLogLp. Ntese que ya no
#se muestra en consola ningn
#mensaje de alerta
ValoresOpt<-nlm(MenosLogLp,vp0,vN0,vx0) #Se alamcenan los
#resultados de la
#minimizacin

ValoresOpt #Se muestran los resultados
#de la minimizacin
MinimoMenosLogLp<-ValoresOpt$minimum #Mnimo de MenosLogLp
emvp<-ValoresOpt$estimate #Valor de p donde la
#funcin MenosLogLp
#alcanza el mnimo
VConvergencia<-ValoresOpt$code #Cdigo de convergencia
#del mtodo. El valor 1
#indica convergencia
MinimoMenosLogLp #Mnimo de la funcin
emvp #Valor donde se alcanza el mnimo
VConvergencia #Cdigo de convergencia
########NOTA: MINIMIZACIN USANDO LA FUNCIN optimize #######
optimize(MenosLogLp,
interval=c(0.25,0.75),
N0=vN0,
x0=vx0,
maximum=FALSE
)
##############GRFICA DE LA FUNCIN MenosLogLp##############
vp<-seq(from=0.1,to=0.9,by=0.01)
Page 3
vMenosLogLp<-c()
for(i in 1:length(vp))
{
vMenosLogLp[i]<-MenosLogLp(vp[i],vN0,vx0)
}
plot(vp,vMenosLogLp,type="l")
#########FUNCIN DE VEROSIMILITUD RELATIVA DE p#############
Relativap<-function(p,N0,x0,vemvp)
{
y<-exp(-MenosLogLp(p,N0,x0)+MenosLogLp(vemvp,N0,x0))
y
}
Relativap(0.5,vN0,vx0,emvp) #Valor de Relativap para
#p=0.5, N0=10 y x0=5. El emv
#de p es emvp.
##############GRFICA DE LA FUNCIN RELATIVA DE p###########
vp<-seq(from=0.1,to=0.9,by=0.01)
vRelativap<-c()
for(i in 1:length(vp))
{
vRelativap[i]<-Relativap(vp[i],vN0,vx0,emvp)
}
plot(vp,vRelativap,type="l")
######CALCULAR LOS VALORES DE p TAL QUE Relativap==c########
#########FUNCIN OBJETIVO#############
fObjetivo<-function(p,N0,x0,vemvp,c)
{
y<-Relativap(p,N0,x0,vemvp)-c
y
}
vc<-0.15
Raiz1<-uniroot(fObjetivo,
c(min(vp),emvp),
N0=vN0,
x0=vx0,
vemvp=emvp,
c=vc)
LimiteInferior<-Raiz1$root
LimiteInferior
Raiz2<-uniroot(fObjetivo,
c(emvp,max(vp)),
N0=vN0,
x0=vx0,
vemvp=emvp,
c=vc)
LimiteSuperior<-Raiz2$root
LimiteSuperior
##############GRFICA DE LA FUNCIN RELATIVA DE p###########
plot(vp,vRelativap,
Page 4
type="l",
main="Titulo",
xlab="p",
ylab="Verosimilitud Relativa",
cex.main=1.5,
cex.axis=1.5,
cex.lab=1.5,
ylim=c(0,1),
xlim=c(min(vp),max(vp))
)
segments( #Une dos puntos con una lnea
LimiteInferior,0, #Primer punto
LimiteInferior,vc, #Segundo punto
lty=1, #Tipo de lnea
lwd=1, #Grosor de lnea
col="red" #Color de la lnea
)
text( #Insertar texto
x=LimiteInferior, #Ubicacin: Coordenadas X
y=0 , #Ubicacin: Coordenadas Y
labels=round(LimiteInferior,3), #Redondeado a 3 decimales
cex=1.2 #Tamao texto
)
segments(LimiteSuperior,0,
LimiteSuperior,vc,
lty=1,
lwd=1,
col="red"
)
text(x=LimiteSuperior,
y=0,
labels=round(LimiteSuperior,3),
cex=1.2
)
#Tarea 8:
#(a) Simula una observacin x0 de una variable aleatoria
#Binomial (N0,p0), donde N0=50 y p0=0.7. El emv de p Se
#encuentra cerca de p0? El intervalo que calculate,
#[LimiteInferior,LimiteSuperior], cubre al valor verdadero
#de p (p0=0.7)?.
#(b) Repite el proceso anterior M=10000 veces y calcula
#la frecuencia con la que el intervalo cubre el verdadero
#valor de p. Usa p= 0.4, 0.5 y 0.6.
Page 1
############################################################
#Programa09 : Se define, evalua y maximiza la funcin de #
# verosimilitud Exponencial con lambda=E[X]. #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 20/06/2010 #
############################################################
rm(list=ls(all=TRUE))
#######################VALOR FIJO DE x0#####################
vx0<-c(1.51,9.31,30.74,7.48,1.01) #Valor de x0
#############FUNCIN DE VEROSIMILITUD DE lambda#############
Llambda<-function(vec,x0)
{
vlambda<-vec[1] #Primer y nico elemento de vec
n<-length(x0) #Tamao de muestra
s<-sum(x0) #Suma de los datos
y<-(1/vlambda)^n*exp(-s/vlambda)
y
}
Llambda(10,vx0) #Valor de Llambda para lambda=0.5 y
#x0=(1.51,9.31,30.74,7.48,1.01)
################GRFICA DE LA FUNCIN Llambda###############
vlambda<-seq(1,50,0.1)
vLlambda<-c()
for(i in 1:length(vlambda))
{
vLlambda[i]<-Llambda(vlambda[i],vx0)
}
plot(vlambda,vLlambda,type="l")
#########FUNCIN MENOS LOG VEROSIMILITUD DE ###############
MenosLogLlambda<-function(vec,x0)
{
vlambda<-vec[1]
n<-length(x0)
s<-sum(x0)
z<-n*log(1/vlambda)-(s/vlambda)
y<--z
y
}
MenosLogLlambda(10,vx0) #Valor de MenosLogLlambda
#para lambda=10 y x0=vx0
###MINIMIZACIN DE LA MENOS LOG VEROSIMILITUD DE lambda###
vlambda0<-15 #Valor inicial de lambda
#para la minimizacin
VOpt<-nlm(MenosLogLlambda,vlambda0,vx0) #Se alamcenan los
#resultados de la
#minimizacin

Page 2
VOpt #Se muestran los resultados
#de la minimizacin
MinMenosLogLlambda<-VOpt$minimum #Mnimo de MenosLogLlambda
emvlambda<-VOpt$estimate #Valor de lambda donde la
#funcin MenosLogLlambda
#alcanza el mnimo
VConvergencia<-VOpt$code #Cdigo de convergencia
#del mtodo. El valor 1
#indica convergencia
MinMenosLogLlambda #Mnimo de la funcin
emvlambda #Valor donde alcanza el mnimo
VConvergencia #Cdigo de convergencia
########NOTA: MINIMIZACIN USANDO LA FUNCIN optimize #######
optimize(MenosLogLlambda,
interval=c(0.01,30),
x0=vx0,
maximum=FALSE
)
############GRFICA DE LA FUNCIN MenosLogLlambda###########
vlambda<-seq(from=1,to=50,by=0.1)
vMenosLogLlambda<-c()
for(i in 1:length(vlambda))
{
vMenosLogLlambda[i]<-MenosLogLlambda(vlambda[i],vx0)
}
plot(vlambda,vMenosLogLlambda,type="l")
#######FUNCIN DE VEROSIMILITUD RELATIVA DE lambda##########
Relativalambda<-function(z,x0,vemvlambda)
{
y<-exp(-MenosLogLlambda(z,x0)+MenosLogLlambda(vemvlambda,x0))
y
}
Relativalambda(10,vx0,emvlambda)
#############GRFICA DE LA FUNCIN RELATIVA DE lambda#######
vlambda<-seq(from=1,to=50,by=0.1)
vRelativalambda<-c()
for(i in 1:length(vlambda))
{
vRelativalambda[i]<-Relativalambda(vlambda[i],vx0,emvlambda)
}
plot(vlambda,vRelativalambda,type="l")
###CALCULAR LOS VALORES DE lambda TAL QUE Relativalambda==c##
#########FUNCIN OBJETIVO#############
fObjetivo<-function(w,x0,vemvlambda,c)
Page 3
{
y<-Relativalambda(w,x0,vemvlambda)-c
y
}
vc<-0.15
Raiz1<-uniroot(fObjetivo,
c(min(vlambda),emvlambda),
x0=vx0,
vemvlambda=emvlambda,
c=vc)
LimiteInferior<-Raiz1$root
LimiteInferior
Raiz2<-uniroot(fObjetivo,
c(emvlambda,max(vlambda)),
x0=vx0,
vemvlambda=emvlambda,
c=vc)
LimiteSuperior<-Raiz2$root
LimiteSuperior
############GRFICA DE LA FUNCIN RELATIVA DE lambda########
plot(vlambda,vRelativalambda,
type="l",
main="Titulo",
xlab=expression(paste(lambda)), #Inserta smbolo lambda
ylab="Verosimilitud Relativa",
cex.main=1.5,
cex.axis=1.5,
cex.lab=1.5,
ylim=c(0,1),
xlim=c(min(vlambda),max(vlambda))
)
segments( #Une dos puntos con una lnea
LimiteInferior,0, #Primer punto
LimiteInferior,vc, #Segundo punto
lty=1, #Tipo de lnea
lwd=1, #Grosor de lnea
col="red" #Color de la lnea
)
text( #Insertar texto
x=LimiteInferior, #Ubicacin: Coordenadas X
y=0 , #Ubicacin: Coordenadas Y
labels=round(LimiteInferior,3), #Redondeado a 3 decimales
cex=1.2 #Tamao texto
)
segments(LimiteSuperior,0,
LimiteSuperior,vc,
lty=1,
lwd=1,
col="red"
)
text(x=LimiteSuperior,
y=0,
labels=round(LimiteSuperior,3),
cex=1.2
)
Page 4
#Tarea 9:
#(a) Simula n=30 observaciones de una variable aleatoria
#exponencial de parmetro lamnda0=E[X]=5. El emv de lambda Se
#encuentra cerca de lamnda0?. El intervalo que calculate,
#[LimiteInferior,LimiteSuperior], cubre al valor verdadero
#de lambda (lambda0=5)?. Repite el proceso varias veces.
#(b) Repite el proceso anterior M=10000 veces y calcula
#la frecuencia con la que el intervalo cubre el verdadero
#valor de lambda. Usa lambda0= 10, 20 y 50.

Page 1
############################################################
#Programa10 : Se define, evalua y maximiza la funcin de #
# verosimilitud lognormal de mu y sigma #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 23/06/2010 #
############################################################
rm(list=ls(all=TRUE))
#######################VALOR FIJO DE x0#####################
vx0<-c(0.83,4.53,2.84,1.14,1.53,3.47,9.74,4.81,11.07,2.68)
#############FUNCIN DE VEROSIMILITUD DE (mu,sigma)#########
MenosLogLmusigma<-function(vec,x0)
{
vmu<-vec[1] #Primer elemento de vec
vsigma<-vec[2] #Segundo elemento de vec
n<-length(x0) #Tamao de muestra
S2<-sum((log(x0)-vmu)^2)
z<-n*log(1/vsigma)-(0.5*S2/vsigma^2)
y<--z
y
}
MenosLogLmusigma(c(1,1),vx0) #Valor de MenosLogLmusigma para
#mu=1, sigma=1 y x0=vx0
#########MINIMIZACIN DE LA FUNCIN MenosLogLmusigma########
vec0<-c(1,1) #Valor inicial de mu y sigma
#para la minimizacin
VOpt<-nlm(MenosLogLmusigma,vec0,vx0) #Se alamcenan los
#resultados de la
#minimizacin

VOpt #Se muestran los resultados
#de la minimizacin
MaxLmusigma<-VOpt$minimum #Mnimo de MenosLogLmusigma
emvmusigma<-VOpt$estimate #Valor de (mu,sigma) donde la
#funcin MenosLogLmusigma
#alcanza el mnimo
VConvergencia<-VOpt$code #Cdigo de convergencia
#del mtodo. El valor 1
#indica convergencia
MaxLmusigma
emvmusigma
VConvergencia
#######NOTA: MINIMIZACIN USANDO LA FUNCIN optim #######
optim(vec0,
MenosLogLmusigma,
method="Nelder-Mead",
control=list(maxit=20000),
Page 2
x0=vx0)
#Tarea 10:
#(a) Simula n=30 observaciones de una variable aleatoria
#lognormal de parmetros (mu0=0,sigma0=1). El emv de (mu,sigma)
#Se encuentra cerca de (mu0,sigma0)?
#(b) Simula n=30 observaciones de una variable aleatoria
#Gamma con parmetro alpha0 y beta0 (seleccionalos). Luego,
#define la funcin de verosimilitud Gamma (alpha,beta) y
#encuentra los emv de alpha y beta bajo los datos simulados.
Page 1
############################################################
#Programa11 : Superficies, contornos y perfiles de #
# funciones en R^2:Verosimilitud Normal #
#Elaborado por: Jos A. Montoya (montoya@mat.uson.mx) #
# 30/06/2010 #
############################################################
rm(list=ls(all=TRUE))
#######################DATOS SIMULADOS######################
vmu0<-100
sigma0<-4
n0<-20
#vdatos<-rnorm(n0,mean=vmu0,sd=sigma0)
vdatos<-c(102.05,99.38,96.47,99.71,94.11,
99.94,94.27,102.37,99.16,100.93,
103.27,109.67,96.97,101.89,101.72,
102.02,98.75,98.36,101.03,98.21
)
####FUNCIN DE VEROSIMILITUD RELATIVA (PARA SUPERFICIE)#####
Relativamusigma<-function(vmu,vsigma,datos)
{
n<-length(datos)
MV<-0
for(i in 1:n)
{
MV<-MV+(log(1/vsigma)-0.5*((datos[i]-vmu)^2)/vsigma^2)
}
y<-exp(MV-max(max(MV)))
y
}
###########SUPERFICIE VEROSIMILITUD RELATIVA NORMAL#########
library(lattice)
amu<-97
bmu<-103
asigma<-2
bsigma<-6
longitudmu<-75
longitudsigma<-75
x<-seq(amu,bmu,length=longitudmu)
y<-seq(asigma,bsigma,length=longitudsigma)
g<-expand.grid(x=x,y=y)
g$z<-Relativamusigma(g$x,g$y,vdatos)
trellis.par.get() #Parmetros grficos
trellis.par.set("axis.line",list(col="transparent"))
wireframe(z~x*y,
data=g,
screen=list(z=-245,x=-75,y=0),
xlab=expression(paste(mu)),
ylab=list(label=expression(paste(sigma)),cex=2.5),
zlab=list(label="Verosimilitud",rot=90,font=4,cex=1.5),
zlim=range(seq(0,1,by=0.2)),
scales=list(arrows=FALSE,cex=1,col="black",font=3)
)
###########CONTORNOS VEROSIMILITUD RELATIVA NORMAL##########
Page 2
Z<-outer(x,y,Relativamusigma,vdatos)
contour(x,y,Z,
vfont=c("sans serif","plain"),
levels=c(0.05,0.15,0.25,1),
labels=c(0.05,0.15,0.25,1),
cex.lab=1.5,
xlab=expression(paste(mu)),
ylab=expression(paste(sigma)),
lwd=2,
labcex=1
)
###############VEROSIMILITUD DE sigma CON mu fijo###########
MenosLogLsigmamufijo<-function(vec,datos,vmu)
{
vsigma<-vec[1]
if(vsigma>0)
{
n<-length(datos)
S2<-sum((datos-vmu)^2)
z<-n*log(1/vsigma)-(0.5*S2/vsigma^2)
y<--z
y
}
else
{
y<-10^100
y
}
}
vsigma0<-3
MenosLogLsigmamufijo(vsigma0,vdatos,97)
LogVeroPerfilmu<-c()
for(i in 1:longitudmu)
{
Vopt<-nlm(MenosLogLsigmamufijo,vsigma0,vdatos,vmu=x[i])
vsigma0<-Vopt$estimate
LogVeroPerfilmu[i]<--Vopt$minimum
}
RelativaPerfilmu<-exp(LogVeroPerfilmu-max(LogVeroPerfilmu))
plot(x,RelativaPerfilmu,
type="l",
xlab=expression(mu),
ylab="Verosimilitud Perfil Relativa"
)
###############VEROSIMILITUD DE mu CON sigma fijo###########
MenosLogLmusigmafijo<-function(vec,datos,vsigma)
{
vmu<-vec[1]
n<-length(datos)
S2<-sum((datos-vmu)^2)
z<-n*log(1/vsigma)-(0.5*S2/vsigma^2)
y<--z
Page 3
y
}
vmu0<-100
MenosLogLmusigmafijo(vmu0,vdatos,3)
LogVeroPerfilsigma<-c()
for(i in 1:longitudsigma)
{
Vopt<-nlm(MenosLogLmusigmafijo,vmu0,vdatos,vsigma=y[i])
vmu0<-Vopt$estimate
LogVeroPerfilsigma[i]<--Vopt$minimum
}
RelativaPerfilsigma<-exp(LogVeroPerfilsigma-max(LogVeroPerfilsigma))
plot(y,RelativaPerfilsigma,
type="l",
xlab=expression(sigma),
ylab="Verosimilitud Perfil Relativa"
)
op<-par(mfrow=c(1,2))
plot(x,RelativaPerfilmu,
type="l",
xlab=expression(mu),
ylab="Verosimilitud Perfil Relativa"
)
plot(y,RelativaPerfilsigma,
type="l",
xlab=expression(sigma),
ylab="Verosimilitud Perfil Relativa"
)

You might also like