library(MASS)
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.3.2
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
bikeData <- read.csv("hour.csv", na.strings=FALSE, strip.white=TRUE);
#estaciones
bikeSpring <- bikeData %>% dplyr::select(season, temp, hum, cnt) %>% filter(season==1)
bikeSummer <- bikeData %>% dplyr::select(season, temp, hum, cnt) %>% filter(season==2)
bikeFall   <- bikeData %>% dplyr::select(season, temp, hum, cnt) %>% filter(season==3)
bikeWinter <- bikeData %>% dplyr::select(season, temp, hum, cnt) %>% filter(season==4)

#densidades: x1 = temp, x2 = hum
dSpring <- kde2d(x = bikeSpring$temp, y = bikeSpring$hum, n = 100)
dSummer <- kde2d(x = bikeSummer$temp, y = bikeSummer$hum, n = 100)
dFall   <- kde2d(x = bikeFall$temp,   y = bikeFall$hum,   n = 100)
dWinter <- kde2d(x = bikeWinter$temp, y = bikeWinter$hum, n = 100)
dSpring$z <- dSpring$z/sum(dSpring$z)
dSummer$z <- dSummer$z/sum(dSummer$z)
dFall$z   <- dFall$z/sum(dFall$z)
dWinter$z <- dWinter$z/sum(dWinter$z)

#densidades: x3 = cnt, x1 = temp
cSpring <- kde2d(x = bikeSpring$cnt, y = bikeSpring$temp, n = 100)
cSummer <- kde2d(x = bikeSummer$cnt, y = bikeSummer$temp, n = 100)
cFall   <- kde2d(x = bikeFall$cnt,   y = bikeFall$temp,   n = 100)
cWinter <- kde2d(x = bikeWinter$cnt, y = bikeWinter$temp, n = 100)
cSpring$z <- cSpring$z/sum(cSpring$z)
cSummer$z <- cSummer$z/sum(cSummer$z)
cFall$z   <- cFall$z/sum(cFall$z)
cWinter$z <- cWinter$z/sum(cWinter$z)

1. P(x1 < 0.7 | x2 = 0.6 intersection s1)

No hay columna con 0.6, elegir una similar

x1 <- dSpring$x < 0.7
x2 <- (dSpring$y > 0.59 & dSpring$y < 0.61)
sum(dSpring$z[x1,x2])
## [1] 0.03278237

2. P(x1 < 0.7 | x2 = 0.6 intersection s2)

No hay columna con 0.6, elegir una similar

x1 <- dSummer$x < 0.7
x2 <- (dSummer$y > 0.59 & dSummer$y < 0.61)
sum(dSummer$z[x1,x2])
## [1] 0.02978353

3. P(x1 < 0.7 | x2 = 0.6 intersection s3)

No hay columna con 0.6, elegir una similar

x1 <- dFall$x < 0.7
x2 <- (dFall$y > 0.59 & dFall$y < 0.61)
sum(dFall$z[x1,x2])
## [1] 0.01524592

4. P(x1 < 0.7 | x2 = 0.6 intersection s4)

No hay columna con 0.6, elegir una similar

x1 <- dWinter$x < 0.7
x2 <- (dWinter$y > 0.59 & dWinter$y < 0.61)
sum(dWinter$z[x1,x2])
## [1] 0.04409967

5. P(x3 > 142 | x1 = 0.6 intersection s2)

No hay columna con 0.6, elegir una similar

x3 <- cSummer$x > 142
x1 <- (cSummer$y > 0.59 & cSummer$y < 0.61)
sum(cSummer$z[x3,x1])
## [1] 0.04484594

6. P(x3 > 142 | x1 = 0.6 intersection s4)

No hay columna con 0.6, elegir una similar

x3 <- cWinter$x > 142
x1 <- (cWinter$y > 0.59 & cWinter$y < 0.61)
sum(cWinter$z[x3,x1])
## [1] 0.02779899
temp <- matrix(rep(dSpring$x,100),nrow=100)
hum <- matrix(rep(dSpring$y,100),nrow=100,byrow=TRUE)

7. E[x1], E[x2], V[x1], V[x2]

spring

