Práctica 3: Estadísticas Descriptivas para Rendimientos.
En esta sección se aplicarán las estadísticas descriptivas y conceptos básicos que se están estudiando. Además, se estudirá la diferencia entre rendimientos contínuos y discretos.
Estadísticas para los precios de las acciones:
Para comenzar, se llama la libería fBasics
Luego, se cargan los datos de las acciones con la función
read.csv()
, en un objeto llamado datos=
tal como se vió en la
sección anterior Conceptos Previos: Introducción a R y
R-Studio.
El archivo con el cual se trabajó se encuentra en
aquí.
y se define el objeto precios =
como una serie de tiempo con la
función ts()
aplicada a datos
para las columnas 2 a la 5, las
cuales contienen las acciones, ya que en el archivo la columna 1 solo es
una columna de numeración.
Se muestra los 5 primeros registros de precios
con la función
head
.
library('fBasics')
datos= read.csv(file.choose(), header=TRUE, sep =';', dec=",")
precios= ts(datos[,2:5])
print(head(precios,5))
WMT.Adjusted PG.Adjusted NFLX.Adjusted KO.Adjusted
[1,] 95.04511 96.73402 359.97 47.71631
[2,] 95.99585 96.71452 351.77 47.84123
[3,] 96.56432 95.95438 359.07 43.80561
[4,] 98.00515 95.97388 356.87 43.46932
[5,] 100.17127 97.44544 361.92 43.07536
Histograma:
Se realiza el histograma de los precios de la acción 1 que para este
caso particular pertenece a Walmart. Aqui se usa la función hist()
sobre el objeto precios[,1]
en la posición 1 (WMT), se le aplican
los argumentos:título del gráfico “histograma Precios WMT”
(main = "histograma Precios WMT"
), color en azul (col='blue'
),
bordes en negro (border='black'
), etiqueta del eje X en USD
(xlab= USD
) y tamaño del eje Y (ylim = c(0,50)
)
hist(precios[,1], main = "histograma Precios WMT", col = 'blue', border = 'black', xlab = 'USD',ylim = c(0,50))
![../../_images/output_6_01.png](../../_images/output_6_01.png)
Con el fin de graficar los histogrmas con diferentes colores, se hace
uso de la librería qualiPalette()
para crear una paleta de n colores
dentro de la gama Dark2 , los cuales están determinados por el número
de acciones que contenga el objeto precios
.
colores= qualiPalette(n=ncol(precios), name=c("Dark2"))
Preparación de la ventana de gráficos.
Con el fin de crear una ventana, que coloque los histogramas de los
precios en una matríz gráfica de 4x2, se crean el objeto
tamano=c(seq(ncol(cartera)))
, el cual crea una secuencia de 1 hasta
el número total de acciones con el que cuenta el objeto precios
, y
luego con el objeto matriz
se crea la matriz gráfica.
Con la ayuda de un ciclo for
se crean los histogramas para cada una
de las acciones pertenecientes a precios
win.graph(15,13)
tamano=c(seq(ncol(precios)))
matriz=matrix(tamano, ncol=2)
C=layout(matriz)
#layout.show(C) opcional para Rstudio en consola.
for (i in 1:ncol(precios)){
hist(precios[,i], breaks=40, col=colores[i], xlab="Precios", ylab ="Frecuencia", main = names(precios[,i]), freq=F)
}
![../../_images/output_10_02.png](../../_images/output_10_02.png)
Estadísticas Descriptivas:
Con el fin de obtener un resumen general de las estadísticas principales
como media, mediana, mínimo, máximo y cuartiles, se utiliza la función
summary()
sobre precios
, para todas las acciones.
#estadísticas
descriptivos= summary(precios)
print(descriptivos)
WMT.Adjusted PG.Adjusted NFLX.Adjusted KO.Adjusted
Min. : 95.05 Min. : 95.91 Min. :254.6 Min. :42.94
1st Qu.:101.39 1st Qu.:104.12 1st Qu.:299.1 1st Qu.:47.64
Median :113.30 Median :116.09 Median :343.3 Median :52.18
Mean :110.27 Mean :113.76 Mean :333.5 Mean :51.13
3rd Qu.:117.51 3rd Qu.:121.93 3rd Qu.:362.8 3rd Qu.:53.73
Max. :121.28 Max. :127.14 Max. :387.8 Max. :59.61
Con la función range()
se puede obtener el rango en el que se mueve
el precio de una acción, en este caso la acción ubicada en la posición 3
(precios[,3]
) NFLX.Adjusted que irá desde el mín= 254.6 a max=
387.8, esta información se observa igualmente en el recuadro anterior de
las estadísticas resumen.
rango= range(precios[,3])
print(rango)
[1] 254.59 387.78
La varianza de una acción se puede hallar con la función var()
.
#Matriz de varianzas
varianza= var(precios[ ,3])
print(varianza)
[1] 1227.86
Asimismo, la desviación estandar de una acción se puede hallar con la
función sd()
.
sigma=sd(precios[ ,3])
print(sigma)
[1] 35.04084
La asimetría o sesgo, se puede hallar con la función skewness()
,
pero hay que aclarar que esta función no se encuentra dentro de los
paquetes básicos de R, por tanto, siempre antes de utilizar esta
función, se debe instalar el paquete 'fBasics'
.
asimetria= skewness(precios[,3])
print(asimetria)
[1] -0.3791279
attr(,"method")
[1] "moment"
Igualmente con la función kurtosis()
se debe tener instalado la
librería 'fBasics'
curtosis= kurtosis(precios[ ,3])
print(curtosis)
[1] -1.177376
attr(,"method")
[1] "excess"
Los cuantiles o percentiles del precio de una acción o de cualquier
variable, se pueden calcular con la función quantile()
, lo
importante es indicar el percentil que se desea hallar, para ello, se
utiliza el argumento prob = c()
, en donde se colocará el valor de
los perncentiles entre 0 y 1.
Q=quantile(precios[3], prob = c(0.25, 0.5, 0.75), na.rm = TRUE)
print(Q)
25% 50% 75%
96.56432 96.56432 96.56432
Rendimientos:
Los rendimientos calculados en esta sección, son basados en las distribuciones continuas por lo que se utilizan los rendimientos logarítmicos, determinados por la fórmula:
La funciones diff()
y log()
aplicadas de forma anidada sobre el
objeto precios
, producen la matriz de rendimientos continuos, que se
observa a continuación.
Para comprender el uso de los rendimientos logarítmicos ver el vídeo explicativo: Rendimientos discreto vs continuos.
Rdtos=diff(log(precios))
print(head(Rdtos,5))
WMT.Adjusted PG.Adjusted NFLX.Adjusted KO.Adjusted
[1,] 0.009953393 -0.0002015316 -0.023043176 0.002614405
[2,] 0.005904385 -0.0078906655 0.020539853 -0.088125733
[3,] 0.014810682 0.0002031280 -0.006145819 -0.007706627
[4,] 0.021861413 0.0152165405 0.014051673 -0.009104239
[5,] -0.022962154 -0.0071259700 -0.005569218 0.006004729
A modo de ejemplo, aquí se crean los histogramas para los rendimientos de las acciones, de forma similar a la ya vista.
win.graph(15,13)
tamano=c(seq(ncol(Rdtos)))
matriz=matrix(tamano, ncol=2)
C=layout(matriz)
#layout.show(C) opcional para Rstudio en consola.
for (i in 1:ncol(Rdtos)){
hist(Rdtos[,i], breaks=40, col=colores[i], xlab="Rendimientos", ylab ="Frecuencia", main = names(Rdtos[,i]), freq=F)
}
![../../_images/output_28_0.png](../../_images/output_28_0.png)
con el objetivo de obtener una matriz que reúna los coeficientes de
curtosis y asimetría en una sola tabla se hace uso de un ciclo
For{}
, ya que estas funciones por si solas solo se aplican a los
activos individuales.
asimetria=vector()
curtosis=vector()
for (i in 1:ncol(Rdtos)) {
asimetria[i]= skewness(Rdtos[,i])
curtosis[i]= kurtosis(Rdtos[ ,i])
}
matriz=cbind(asimetria, curtosis)
print(matriz)
asimetria curtosis
[1,] 0.02079609 17.580065
[2,] 0.02442168 15.601142
[3,] -0.94786033 4.384105
[4,] -2.06507309 14.358641
Práctica:
Con las acciones que descargaron y manipularon en las Prácticas 1y 2, saque los rendimientos logarítmicos de las acciones que eligió y responda lo siguiente:
1. Los histogrmas muestran un comportamiento platicúrtico, mesocúrtico o leptocúrtico.
2. Concluya sobre las estadísticas descriptivas básicas de los rendimientos (summary).
3. Confirme por medio de los coeficientes de asimetría y curtosis, si los rendimientos de sus acciones contienen colas pesadas (sesgo) o estan demasiado centradas(curtosis altas)