Base de datos y librerías
library(knitr)
library(readxl)
library(dplyr)
library(ggplot2)
library(corrplot)
library(readr)
library(corrgram)
library(plotrix)
datos <- read.delim("C:/Users/user/OneDrive - Universidad Externado de Colombia/Tercer Semestre/Estadistica/Bond Funds.txt", header=FALSE)
Renombrar las variables
colnames(datos) <- c("id","tipo","activos","cargos","relacion","retorno09","retorno3", "retorno5","riesgo")
head(datos)
Tamaño de muestra
n <- nrow(datos)
print(n)
## [1] 184
Número de variables
p <- ncol(datos)
print(p)
## [1] 9
Adjuntar la base datos
attach(datos)
1. Clasificar las variables según su naturaleza (cualitativa/cuantitativa discreta/cuantitativa continua) y escala de medición (nomina/ordinal/intervalo/razón).
str(datos)
## 'data.frame': 184 obs. of 9 variables:
## $ id : chr "FN-1" "FN-2" "FN-3" "FN-4" ...
## $ tipo : chr "Intermediate Government" "Intermediate Government" "Intermediate Government" "Intermediate Government" ...
## $ activos : num 7268 475 193 18604 143 ...
## $ cargos : chr "No" "No" "No" "No" ...
## $ relacion : num 0.45 0.5 0.71 0.13 0.6 0.54 0.49 0.55 0.67 0.63 ...
## $ retorno09: num 6.9 9.8 6.3 5.4 5.9 5.7 3 7.4 5.3 5.7 ...
## $ retorno3 : num 6.9 7.5 7 6.6 6.7 6.4 6.8 6.4 6.1 6.2 ...
## $ retorno5 : num 5.5 6.1 5.6 5.5 5.4 6.2 5.3 5.2 5 5.1 ...
## $ riesgo : chr "Below average" "Below average" "Average" "Average" ...
Id - Cualitativa Ordinal
Tipo - Cualitativa Nominal
Activos - Cuantitativa Continua de Razón
Cargos - Cualitativa Nominal Dicotómica
Relación - Cuantitativa Continua de Razón
Retorno09 - Cuantitativa Continua de Razón
Retorno3 - Cuantitativa Continua de Razón
Retorno5 - Cuantitativa Continua de Razón
Riesgo - Cualitativa Nominal
2. Construir tablas cruzadas junto con los gráficos de barras correspondientes para: a. tipo (columnas) frente a cargos (filas), b. tipo (columnas) frente riesgo (filas), y c. cargos (columnas) frente a riesgo (filas). Teniendo en cuenta estas tablas de contingencia y los gráficos, ¿qué puede decir acerca de las relaciones entre estas variables? Nota: usar frecuencias relativas e incluir los totales marginalmente.
#Tablas Cruzadas
tablaA <- table(cargos, tipo)
tablaA
## tipo
## cargos Intermediate Government Short Term Corporate
## No 53 77
## Yes 34 20
tablaB <- table(riesgo, tipo)
tablaB
## tipo
## riesgo Intermediate Government Short Term Corporate
## Above average 29 30
## Average 32 37
## Below average 26 30
tablaC <- table(riesgo, cargos)
tablaC
## cargos
## riesgo No Yes
## Above average 37 22
## Average 49 20
## Below average 44 12
#Frecuencias Relativas
tablaA.rel <- round(prop.table(tablaA) * 100,2)
tablaA.rel
## tipo
## cargos Intermediate Government Short Term Corporate
## No 28.80 41.85
## Yes 18.48 10.87
tablaB.rel <- round(prop.table(tablaB) * 100,2)
tablaB.rel
## tipo
## riesgo Intermediate Government Short Term Corporate
## Above average 15.76 16.30
## Average 17.39 20.11
## Below average 14.13 16.30
tablaC.rel <- round(prop.table(tablaC) * 100,2)
tablaC.rel
## cargos
## riesgo No Yes
## Above average 20.11 11.96
## Average 26.63 10.87
## Below average 23.91 6.52
#Gráficos y totales marginales
kable(addmargins(tablaA.rel), caption = "Tabla cruzada utilizando el tipo de fondo en columnas y los cargos de venta como filas" )
Tabla cruzada utilizando el tipo de fondo en columnas y los cargos de venta como filas
| No |
28.80 |
41.85 |
70.65 |
| Yes |
18.48 |
10.87 |
29.35 |
| Sum |
47.28 |
52.72 |
100.00 |
barplot(tablaA.rel, legend = TRUE, beside = TRUE, horiz = FALSE, ylim = c(0, 60),
main = "Tipo de fondo frente a cargos de venta",
xlab = "Tipo de fondo",
ylab ="Cargos de venta (%)",
border = "black",
col = c("chartreuse4","cadetblue4"))