temp <- matrix(rep(dSpring$x,100),nrow=100) #cada fila tiene un solo valor, repetido
hum <- matrix(rep(dSpring$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido

# E[x1]
sum(temp*dSpring$z)
## [1] 0.2991682
# E[x2]
sum(hum*dSpring$z)
## [1] 0.5791163
# V[x1]
sum((temp*temp)*dSpring$z) - sum((temp*dSpring$z)*(temp*dSpring$z))
## [1] 0.1037561
# V[x2]
sum((hum*hum)*dSpring$z) - sum((hum*dSpring$z)*(hum*dSpring$z))
## [1] 0.3743206

summer

temp <- matrix(rep(dSummer$x,100),nrow=100) #cada fila tiene un solo valor, repetido
hum <- matrix(rep(dSummer$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido

# E[x1]
sum(temp*dSummer$z)
## [1] 0.5459477
# E[x2]
sum(hum*dSummer$z)
## [1] 0.623585
# V[x1]
sum((temp*temp)*dSummer$z) - sum((temp*dSummer$z)*(temp*dSummer$z))
## [1] 0.3179421
# V[x2]
sum((hum*hum)*dSummer$z) - sum((hum*dSummer$z)*(hum*dSummer$z))
## [1] 0.4305863

fall

temp <- matrix(rep(dFall$x,100),nrow=100) #cada fila tiene un solo valor, repetido
hum <- matrix(rep(dFall$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido

# E[x1]
sum(temp*dFall$z)
## [1] 0.7067466
# E[x2]
sum(hum*dFall$z)
## [1] 0.6321321
# V[x1]
sum((temp*temp)*dFall$z) - sum((temp*dFall$z)*(temp*dFall$z))
## [1] 0.5083733
# V[x2]
sum((hum*hum)*dFall$z) - sum((hum*dFall$z)*(hum*dFall$z))
## [1] 0.4317608

winter

temp <- matrix(rep(dWinter$x,100),nrow=100) #cada fila tiene un solo valor, repetido
hum <- matrix(rep(dWinter$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido

# E[x1]
sum(temp*dWinter$z)
## [1] 0.4224813
# E[x2]
sum(hum*dWinter$z)
## [1] 0.6629364
# V[x1]
sum((temp*temp)*dWinter$z) - sum((temp*dWinter$z)*(temp*dWinter$z))
## [1] 0.1938805
# V[x2]
sum((hum*hum)*dWinter$z) - sum((hum*dWinter$z)*(hum*dWinter$z))
## [1] 0.4710746

8. E[x1], E[x3], V[x1], V[x3]

spring

temp <- matrix(rep(cSpring$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido (las temperaturas nos quedaron como y)
cnt <- matrix(rep(cSpring$x,100),nrow=100) #cada fila tiene un solo valor, repetido (los count nos quedaron como x)

# E[x1]
sum(temp*cSpring$z)
## [1] 0.3033282
# E[x3]
sum(cnt*cSpring$z)
## [1] 121.5682
# V[x1]
sum((temp*temp)*cSpring$z) - sum((temp*cSpring$z)*(temp*cSpring$z))
## [1] 0.1062909
# V[x3]
sum((cnt*cnt)*cSpring$z) - sum((cnt*cSpring$z)*(cnt*cSpring$z))
## [1] 28941.48

summer

temp <- matrix(rep(cSummer$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido (las temperaturas nos quedaron como y)
cnt <- matrix(rep(cSummer$x,100),nrow=100) #cada fila tiene un solo valor, repetido (los count nos quedaron como x)

# E[x1]
sum(temp*cSummer$z)
## [1] 0.5512044
# E[x3]
sum(cnt*cSummer$z)
## [1] 228.3579
# V[x1]
sum((temp*temp)*cSummer$z) - sum((temp*cSummer$z)*(temp*cSummer$z))
## [1] 0.3234436
# V[x3]
sum((cnt*cnt)*cSummer$z) - sum((cnt*cSummer$z)*(cnt*cSummer$z))
## [1] 86887.19

fall

temp <- matrix(rep(cFall$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido (las temperaturas nos quedaron como y)
cnt <- matrix(rep(cFall$x,100),nrow=100) #cada fila tiene un solo valor, repetido (los count nos quedaron como x)

# E[x1]
sum(temp*cFall$z)
## [1] 0.7110093
# E[x3]
sum(cnt*cFall$z)
## [1] 254.6409
# V[x1]
sum((temp*temp)*cFall$z) - sum((temp*cFall$z)*(temp*cFall$z))
## [1] 0.5144196
# V[x3]
sum((cnt*cnt)*cFall$z) - sum((cnt*cFall$z)*(cnt*cFall$z))
## [1] 102650.6

winter

temp <- matrix(rep(cWinter$y,100),nrow=100,byrow=TRUE) #cada columna tiene un solo valor, repetido (las temperaturas nos quedaron como y)
cnt <- matrix(rep(cWinter$x,100),nrow=100) #cada fila tiene un solo valor, repetido (los count nos quedaron como x)

# E[x1]
sum(temp*cWinter$z)
## [1] 0.427175
# E[x3]
sum(cnt*cWinter$z)
## [1] 217.2567
# V[x1]
sum((temp*temp)*cWinter$z) - sum((temp*cWinter$z)*(temp*cWinter$z))
## [1] 0.1976867
# V[x3]
sum((cnt*cnt)*cWinter$z) - sum((cnt*cWinter$z)*(cnt*cWinter$z))
## [1] 79890.71

9. Covarianzas temp vs hum

cov(dSpring$x, dSpring$y)
## [1] 0.06011291
cov(dSummer$x, dSummer$y)
## [1] 0.05626569
cov(dFall$x,   dFall$y  )
## [1] 0.04472401
cov(dWinter$x, dWinter$y)
## [1] 0.04472401

10. Covarianzas temp vs cnt

cov(cSpring$x, cSpring$y)
## [1] 48.09033
cov(cSummer$x, cSummer$y)
## [1] 64.03571
cov(cFall$x,   cFall$y  )
## [1] 51.96504
cov(cWinter$x, cWinter$y)
## [1] 51.43261