-
Notifications
You must be signed in to change notification settings - Fork 0
/
parte1.Rmd
117 lines (87 loc) · 5.72 KB
/
parte1.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
---
title: '¿Qué pedo con las apuestas?'
author: '@haycarlitos'
date: '2022-09-29'
output: github_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## Sin miedo al código
Siempre recomiendo R para aprender a programar. Aunque la mayoría de usuarios lo usa para estadística, creo que puedes probar rápido cualquier tipo de experimento. Además, una vez que entiendes lo básico, es más fácil entender otros lenguajes de programación. Visita <http://rmarkdown.rstudio.com> para aprender a hacer documentos con código.
Si nunca has programado o no tienes instalado R, en 20 minutos estarás list@ para seguir hackeando siguiendo éste tutorial. <https://www.dataquest.io/blog/tutorial-getting-started-with-r-and-rstudio/>
## Momios
Asignamos valores a variables usando '<-'. Si tecleas el nombre de alguna de ellas en la consola, imprime el número que le
asignaste. El '#' al inicio de cada linea se usa para dejar comentarios.
```{r variables}
# Así se ve un comentario
victoriaPuebla <- 3.2
empate <- 3.55
victoriaAme <- 2.15
```
## Probabilidad implícita
Usamos '/' para dividir, '+' sumar, '-' restar, '*' multiplicar. Nota que usamos el valor guardado en las variables anteriores para definir nuevas variables.
Recuerda que para calcular la probabilidad implícita de un momio en sistema europeo usamos
**probabilidad implícita = 100/momio**.
¿Ya notaste que en el denominador usamos las variables que asignamos arriba? Lo chido de esto es que cada variable
que asignas la puedes ir reutilizando a lo largo del código. Si la casa de apuestas cambia el momio de algún equipo, solo vas a la linea donde declaraste la variable y cambias el valor. En lenguaje godín, sería equivalente a fijar el valor de una celda en las fórmulas de Excel.
```{r probImp, echo=TRUE}
# Probabilidad impĺicita Puebla
probImpPuebla <- 100 / victoriaPuebla
probImpPuebla
# Probabilidad impĺicita Empate
probImpEmpate <- 100 / empate
probImpEmpate
# Probabilidad impĺicita América
probImpAme <- 100 / victoriaAme
probImpAme
```
Sumando las probabilidades deberíamos obtener un número menor o igual a cien.
```{r probImpTotal, echo=TRUE}
probImpTotal <- probImpPuebla + probImpEmpate + probImpAme
probImpTotal
```
## Spread
El excedente de 100 es la ganancia de la casa de apuestas.
Para calcularlo restamos la probabilidad total de un evento seguro (100).
```{r spread, echo=TRUE}
spread <- probImpTotal - 100
spread
```
## Datos
En el post mencionamos que al revisar los datos, nos dimos cuenta que el América ahora tiene probabilidad del 60% de ganar. Por supuesto que no revise nada. No aún. En la parte 2 usaremos datos reales.
Vamos a inventar los resultados de los últimos 10 partidos que jugó el América. De hecho los inventaré yo. Te toca investigar cómo hacerlo de forma aleatoria.
Que flojera escribir partido por partido. Me mandas pull request <https://www.freecodecamp.org/espanol/news/como-hacer-tu-primer-pull-request-en-github/> cuando lo encuentres. Estaría muy chingón que contribuyeras al código.
Usamos 'c()' para concatenar datos. Pongamos valores para Ganado (G), Perdido (P) y Empate (E).
```{r datos, echo=TRUE}
partidosAme <- c('G', 'E', 'E', 'G', 'G', 'G', 'G' ,'P', 'G', 'P')
partidosAme
```
Te la puse fácil con 10 partidos. De un vistazo puedes contar que ha ganado 6 partidos de los 10 que ha jugado. Eso nos hace pensar que la probabilidad de victoria para el América es del 60%.
¿Muy fácil, no? ¿Y si tuvieras que contar los partidos que ha jugado a lo largo de una decada?
Tranqui, sale rápido si usamos 'table()'. Crea tablas de contingencia. Hágamoslo para que recuerdes que diablos eran esas tablas.
```{r table, echo=TRUE}
table(partidosAme)
```
Otra forma de contar es utilizando 'length()' que nos dira la longitud de un vector (así se le llama a los datos que juntamos con 'c()') y 'which()' que nos dira la posición que tiene un valor específico dentro de un vector empezando desde la posición 1.
```{r probReal, echo=TRUE}
# Número de partidos en nuestro vector
partidosJugadosAme <- length(partidosAme)
partidosJugadosAme
# Número de partidos ganados
partidosGanadosAme <- length(which(partidosAme=='G'))
partidosGanadosAme
# Probabilidad real multiplicada por 100
probRealAme <- (partidosGanadosAme / partidosJugadosAme) * 100
probRealAme
```
Ahora que ya tenemos un cálculo de la probabilidad basado en datos, comparemos con la probabilidad ímplicita para conocer si es apuesta de valor. Ya sé que eres muy crack y lo hiciste mentalmente. Lo bonito del código es que puedes reutilizarlo para analizar cualquier liga.
Usaremos operadores relacionales <https://bookdown.org/jboscomendoza/r-principiantes4/operadores-relacionales.html> para comparar.
Recuerda que **la única forma de ganar dinero a largo plazo en las apuestas es encontrando apuestas de valor. Dónde la probabilidad real es mayor a la probabilidad implícita.**
```{r operadores, echo=TRUE}
# Le preguntamos a R ¿La probabilidad real es mayor a la implícita?
probRealAme > probImpAme
```
## FIN
Espera, ¿Así de fácil? La gente pocas veces se toma el tiempo de pensar cómo funcionan las cosas. Si ya estás jugando a atinarle a lo incierto, pon los números de tu lado. Aunque los datos favorezcan a un equipo, cualquier cosa puede pasar que cambie el resultado final. No obstante, las matemáticas te favorecen por mucho si encuentras éste tipo de apuestas. La verdadera mágia detrás de esto es que sin meternos en muchas mates, encontraste **valor esperado positivo** <https://es.wikipedia.org/wiki/Esperanza_(matem%C3%A1tica)>. Calcularlo se sale del alcance de este post pero me encantaría ver tu pull request con tu código.
Un último tip. Si tienes duda de cómo se usa una función, escribe '?' y te abrirá la documentación.