kable(addmargins(tablaB.rel), caption = "Tabla cruzada utilizando el riesgo como filas y el tipo de fondo en columnas" )
Tabla cruzada utilizando el riesgo como filas y el tipo de fondo en columnas
| Above average |
15.76 |
16.30 |
32.06 |
| Average |
17.39 |
20.11 |
37.50 |
| Below average |
14.13 |
16.30 |
30.43 |
| Sum |
47.28 |
52.71 |
99.99 |
barplot(tablaB.rel, legend = TRUE, beside = TRUE, horiz = FALSE, ylim = c(0, 35),
main = "Tipo de fondo frente a riesgo",
xlab = "Tipo de fondo",
ylab ="Riesgo",
border = "black",
col = c("firebrick4","navajowhite3"))

Del anterior análisis podríamos concluir que entre las tres variables, las empresas que formaban parte del fondo de inversión en más del 70% poseen cargos de venta negativos. Adicionalmente, la mayoría tiene riesgo en la media o sobre esta.
3. Calcular la matriz de correlación y graficar los dispersogramas (en un sólo gráfico) para describir las relaciones entre: activos, relación de gastos, retorno en 2009, retorno anualizado a tres años, y el retorno anualizado a cinco años. Teniendo en cuenta las correlaciones y los dispersogramas, ¿qué puede decir acerca de las relaciones entre estas variables?
dm <- datos[,c('activos',"relacion","retorno09","retorno3","retorno5")]
matriz <- round(cor(dm, use="pair"),2)
print(matriz)
## activos relacion retorno09 retorno3 retorno5
## activos 1.00 -0.32 0.05 0.12 0.15
## relacion -0.32 1.00 0.07 0.05 0.00
## retorno09 0.05 0.07 1.00 0.06 0.09
## retorno3 0.12 0.05 0.06 1.00 0.99
## retorno5 0.15 0.00 0.09 0.99 1.00
plot(dm, pch = "✈", cex = 1, gap = 0.2, xaxt = "n", yaxt = "n", col = "orange", labels = c('Activos',"Relación","Retorno 09","Retorno 3","Retorno 5"))

