Brayan Ivan Cruz Corona
Importamos las librerias necesarias:
library(rmarkdown)
library(dplyr)
library(MASS)
Importamos la base de datos:
biciDB <-
read.csv("hour.csv", na.strings = FALSE, strip.white = TRUE)
- Análisis unidimensional: Dado un par de valores contenidos en la función de probabilidad conjunta y un valor de longitud, determinar la probabilidad contenida sobre la línea que se forma en el eje x y en el eje y del punto.
La ecuacion de la recta dados dos puntos es la siguiente:
m = (Y2-Y1)/(X2-X1) y-Y1 = m (x -X1)
Siendo los puntos P1 = (a,b) = (2,1) ; P2 = (c,d) = (5,3)
a <- 2
b <- 1
c <- 5
d <- 3
Punto auxiliar P3 = (c,b) = (5,1)
m <- (a-c)/(b-d)
Se verifica que la densidad = 1
bici_densityA <- kde2d(biciDB$atemp,biciDB$hum, n=100)
bici_densityA$z <- bici_densityA$z/sum(bici_densityA$z)
sum(bici_densityA$z)
[1] 1
Utilizando la ecuacion de la recta: usando punto (a,b) = (2,1)
trianguloEje_x <- bici_densityA$x >= a & bici_densityA$x <= c
trianguloEje_y <- bici_densityA$y <= d & bici_densityA$y >= b & bici_densityA$y <= (m*(bici_densityA$x - a) + b)
La probabilidad por lo tanto es:
bici_densityA$z[trianguloEje_x, trianguloEje_y] %>% sum()
[1] 0
- Análisis Bidimensional: Dado un par de valores contenidos en la función de densidad conjunta (𝑥∗, 𝑦∗) y un valor cualquier que representa el radio de un circulo con centro (𝑥∗, 𝑦∗) construir una función/mecanismo en R que permita calcular la probabilidad del circulo formado con estos parámetros.
Al ser un circulo tenemos que cumplir con la siguiente ecuacion:
Establecemos los puntos y el radio. Como ejemplo utilizare el punto (h,k) = (0,0) de r = 1
h <- 0
k <- 0
r <- 1
Verificamos que la densidad sea 1. Se utilizan 1000 puntos interpolados.
bici_density <- kde2d(biciDB$atemp,biciDB$hum, n=100)
bici_density$z <- bici_density$z/sum(bici_density$z)
sum(bici_density$z)
[1] 1
Utilizando la ecuacion antes mencionada del circulo, obtenemos que:
FiltroEje_x <- bici_density$x >= (h-r) & bici_density$x <= (h + r)
FiltroEje_y <- bici_density$y >= k-sqrt(r**2-(bici_density$x-h)**2) & bici_density$y <= k+sqrt(r**2-(bici_density$x-h)**2)
Por ultimo, obtenemos la probabilidad dentro del circulo:
bici_density$z[FiltroEje_x, FiltroEje_y] %>% sum()
[1] 0.6373346
LS0tCnRpdGxlOiAiTGFib3JhdG9yaW8gIzEiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIyBFc3RhZGlzdGljYSBBcGxpY2FkYSBhIGxhIFRlb3JpYSBkZSBEZWNpc2lvbmVzIElJCiMjIyBCcmF5YW4gSXZhbiBDcnV6IENvcm9uYQoKSW1wb3J0YW1vcyBsYXMgbGlicmVyaWFzIG5lY2VzYXJpYXM6CgpgYGB7cn0KbGlicmFyeShybWFya2Rvd24pCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoTUFTUykKYGBgCgpJbXBvcnRhbW9zIGxhIGJhc2UgZGUgZGF0b3M6CgpgYGB7cn0KYmljaURCIDwtIAogIHJlYWQuY3N2KCJob3VyLmNzdiIsIG5hLnN0cmluZ3MgPSBGQUxTRSwgc3RyaXAud2hpdGUgPSBUUlVFKQpgYGAKCgoxKSBBbsOhbGlzaXMgdW5pZGltZW5zaW9uYWw6IERhZG8gdW4gcGFyIGRlIHZhbG9yZXMgY29udGVuaWRvcyBlbiBsYSBmdW5jacOzbiBkZSBwcm9iYWJpbGlkYWQgY29uanVudGEgeSB1biB2YWxvciBkZSBsb25naXR1ZCwgZGV0ZXJtaW5hciBsYSBwcm9iYWJpbGlkYWQgY29udGVuaWRhIHNvYnJlIGxhIGzDrW5lYSBxdWUgc2UgZm9ybWEgZW4gZWwgZWplIHggeSBlbiBlbCBlamUgeSBkZWwgcHVudG8uIAoKIVtSZWN0YSBxdWUgcGFzYSBwb3IgZG9zIHB1bnRvc10oZWNSZWN0YS5qcGcpCkxhIGVjdWFjaW9uIGRlIGxhIHJlY3RhIGRhZG9zIGRvcyBwdW50b3MgZXMgbGEgc2lndWllbnRlOgoKbSA9IChZMi1ZMSkvKFgyLVgxKQp5LVkxID0gbSAoeCAtWDEpCgpTaWVuZG8gbG9zIHB1bnRvcyBQMSA9IChhLGIpID0gKDIsMSkgOyBQMiA9IChjLGQpID0gKDUsMykKCmBgYHtyfQphIDwtIDIKYiA8LSAxCmMgPC0gNQpkIDwtIDMKYGBgCgpQdW50byBhdXhpbGlhciBQMyA9IChjLGIpID0gKDUsMSkKYGBge3J9Cm0gPC0gKGEtYykvKGItZCkKYGBgClNlIHZlcmlmaWNhIHF1ZSBsYSBkZW5zaWRhZCA9IDEKYGBge3J9CmJpY2lfZGVuc2l0eUEgPC0ga2RlMmQoYmljaURCJGF0ZW1wLGJpY2lEQiRodW0sIG49MTAwKQpiaWNpX2RlbnNpdHlBJHogPC0gYmljaV9kZW5zaXR5QSR6L3N1bShiaWNpX2RlbnNpdHlBJHopIApzdW0oYmljaV9kZW5zaXR5QSR6KQpgYGAKClV0aWxpemFuZG8gbGEgZWN1YWNpb24gZGUgbGEgcmVjdGE6IHVzYW5kbyBwdW50byAoYSxiKSA9ICgyLDEpCgpgYGB7cn0KdHJpYW5ndWxvRWplX3ggPC0gYmljaV9kZW5zaXR5QSR4ID49IGEgJiBiaWNpX2RlbnNpdHlBJHggPD0gYyAKdHJpYW5ndWxvRWplX3kgPC0gYmljaV9kZW5zaXR5QSR5IDw9IGQgJiBiaWNpX2RlbnNpdHlBJHkgPj0gYiAmIGJpY2lfZGVuc2l0eUEkeSA8PSAobSooYmljaV9kZW5zaXR5QSR4IC0gYSkgKyBiKQpgYGAKCkxhIHByb2JhYmlsaWRhZCBwb3IgbG8gdGFudG8gZXM6CgpgYGB7cn0KYmljaV9kZW5zaXR5QSR6W3RyaWFuZ3Vsb0VqZV94LCB0cmlhbmd1bG9FamVfeV0gJT4lIHN1bSgpCmBgYApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgoyKSBBbsOhbGlzaXMgQmlkaW1lbnNpb25hbDogRGFkbyB1biBwYXIgZGUgdmFsb3JlcyBjb250ZW5pZG9zIGVuIGxhIGZ1bmNpw7NuIGRlIGRlbnNpZGFkIGNvbmp1bnRhICjwnZGl4oiXLCDwnZGm4oiXKSB5IHVuIHZhbG9yIGN1YWxxdWllciBxdWUgcmVwcmVzZW50YSBlbCByYWRpbyBkZSB1biBjaXJjdWxvIGNvbiBjZW50cm8gKPCdkaXiiJcsIPCdkabiiJcpIGNvbnN0cnVpciB1bmEgZnVuY2nDs24vbWVjYW5pc21vIGVuIFIgcXVlIHBlcm1pdGEgY2FsY3VsYXIgbGEgcHJvYmFiaWxpZGFkIGRlbCBjaXJjdWxvIGZvcm1hZG8gY29uIGVzdG9zIHBhcsOhbWV0cm9zLgoKQWwgc2VyIHVuIGNpcmN1bG8gdGVuZW1vcyBxdWUgY3VtcGxpciBjb24gbGEgc2lndWllbnRlIGVjdWFjaW9uOgoKIVtFY3VhY2lvbiBkZSB1bmEgY2lyY3VuZmVyZW5jaWFdKGVjQ2lyLnBuZykKCkVzdGFibGVjZW1vcyBsb3MgcHVudG9zIHkgZWwgcmFkaW8uIENvbW8gZWplbXBsbyB1dGlsaXphcmUgZWwgcHVudG8gKGgsaykgPSAoMCwwKSBkZSByID0gMQoKYGBge3J9CmggPC0gMAprIDwtIDAKciA8LSAxCmBgYAoKVmVyaWZpY2Ftb3MgcXVlIGxhIGRlbnNpZGFkIHNlYSAxLiBTZSB1dGlsaXphbiAxMDAwIHB1bnRvcyBpbnRlcnBvbGFkb3MuCgpgYGB7cn0KYmljaV9kZW5zaXR5IDwtIGtkZTJkKGJpY2lEQiRhdGVtcCxiaWNpREIkaHVtLCBuPTEwMCkKYmljaV9kZW5zaXR5JHogPC0gYmljaV9kZW5zaXR5JHovc3VtKGJpY2lfZGVuc2l0eSR6KSAKc3VtKGJpY2lfZGVuc2l0eSR6KQpgYGAKClV0aWxpemFuZG8gbGEgZWN1YWNpb24gYW50ZXMgbWVuY2lvbmFkYSBkZWwgY2lyY3Vsbywgb2J0ZW5lbW9zIHF1ZToKCmBgYHtyfQpGaWx0cm9FamVfeCA8LSBiaWNpX2RlbnNpdHkkeCA+PSAoaC1yKSAmIGJpY2lfZGVuc2l0eSR4IDw9IChoICsgcikgCkZpbHRyb0VqZV95IDwtIGJpY2lfZGVuc2l0eSR5ID49IGstc3FydChyKioyLShiaWNpX2RlbnNpdHkkeC1oKSoqMikgJiBiaWNpX2RlbnNpdHkkeSA8PSBrK3NxcnQocioqMi0oYmljaV9kZW5zaXR5JHgtaCkqKjIpCmBgYAoKUG9yIHVsdGltbywgb2J0ZW5lbW9zIGxhIHByb2JhYmlsaWRhZCBkZW50cm8gZGVsIGNpcmN1bG86CgpgYGB7cn0KYmljaV9kZW5zaXR5JHpbRmlsdHJvRWplX3gsIEZpbHRyb0VqZV95XSAlPiUgc3VtKCkKYGBgCgoK