Ejercicios de estadísticas matemáticas usando R
Grupo de estudio de Estadística Matemática Matemática con R Iniciado en enero 2016
1
1. Estadística descriptiva Ejercicio. 1.3. De gran importancia para residentes de la región central de Florida es la cantidad de material radiactivo presente en el suelo de zonas recuperadas de la explotación minera de fosfatos… Construya un histograma de frecuencia relativa para estos datos. x<-c(.74, 6.47, 1.90, 2.69, .75, .32, 9.99, 1.77, 2.41, 1.96, 1.66, .70, 2.42, .54, 3.36, 3.59, .37, 1.09, 8.32, 4.06, 4.55, .76, 2.03, 5.70, 12.48) hist(x, freq = F)
Ejercicio. 1.4. Las 40 acciones principales del mercado secundario (OTC, por sus siglas en inglés), clasificadas por el porcentaje de acciones en circulación vendidas en un día el año pasado son como sigue: 11.88 7.99 7.15 7.13 a.
6.27 6.07 5.98 5.91
5.49 5.26 5.07 4.94
4.81 4.79 4.55 4.43
4.4 4.05 3.94 3.93
3.78 3.69 3.62 3.48
3.44 3.36 3.26 3.2
3.11 3.03 2.99 2.89
2.88 2.74 2.74 2.69
2.68 2.63 2.62 2.61
Construya un histograma de frecuencia relativa para describir estos datos.
x<-c(11.88, 6.27, 5.49, 4.81, 4.4, 3.78, 3.44, 3.11, 2.88, 2.68, 7.99, 6.07, 5.26, 4.79, 4.05, 3.69, 3.36, 3.03, 2.74, 2.63, 7.15, 5.98, 5.07, 4.55, 3.94, 3.62, 3.26, 2.99, 2.74, 2.62, 7.13, 5.91, 4.94, 4.43, 3.93, 3.48, 3.2, 2.89, 2.69, 2.61) hist(x, freq = F) Histogram of x 0 3 . 0
5 2 . 0
0 2 . 0 y t i s n e D
5 1 . 0
0 1 . 0
5 0 . 0
0 0 . 0
2
4
6
8
10
12
x
¿Qué proporción de estas 40 acciones principales vendió más de 4% de las acciones en circulación? b.
•
mean(x>4)
2
[1] 0.45
Ejercicio. 1.24. Los deportes acuáticos se han sugerido como método de ejercicio cardiovascular para atletas lesionados y otros que deseen un programa de entrenamiento aeróbico de bajo impacto. En un estudio para investigar la relación entre cadencia de ejercicios y ritmo cardiaco,1 se midieron los ritmos cardiacos de 20 voluntarios en buenas condiciones a una cadencia de 48 ciclos por minuto (un ciclo formado por dos pasos). Los datos son como sigue:
a.
Use la amplitud de las mediciones para obtener una estimación de la desviación estándar.
x<-c(87, 109, 79, 80, 96, 95, 90, 92, 96, 98, 101,
•
91, 78 ,112, 94, 98, 94, 107, 81, 96)
> (max(x)-min(x))/length(x) • desviacion=sqrt(sum((x-mean(x))^2)) desviacion • [1] 41.64373
b. Construya un histograma de frecuencia para los datos. Use el histograma para obtener una aproximación visual a y y s.
•
hist(x, freq = F) Histogram of x 5 0 . 0
4 0 . 0
y t i s n e D
3 0 . 0
2 0 . 0
1 0 . 0
0 0 . 0
80
90
100
110
x
c. Calcule y y s. Compare estos resultados con las verifi caciones de cálculo proporcionadas por los incisos a y b.
• mean(x) [1] 93.7 sqrt(var(x)) • [1] 9.553726
3
d. Construya los intervalos y ± ks, k = 1, 2 y 3, y cuente el número de mediciones que caen en cada intervalo. Compare las fracciones que caen en los intervalos con las fracciones que esperaría de acuerdo con la regla empírica.
•
y<-c(87, 109, 79, 80, 96, 95, 90, 92, 96, 98, 101,
•
s=sqrt(var(y))
91, 78 ,112, 94, 98, 94, 107, 81, 96)
for (i in 1:3) countst[i]<-sum(y>(mean(y)-(i*s)) & y<(mean(y)+(i*s))) • countst [1] 13 20 20 #Datos en porcentajes countst / length(y)
1.4.2 Analiza los resultados obtenidos y presentar en Word. Este ejercicio puede realizarse de distintas formas la forma en la cua l resultaría más eficiente seria utilizando la función apply. Para lo cual se necesitara contar co n una función que realice todas la s operaciones que se nos piden. Lo primero entonces sería crear esta función: operaciones <- function(y){ return(c(mean(y), var(y), max(y), min(y), sd(y), IQR(y), range(y))) }#Para fines prácticos solo se colocan estas funciones, pero pueden agregarse todas las necesarias
Ya creada la función solo tenemos que aplicarla a todas las variables de nuestra matriz y como cada una de nuestras variables le corresponde una columna la ejecución se hará sobre estas utilizando la función apply1. formaA<-apply(X,2,operaciones) formaB<-apply(X,2,summary) formaC<-apply(X,2, pastecs) ; formaC<-round(apply(X,2,stat.desc), digits = 2)#con redondedo de 2 decimales
De igual forma se pueden utilizer funciones ya creadas como summary o descargando el paquete pastecs 2 el cual trae por defaul los siguientes estadísticos: # nbr.val, nbr.null, nbr.na, min max, range, sum, # median, mean, SE.mean, CI.mean, var, std.dev, coef.var
formaC<-round(apply(X,2,stat.desc), digits = 2) 1
Función apply esta función aplica una operación con uno o varios argumentos y regresa otra estructura de datos. "X es un arreglo (puede ser una matriz si la dimensión del arreglo es 2). MARGIN es una variable que define cómo la función es aplicada, cuando MARGIN=1 se aplica sobre los renglones, cuando MARGIN=2 trabaja sobre las columnas. FUN es la función que deseas aplicar y puede ser cualquier función de R, incluyendo funciones definidas por ti." 2 Este paquete se debe descargar. Install.packages(“pastecs”) Luego activarlo con library(pastecs)
4
ipc tc exp nbr.val 19.00 19.00 19.00 nbr.null 0.00 0.00 0.00 nbr.na 0.00 0.00 0.00 min 25.78 14.01 1.00 max 119.21 45.05 19.00 range 93.43 31.04 18.00 sum 1371.99 578.24 190.00 median 76.85 33.29 10.00 mean 72.21 30.43 10.00 SE.mean 7.92 2.52 1.29 CI.mean.0.95 16.63 5.29 2.71 var 1190.38 120.63 31.67 std.dev 34.50 10.98 5.63 coef.var 0.48 0.36 0.56
Otras formas de realizar estas operaciones son basadas en bucles for(i in 1:ncol(X)) { print(c(max(X[,i]), min(X[,i]), median(X[,i]),
sd(X[,i]),
mean(X[,i]),IQR(X[,i])))} [1] 119.21000 25.78000 76.85000 34.50188 72.21000 66.82500 [1] 45.05000 14.01000 33.29000 10.98311 30.43368 21.56500 [1] 19.000000 1.000000 10.000000 5.627314 10.000000 9.000000
El problema es que con este bucle aún queda pendiente la identificación clara de cada operación que se llevó a cabo
1. Teoría de probabilidad y variables aleatorias Ejemplo 3.1. Un supervisor en una planta manufacturera tiene tres hombres y tres
mujeres trabajando para él y desea escoger dos trabajadores para un trabajo especial . No queriendo mostrar sesgo en su selección, decide seleccionar los dos trabajadores al azar. Denote con Y el número de mujeres en su selección. Encuentre la distribución de probabilidad para Y. Una función distribución de probabilidad, suma todos los elementos que están contenidos dentro del espacio muestra a la que la misma le asigna una numeración. Así, en el ejemplo anterior, se utiliza el análisis combinatorio para conocer la cantidad de posibles combinaciones
¡ =15. Así, la P(E )=1/15 ∀ i 62=¡(−)¡ i
(0,15).
− , Así la distribución se puede definir como: p(y)=
y=(0,1,2) = (3/15,9/15,3/15)
n=factorial(6)/(factorial(2)*factorial(6-2)) x=factorial(3)/(factorial(0:2)*factorial(3-(0:2)))*factorial(3)/(factorial(2:0)*factorial(3-(2:0))) p_y=x/n barplot( p_y)
5
6 . 0
5 . 0
4 . 0
3 . 0
2 . 0
1 . 0
0 . 0
Continuando con el ejemplo anterior, obtuvimos que la distribución de probabilidad asume los valores de ( Y ) 0,1 y 2, con probabilidad p( Y ) 1/5, 3/5 y 1/5 respectivamente. Observamos que la media de la función se establece en 1. Suponiendo un experimento se realiza 100,000 veces, se obtendría una media ∑= 0∗0000+1∗0000+∗0000 = μ ≈
100,000
= (0)(0.2/1) +(1)(0.6/1) +(2)(0.2/1) =1 > (0)*(0.2/1) +(1)*(0.6/1) +(2)*(0.2/1) [1] 1
Continuando con el ejemplo anterior, la distribución de probabilidad viene dada:
Utilizando la definición de media y varianza, E(y)=1
=(0-1)2(1/5)+(1-1)2(3/5)+(2-1)2(1/5)
#R permite realizar este cálculo tal como una calculadora. (((0-1)^2)*(1/5))+(((1-1)^2)*(3/5))+(((2-1)^2)*(1/5)) [1] 0.4 • •
E(Y 2)=(02)(0.2/1) +(12)(0.6/1) +(22)(0.2/1) > (0^2)*(0.2/1) +(1^2)*(0.6/1) +(2^2)*(0.2/1) [1] 1.4
3.12 Ejercicio. Sea Y una variable aleatoria con p(y) dada en la siguiente tabla. Encuentre E(Y ). E(1/Y), E(Y ^2-1) y V(Y ). • •
y<- (1:4) py<-c(0.4, 0.3, 0.2, 0.1)
# a.-(multiplica el vector por la transpuesta de dicho vector) y %*% py • [,1] [1,] 2 # b.-
6
y1=(1/y) • • y1 %*% py [,1] [1,] 0.6416667 # c.y2=((y^2)-1) • • y2 %*% py [,1] [1,] 4 # d.-Usando la definición de varianza v(y)=E(y^2)-E(y)^2 > ((y^2)%*%py)-((y %*% py)^2) [,1] [1,] 1
3.14 Ejercicio. La vida máxima de la patente para un nuevo medicamento es 17 años. Si restamos el tiempo requerido por la FDA para someter a pruebas y aprobar el medicamento, se obtiene la vida real de la patente para el medicamento, es decir, el tiempo que la compañía tiene para recuperar los costos de investigación y desarrollo y para obtener una utilidad. La distribución de los tiempos de vida reales de las patentes para nuevos medicamentos se da a continuación: Años, y 3 4 5 6 7 8 9 10 11 12 13 p(y) .03 .05 .07 .10 .14 .20 .18 .12 .07 .03 .01 a
Encuentre la vida media de la patente para un nuevo medicamento
y<- c( 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) py<-c(.03, .05, .07, .10, .14, .20, .18, .12, .07, .03, .01) y %*% py [,1] [1,] 7.9 b
Encuentre la desviación estándar de Y = tiempo de vida de un nuevo medicamento
seleccionado al azar.
Sabiendo que la V(y)=E(y^2)-E(y)^2 (y^2 %*% py)-(y %*% py)^2 [,1] [1,] 4.73
c.
¿Cuál es la probabilidad de que el valor de Y caiga en el intervalo m ± 2s?
s=sqrt(var(y)) sum(y>(mean(y)-(2*s)) & y<(mean(y)+(2*s))) / length(y) [1] 1
3.22
Ejercicio. Un dado balanceado se tira una vez. Sea Y el número en su cara superior.
Encuentre el valor esperado y la varianza de Y. y<- c(1:6) py<- seq(from = 1/6, to = 1/6, length.out = 6) #esperanza y %*% py [,1] [1,] 3.5
7
#varianza > (y^2 %*% py)-(y %*% py)^2
[,1] [1,] 2.916667 3.23
Ejercicio. En un juego de azar una persona saca una sola carta de una baraja ordinaria de 52 cartas. A una persona le pagan $15 por sacar una “sota” o una reina y $5 por sacar un rey o un as. Alguien que saque cualquier otra carta paga $4. Si una persona participa en este juego, ¿cuál es la ganancia esperada?
y<- c(15, 5, 4) py<- c(6/52, 6/52, (52-12)/52) y %*% py [,1] [1,] 3.5 3.34.
El gerente del almacén de una fábrica ha construido la siguiente distribución de
probabilidad para la demanda diaria (número de veces que se usa) de una herramienta en particular. y
0
p(y) 0.1
1
2
0.5
0.4
Cuesta a la fábrica $10 cada vez que la herramienta se usa. Encuentre la media y la varianza del costo diario por usar la herramienta. y<- (0:2)*10 py<- c(0.1, 0.5, 0.4) >
y %*% py [,1] [1,] 13 > (y^2 %*% py)-(y %*% py)^2 [,1] [1,] 41
Ejercicios con la distribución binomial Ejemplo del libro de estadística matemática 3.38 El fabricante de una bebida láctea de bajo contenido de calorías desea comparar el atractivo del gusto de una nueva fórmula (fórmula B) con el de la fórmula estándar (fórmula A). A cada uno de cuatro jueces se les dan tres vasos en orden aleatorio, dos de ellos cont la fórmula A y el otro con la fórmula B. A cada uno de los jueces se les pide indicar cuál vaso fue el que disfrutó más. Suponga que las dos fórmulas son igualmente atractivas. Sea Y el número de jueces que indican una preferencia por la nueva fórmula.
a
Encuentre la función de probabilidad para Y . 8
n=4; p<-0.5; y<-i; 1-(factorial(n)/(factorial(y)*factorial(n-y)))*(p^y)*((1-p)^(n-y))
¿Cuál es la probabilidad de que al menos tres de los cuatro jueces indique una preferencia por la nueva fórmula? b
n=4; p<-0.5; y<-3; 1-(factorial(n)/(factorial(y)*factorial(n-y)))*(p^y)*((1-p)^(n-y)) [1] 0.75 c
Encuentre el valor esperado de Y . n*p
• [1] 2
Encuentre la varianza de • n*p*(1-p) [1] 1 d
Y .
Ejercicio tomado del libro de estadística matemática 3.40 La probabilidad de que un paciente se recupere de una enfermedad estomacal es .8. Suponga que se sabe que 20 personas han contraído la enfermedad. ¿Cuál es la probabilidad de que a exactamente 14 se recuperen?, dbinom(14,size=20,prob=.8) [1] 0.1090997
pbinom(14,20,.8) [1] 0.1957922
b al menos 10 se recuperen?, c al menos 14 pero no más de 18 se recuperen?, d a lo sumo 16 se recuperen?
Ejercicio tomado del libro de estadística matemática 3.46 Construya histogramas de probabilidad para las distribuciones de probabilidad binomiales para n = .5, p = .1, .5 y .9. (La Tabla 1, Apéndice 3, reducirá la cantidad de cálculos.) Nótese la simetría para p = .5 y la dirección del sesgo para p = .1 y .9.
n=10; py<-0; a<-matrix( ,nrow=11, ncol=1) par(mfrow=c(1,3))
for (p in c(0.1, 0.5, 0.9)){ for (y in 0:10) { py[y+1]<-(factorial(n)/(factorial(y)*factorial(n-y)))*(p^y)*((1-p)^(n-y)) } a<-cbind(a,py) barplot(a[ ,ncol(a)],beside=FALSE,type= ”l”,col=”red”) }
9
#Result a[ ,2:ncol(a)]
0 2 . 0
3 . 0
3 . 0
5 1 . 0
2 . 0
2 . 0
0 1 . 0
1 . 0
1 . 0 5 0 . 0
0 0 . 0
0 . 0
0 . 0
Ejercicio tomado del libro de estadística matemática 3.47 Use la Tabla 1, Apéndice 3, para construir un histograma de probabilidad para la distribución de probabilidad binomial para n = 20 y p = .5. Observe que casi toda la probabilidad cae en el intervalo 5 ≤ y ≤ 15.
#-----------------------------#n=10, p=0.1 n=20; p<-0.5; py<-0; for (y in 0:20) { py[y+1]<-(factorial(n)/(factorial(y)*factorial(n-y)))*(p^y)*((1-p)^(n-y)) } barplot(py, names.arg=as.character(0:20), beside=FALSE)
10
5 1 . 0
0 1 . 0
5 0 . 0
0 0 . 0
0
1
2
3
4
5
6
7
8
9
11
13
15
17
19
Distribución binomial (objetivo, introducir el uso de bucles y gráficos) 5. Ya en clases simulamos un vector de 10 valores para una y~B(10,0.1) y obtuvimos la representación grafica de dicha representación. Ahora, siguiendo el mismo esquema, se les pide generar 10 variables aleatorias con igual distribución, pero ahora con probabilidad variable en una secuencia de 10 número x-distantes, entre 0 y 1. Cada uno de estos resultados deben ser acumulados en una matriz, donde cada columna represente una variable aleatoria simulada:
Col1= y~B(10,0)
Col2= y~B(10,1)
Col3= y~B(10,02)
…
Col4= y~B(10,1)
n=10; py<-0; a<-matrix( ,nrow=11, ncol=1) for (p in seq(length=10, from=0, to=1)){ for (y in 0:10) { py[y+1]<-(factorial(n)/(factorial(y)*factorial(n-y)))*(p^y)*((1-p)^(n-y)) } a<-cbind(a,py) } #Results a[ , 2:ncol(a)]
11
5.1. Además, obtener en una sola figura los histogramas de cada variable simulada. ## Gráficos par(mfrow=c(2,5)) for (i in 2:11) { barplot(a[,i], names.arg=as.character(0:10), beside=FALSE,type= ”l”,col=”red”) } 0 . 1
5 2 . 0
8 . 0
5 2 .
0 3 . 0
6 . 0
0
0 2 . 0
4
2
. 0
0 0 .
0
0
1
2
3
4
5
6
7
8
9
10
0 0 .
0
0
1
2
3
4
5
6
7
8
9
10
5 0 . 0
5 0 . 0
5 0 . 0
0 0 .
0 . 0
0 1 . 0
0 1 . 0
0 1 . 0
0 1 . 0
5 1 . 0
5 1 . 0
5 1 . 0
. 0
0 2 . 0
0 2 . 0
0 2 . 0
0 0 .
0
0
1
2
3
4
5
6
7
8
9
10
0
0
1
2
3
4
5
6
7
8
9
10
5 2 . 0
0 2 . 0
5 1 . 0
1
2
3
4
5
6
7
8
9
10
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
0
4
. 0 0 1 . 0
5 0 . 0
0 0 . 0
0
4
0
0 1 . 0
5 0 . 0
0 0 . 0
3
6 . 0 2 .
5 1 . 0
0 1 . 0
5 0 . 0
2
8 . 0
0 3 . 0
0 2 . 0
5 1 . 0
0 1 . 0
1
0 . 1
5 2 . 0 0 2 . 0
0
0 0 . 0
0
1
2
3
4
5
6
7
8
9
10
2
. 0
0 0 . 0
0
1
2
3
4
5
6
7
8
9
10
0 . 0
0
1
2
3
4
5
6
7
8
9
10
5.2. Repetir los apartados anteriores, manteniendo fijo el valor de p en 0.5, no obstante variando el valor de n, en 10 números x-distantes entre 0 y 100. ## Practica de distribucion continua: normal ##1. Importar datos del PIB dominicano y estimar la tasa de crecimiento mediante al menos dos alternativas distintas (uso de bucles y vectorizadas) datos<-c(1336.67, 1555.47, 1729.23, 1880.32, 2070.46, 2218.14, 2470.71, 2604.34, 2658.65, 2870.63, 2967.36, 2986.98, 2383.71, 2617.69, 4004.37, 4195.48, 4795.68, 5180.42, 5131.06, 5673.15, 6084.52, 6252.08, 6260.40, 6480.85) #metodo 1. tasa de crecimeinto con bucle tc1<-0 for (i in 1:(length(datos)-1)){ tc1[i]<-(datos[i+1]-datos[i])/datos[i] } #metodo 2. tasa de crecimeinto vectorizada tc2<-(datos[2:length(datos)]-datos[1:length(datos)-1])/datos[1:length(datos)1] #metodo 3. Diferencias logaritmicas tc3<-diff(log(datos))
#1.2. Hacer una representacion grafica de linea y mediante histograma plot(tc1, type=”overplotted ”, pch=1, col= ”blue”, xlab= ”tiempo ”, ylab= ”TC%”, main=”Gráfico 1. Tasa de Crecimiento del PIB dominicano ”,)
12
Gráfico 1. Tasa de Crecimiento del PIB dominicano
4 . 0
% C T
2 . 0
0 . 0
2 . 0 -
5
10
15
20
tiempo
Comenar para que sirven las transformaciones y diversas formas de testear normalidad de una variable: Metodos Graficos #histograma con linea de normal par(mfrow=c(2,2)) hist(datos, prob=TRUE); curve(dnorm(x, mean=mean(datos), sd=sd(datos)), add=TRUE) hist(log(datos), prob=TRUE); curve(dnorm(x, mean=mean(log(datos)), sd=sd(log(datos))), add=TRUE) hist(tc1, prob=TRUE); curve(dnorm(x, mean=mean(tc1), sd=sd(tc1)), add=TRUE) hist(tc1^2, prob=TRUE); curve(dnorm(x, mean=mean(tc1^2), sd=sd(tc1^2)), add=TRUE)
Histogram of datos
Histogram of log(datos)
4 0 - e 4
y t i s n e D
2 . 1
y t i s n e D
4 0 - e 2
0 0 + e 0
8 . 0
4 . 0
0 . 0
1000
3000
5000
7000
7.0
7.5
8.0
8.5
datos
log(datos)
Histogram of tc1
Histogram of tc1^2
6 5
y t i s n e D
5 1
4
y t i s n e D
3 2
0 1
5 1 0
0
-0.2
0.0
0.2
0.4
tc1
0.6
0.00 0.05 0.10 0.15 0.20 0.25 0.30 tc1^2
qqplot(tc2,rnorm(24))
13
5 . 1
0 . 1
5 . 0 ) 4 2 ( m r o n r
0 . 0
5 . 0 -
0 . 1 -
5 . 1 -
-0.2
0.0
0.2
0.4
tc2
Metodos analiticos
Simula normales con n creciente y grafícalo, verifica que relación tienen esas graficas con el teorema central del límite. par(mfrow=c(1,3)) for (n in c(10,100,10000)){ hist(rnorm(n,0,1), prob=TRUE); curve(dnorm(x, mean=mean(rnorm(n,0,1)), sd=sd(rnorm(n,0,1))), add=TRUE) }
Otra forma de hacerlo: http://digitheadslabnotebook.blogspot.com/2011/01/using-r-for-introductorystatistics_23.html
14
*--------------------------EJERCICIOS DE VARIABLES CONTINUAS 1. Sabiendo que x~u(1,3), obtenga en R, la representación gráfica de dicha función. Recuerde que:
2. Supongamos que el tiempo medio de salida de una cajera de supermercado es de tres minutos, es decir el tiempo que le toma atender a cada cliente. Encuentre la probabilidad de que una salida de un cliente está terminando por el cajero en menos de dos minutos. ( ) Recuerde la función de densidad de Exponential Distribution es:
# 2. pexp(2, rate=1/3)
3. Comente el uso de los siguientes comandos: rnorm(n, mean, sd), dnorm(x, mean, sd), pnorm(q, mean, sd), qnorm(p, mean, sd). # # # # #
3 “d” returns “p” returns “q” returns “r” returns
the height of the probability density function the cumulative density function the inverse cumulative density function (quantiles) randomly generated numbers
3.1. Genere, en n mismo panel gráfico, la función de densidad, la de distribución y otra de número aleatorio, en un paner grafico de una fila y tres columnas.
15
#3.1. Tomado de: http://www.r-bloggers.com/normal-distributionfunctions/ set.seed(3000) xseq<-seq(-4,4,.01) densities<-dnorm(xseq, 0,1) cumulative<-pnorm(xseq, 0, 1) randomdeviates<-rnorm(1000,0,1) par(mfrow=c(1,3), mar=c(3,4,4,2)) plot(xseq, densities, col="darkgreen",xlab="", ylab="Density", type="l",lwd=2, cex=2, main="PDF of Standard Normal", cex.axis=.8) plot(xseq, cumulative, col="darkorange", xlab="", ylab="Cumulative Probability",type="l",lwd=2, cex=2, main="CDF of Standard Normal", cex.axis=.8) hist(randomdeviates, main="Random draws from Std Normal", cex.axis=.8, xlim=c(-4,4))
4. Los datos cuya distribución está cerca de lognormal son comunes. mediciones del tamaño de los organismos biológicos a menudo tienen este carácter. Como ejemplo, descarge la librería (library(MASS)) considere las mediciones de peso corporal (Animals$body). Comienza dibujando un histograma de los valores no transformados, y la superposición de una curva de densidad. Entonces 4.1. Dibuje una curva de densidad estimada para los logaritmos de los valores. 4.2. Determinar la media y la desviación estándar de registro (Animals$body). Superponer la densidad estimada con la densidad teórica para una distribución normal con la media y la desviación estándar obtenida simplemente. ¿La distribución parecen normales, después de la transformación a una escala logarítmica?
#4. http://maths-people.anu.edu.au/~johnm/courses/r/exercises/pdf/r-exercisesVI-XI.pdf library(MASS) 16
plot(density(Animals$body)) logbody <- log(Animals$body) plot(density(logbody)) av <- mean(logbody) sdev <- sd(logbody) xval <- pretty(c(av - 3 * sdev, av + 3 * sdev), 50) lines(xval, dnorm(xval, mean = av, sd = sdev))
5.
Simule en R una log-normal de n=100, meanlog=0, sdlog=1. Grafique y agregue la curva de densidad teórica y empírica. Comente la diferencia entre ambos.
samples <- rlnorm(100, meanlog=0, sdlog=1) hist(samples, prob=T, main="", col=gray(0.9), ylim=c(0,max(d))) lines(density(samples), lty=2) curve(dlnorm(x, meanlog=0, sdlog=1), lwd=2, add=T) rug(samples)
6.
Simule una v.a. de una distribución geométrica (rgeom(100, ½)), obtenga un resumen estadístico de esta (summary) y compruébelo con una función de R. Luego gráfiquelo en un histograma.
# Tomado de: http://www.r-bloggers.com sample <- rgeom(100, 1/2) summary(sample)
Min. 1st Qu. 0.00 0.00
Median 0.00
Mean 3rd Qu. 1.01 1.25
Max. 7.00
> sd(sample) [1] 1.534091 hist(sample)
2. Ejercicios para aprender de programación en R 2.1. Un empleado comienza a laboral bajo un salario de 10,000 mensuales, y un contrato que establece que anualmente el salario será incrementado en una proporción igual al 10% de su salario durante los próximo n=5 años. Genere un vector wage de dimensión n*12 que indique el salario mensual de la persona durante los próximo n años. wage0<-10000.0 anios<-5 tc<-0.1 for (i in 1:anios-1){ print(i) wage0[i+2]<-wage0[i+1]*(1+tc) } w <- rep(wage0, each=12)
17
Objetivo: aprender a utilizar la salida de una función y guardar los resultados en formatos distintos. Esto porque en muchas ocasiones, necesitamos tabular una importante cantidad de resultados, sin necesidad de ir pegando dato por dato, o estimar una gran cantidad de ecuaciones con el objetivo de obtener los mejores R. 2.2. Utilice una matriz de dato [nxk], n=obs y k=variables (estas son a su elección, pero propongo usen el tipo de cambio, el índice de actividad mensual, volumen de exportaciones y el ipc), y cree una function que teste independencia entre las variables. La salida de esta función debe ser una matriz cuadrada de 10x10 (número de variables) donde cada elemento represente el p-valué del test chi-cuadrado de independencia. Es decir, en la posición 1,2 de la matriz guardara el p -valor de la función al testear independencia entre la variable 1 y 2. Pistas/ayudas: La función chisq.test permite realizar el test de independencia solicitado, y $p.value permite guardar los resultados La función se le ingresa una matriz y va testeando pares de variables, se puede indexar, o crear un bucle anidado (de dos elementos) donde el movimiento de cada elemento sirva para llamar una variable y a su vez permite llamar las posiciones de la matriz que ocupará en la matriz de resultados. 1.2. Consideraste si la estructura de los datos puede influir en los resultados anteriores??... realizar breve comentarios en clases. 1.3. Realiza el ejercicio anterior, de alguna forma matricial
#importamos una matrix de datos llamada X result<-matrix(0, ncol(X), ncol(X)) for (k1 in 1:ncol(X)){ for (k2 in 1:ncol(X)){ salida <- chisq.test(cbind(X[,k1],X[,k2]), correct=F) result[k1,k2]<-salida$p.value } } Result [,1] [,2] [,3] [1,] 1.0000000 0.7434661 0.9582233 [2,] 0.7434661 1.0000000 0.7223357 [3,] 0.9582233 0.7223357 1.0000000
3. Ejercicios aplicados Campo de aplicación, economía financiera Ejercicio de semana 9. Objetivo: utilizar las propiedades de la función de varianza covarianza para calcular los momentos de una cartera. Utilizando el archivo dataIbex35.txt, suponga una cartera con los activos: SAN, VISCOFAN, ACERINO, en la cual se invierte, w{w1, w2, w3}={3/5, 1/5, 1/5}, obtenga: 9.1. El vector de rendimientos (esperanza de cada activo) 18
9.2. El rendimiento general de la cartera 9.3. Volatilidades de cada activo (desviación estándar de cada activo) 9.4. La matriz de varianza covarianza 9.5. Varianza de la cartera 9.6. Matrix de correlaciones
19