De lo anterior, podemos interferir que la mayor parte de las variables no exhiben una correlación entre si, a distinción del retorno anualizado a 3 y a 5 años, en los que representan una correlación prácticamente a cabalidad entre si.
4. Comparar los rendimientos de los fondos en 2009 en función del riesgo. Para cada uno de los tres niveles de riesgo (por debajo del promedio, promedio, por encima del promedio), calcular el mínimo, el máximo, la media, la mediana, la desviación estándar, y el coeficiente de variación de los rendimientos en 2009, junto con los diagramas de caja correspondientes (en un sólo gráfico). ¿A qué conclusiones puede llegar acerca de las diferencias entre los fondos en función del riesgo? Nota: presentar los resultados de las medidas en una tabla como la siguiente:
Debajo <- datos[riesgo == 'Below average', "retorno09"]
Promedio <- datos[riesgo == 'Average', "retorno09"]
Encima <- datos[riesgo == 'Above average', "retorno09"]
summary(Debajo)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.200 4.950 6.100 6.314 8.125 13.000
median_deb <- median(as.matrix(Debajo))
sd(as.matrix(Debajo))
## [1] 2.70746
mean_deb <- mean(as.matrix(Debajo))
CV_deb <- (sd(as.matrix(Debajo))/mean(as.matrix(Debajo)))*100
Debajo_del_promedio <- c(min(Debajo),max(Debajo),median_deb,mean_deb,CV_deb)
Debajo_del_promedio
## [1] 0.200000 13.000000 6.100000 6.314286 42.878320
summary(Promedio)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1.100 3.500 6.000 6.871 10.800 16.400
median_prom <- median(as.matrix(Promedio))
sd_prom <- sd(as.matrix(Promedio))
mean_prom <- mean(as.matrix(Promedio))
CV_prom <- (sd(as.matrix(Promedio))/mean(as.matrix(Promedio)))*100
Alrededor_del_promedio <- c(min(Promedio),max(Promedio), median_prom, mean_prom, CV_prom)
Alrededor_del_promedio
## [1] -1.100000 16.400000 6.000000 6.871014 63.890590
summary(Encima)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -8.800 0.800 7.900 8.314 13.850 32.000
median_encima <- median(as.matrix(Encima))
sd_encima <- sd(as.matrix(Encima))
mean_encima <- mean(as.matrix(Encima))
CV_encima <- (sd(as.matrix(Encima))/mean(as.matrix(Encima)))*100
Encima_del_promedio <- c(min(Encima),max(Encima),median_encima, mean_encima, CV_encima)
Encima_del_promedio
## [1] -8.800000 32.000000 7.900000 8.313559 111.134173
vs <- data.frame(Debajo_del_promedio,Alrededor_del_promedio,Encima_del_promedio,
row.names = c('Minimo','Maximo','Mediana','Media','CV'))
vs
boxplot(x=vs, ylim=c(-30, 100), main="Rendimientos de los Fondos en 2009", col="steelblue4", horizontal=T, names = c('Debajo','Promedio','Encima'))

Con lo anterior podíamos demostrar que los datos en la función de riesgo que se encuentran sobre el promedio exponen un grado alto de dispersión. Además, los datos ubicados de manera inferior al promedio son los menos dispersos en la muestra.
Cálculo de probabilidades
1. Calcular todas las probabilidades condicionales para comparar los niveles de riesgo en función de: a. el tipo de fondo de inversión, y b. los cargos de venta. Presentar estas probabilidades tabular y gráficamente. Nota: calcular los perfiles fila o columna según corresponda a partir de las tablas cruzadas del numeral 2. de la sección anterior. ¿Existen diferencias sustanciales entre los diferentes niveles de riesgo en términos del tipo de fondo de inversión y los cargos de venta?
tablaB
## tipo
## riesgo Intermediate Government Short Term Corporate
## Above average 29 30
## Average 32 37
## Below average 26 30
freqB <- round(tablaB/184,3)
freqB
## tipo
## riesgo Intermediate Government Short Term Corporate
## Above average 0.158 0.163
## Average 0.174 0.201
## Below average 0.141 0.163
dotchart(freqB, pch = "📈", main= "Freq B", color = 'darkorange1', gcolor = 'lightskyblue4', lcolor = 'gray31', bg = 'steelblue4')

tablaC
## cargos
## riesgo No Yes
## Above average 37 22
## Average 49 20
## Below average 44 12
freqC <- round(tablaC/184,3)
freqC
## cargos
## riesgo No Yes
## Above average 0.201 0.120
## Average 0.266 0.109
## Below average 0.239 0.065
dotchart(freqC, pch = "📈", main= "Freq C", color = 'palevioletred4', gcolor = 'salmon1', lcolor = 'paleturquoise3', bg = 'peachpuff3')

tablaC
## cargos
## riesgo No Yes
## Above average 37 22
## Average 49 20
## Below average 44 12
datos_1.25 <- c(0.627, 0.373, 0.710, 0.290, 0.786, 0.214)
datos1.75 <- c(0.285, 0.407, 0.377, 0.370, 0.338, 0.222)
data_1.25 <- matrix(datos_1.25, ncol = 2, byrow = T)
perfil_fila <- as.data.frame(data_1.25)
perfil_fila
data1.75 <- matrix(datos1.75, ncol = 2, byrow = T)
perfil_columna <- as.data.frame(data1.75)
perfil_columna
En este punto podemos expresar diferencias significativas entre los niveles de riego, con relación a los cargos de venta. Adicionalmente, cuando los cargos son negativos, los niveles son superiores.
2. Categorizar (construir intervalos) la variable retorno09 usando los siguientes intervalos: menos de 0, entre 0 y 10, más de 10. Otorgar nombres significativos a las categorias resultantes. Calcular todas las probabilidades condicionales para comparar los niveles de riesgo en función de las categorias del rendimiento de los fondos en 2009. Presentar estas probabilidades tabular y gráficamente. ¿Existen diferencias sustanciales entre los diferentes niveles de riesgo en términos de los rendimientos de los fondos en 2009? Nota: la función cut en R permite categorizar fácilmente variables cuantitaticas.
retorno09.cat <- cut(retorno09, breaks = c(-15, 0, 10, 35), labels = c('Bajo','Medio','Alto'))
retorno_cat <- table(retorno09.cat)
retorno_cat
## retorno09.cat
## Bajo Medio Alto
## 16 117 51
etret09 <- c("Bajo", "Medio", "Alto")
sum(retorno_cat)
## [1] 184
retorno09_cat <- retorno_cat/184
retorno09_cat
## retorno09.cat
## Bajo Medio Alto
## 0.08695652 0.63586957 0.27717391
pie3D(retorno_cat, labels=etret09, labelcex=1.3, explode=0.1, col= c("orange2", "palegreen4", "snow4"), main="Diagrama Punto 2")

Así es, en el gráfico podemos observar que la diferencia entre los niveles de riesgo son sustanciales, teniendo el riesgo medio los mayores rendimientos, el ato riesgo un rendimientos considerables y el riesgo bajo posee el rendimiento más bajo.
Teorema de Bayes
1. Sea E el evento “el riesgo de la inversión del fondo está por encima del promedio”. Usando la base de datos, calcular e interpretar las siguientes probabilidades: Pr(E | H1), Pr(E | H2), Pr(E | H3) y Pr(E | H4). ¿Estas probabilidades deben sumar 1? ¿Por qué?
summary(activos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 12.4 113.7 268.4 910.6 622.0 18603.5
Bprimero <- cut(activos, breaks = c(12.4,113.7,268.4,622,18603.5), include.lowest = T, labels = c("H1","H2","H3","H4"))
TBprimero = table(riesgo, Bprimero)
prop.table(TBprimero, margin = 1.2)
## Bprimero
## riesgo H1 H2 H3 H4
## Above average 0.2881356 0.1864407 0.2372881 0.2881356
## Average 0.2028986 0.2753623 0.2608696 0.2608696
## Below average 0.2678571 0.2857143 0.2500000 0.1964286
Efectivamente la suma de las probabilidades da 1, ya que los eventos al ser mutuamente excluyentes, se establece que la probabilidad de alún evento particular corresponde a la suma de las probabilidades individuales.
2. Considere la distribución de los activos de los fondos cuyo riesgo de inversión está por encima del promedio. Usando el Teorema de Bayes, calcular e interpretar las siguientes probabilidades: Pr(H1 | E), Pr(H2 | E), Pr(H3 | E) y Pr(H4 | E). ¿Estas probabilidades deben sumar 1? ¿Por qué?
summary(activos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 12.4 113.7 268.4 910.6 622.0 18603.5
ac1 <- datos[activos < 113.7, 'activos',]
ac2 <- datos[113.7 < activos & activos <= 268.4,]
ac3 <- datos[268.4 < activos & activos <= 622,]
ac4 <- datos[622.0 < activos & activos <= 18603.5,]
riesgo_encima_h1 <- datos[riesgo == 'Above average','activos']
riesgo_encima.24 <- riesgo_encima_h1[riesgo_encima_h1 < 113.7]
length(riesgo_encima.24)
## [1] 17
length(riesgo_encima_h1)
## [1] 59
length(riesgo_encima.24)/length(riesgo_encima_h1)
## [1] 0.2881356
riesgo_encima_h2 <- datos[riesgo == 'Above average', 'activos']
riesgo_encima.25 <- riesgo_encima_h2[(113.7 < riesgo_encima_h2) & (riesgo_encima_h2 <= 268.4)]
length(riesgo_encima.25)
## [1] 11
length(riesgo_encima_h2)
## [1] 59
length(riesgo_encima.25)/length(riesgo_encima_h2)
## [1] 0.1864407
riesgo_encima_h3 <- datos[riesgo == 'Above average', 'activos']
riesgo_encima.26 <- riesgo_encima_h2[(268.4 < riesgo_encima_h3) & (riesgo_encima_h3 <= 622)]
length(riesgo_encima.26)
## [1] 14
length(riesgo_encima_h3)
## [1] 59
length(riesgo_encima.26)/length(riesgo_encima_h3)
## [1] 0.2372881
riesgo_encima_h4 <- datos[riesgo == 'Above average', 'activos']
riesgo_encima.27 <- riesgo_encima_h2[(622.0 < riesgo_encima_h4) & (riesgo_encima_h4 <= 18603.5)]
length(riesgo_encima.27)
## [1] 17
length(riesgo_encima_h4)
## [1] 59
length(riesgo_encima.27)/length(riesgo_encima_h4)
## [1] 0.2881356
Efectivamente la suma de las probabilidades da 1, ya que los eventos al ser mutuamente excluyentes, se establece que la probabilidad de alún evento particular corresponde a la suma de las probabilidades individuales.
3. ¿Las probabilidades Pr(H1 | E), Pr(H2 | E), Pr(H3 | E) y Pr(H4 | E) difieren marcadamente de Pr(H1), Pr(H2), Pr(H3), y Pr(H4), respectivamente? ¿Por qué? ¿Qué se puede concluir de la distribución de los activos de los fondos con riesgos de inversión con riesgos de inversión por encima del promedio?
prob_A <- datos[cargos == 'Yes', 'cargos']
table(prob_A)
## prob_A
## Yes
## 54
54/184
## [1] 0.2934783
prob_B <- datos[tipo == 'Intermediate Government', 'tipo']
table(prob_B)
## prob_B
## Intermediate Government
## 87
87/184
## [1] 0.4728261
prob_E <- datos[riesgo == 'Above average', 'riesgo']
table(prob_E)
## prob_E
## Above average
## 59
59/184
## [1] 0.3206522
Indepen_1 <- datos[cargos == 'Yes', 'riesgo']
indepen_1.2 <-Indepen_1[Indepen_1 ]
table(indepen_1.2)
## < table of extent 0 >
22/54
## [1] 0.4074074
Los eventos A y E son dependientes pues la probabilidad de A dado E es distinta a la de A o E.
Los eventos B y E son dependientes pues la probabilidad de B dado E es distinta a la de B o E.
Los anteriores resultados acarrean el hecho de que el riego se encuentre superior a la media dependiente, de los cargos de impuestos como del tipo de compañía.
Conclusiones
Con base en los resultados de las secciones anteriores proporcione algunas conclusiones de forma puntual y concisa, teniendo en cuenta las siguientes preguntas:
De acuerdo con los datos conseguidos podemos observar que los fondos no muestran una diferencia importante en los niveles de riesgo
¿Los fondos con menores rendimientos tienden a ser inversiones menos riesgosas que los fondos con mayores rendimientos?
summary(relacion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1200 0.5275 0.7000 0.7118 0.9025 1.9400
Debajo.5 <- datos[relacion > 0.7, 'riesgo']
table(Debajo.5)
## Debajo.5
## Above average Average Below average
## 28 34 26
Encima.5 <- datos[relacion < 0.7, 'riesgo']
table(Encima.5)
## Encima.5
## Above average Average Below average
## 27 33 29
La afirmación es falsa porque la tendencia de los fondos con menor riesgo es a tener una mayor cantidad de datos debajo del promedio
¿Existe una relación entre los activos, la relación de gastos y los rendimientos de los fondos?
De acuerdo con los resultados obtenidos anteriormente no se encontró alguna relación solida entre las tres variables
Como se puede observar la diferencia es importante respecto a la media, siendo esta significativamente mayor en los fondos que son intermediados por el gobierno