######################################################
#            REGRESIÓN Y ANÁLISIS DE DATOS           #
######################################################


data.frame(airquality)
names(airquality)
airquality$Ozone
ind<-which(is.na(airquality$Ozone))
airquality$Ozone[-ind]

airquality$Temp

REGRESION<-lm(airquality$Ozone~airquality$Temp)
plot(REGRESION)
plot(airquality$Temp,airquality$Ozone)
abline(lm(airquality$Ozone~airquality$Temp))

######################################################
# 1.- Analizar la distribución univariante           #
######################################################
par(mfrow=c(1,2))
plot(ecdf(airquality$Ozone[-ind]),main="Ozono")
plot(ecdf(airquality$Temp),main="Temperatura")

par(mfrow=c(1,2))
plot(density(airquality$Ozone[-ind]),main="Ozono")
plot(density(airquality$Temp),main="Temperatura")

shapiro.test(airquality$Ozone[-ind])
shapiro.test(airquality$Temp)


length(airquality$Ozone)
length(airquality$Temp)

#--Serie de tiempo
Ozone<-ts(airquality$Ozone,frequency=30)
windows()
plot(Ozone, type="o", ylab="Ozono")

Temperatura<-ts(airquality$Temp,frequency=30)
windows()
plot(Temperatura, type="o", ylab="Temperatura")

summary(airquality$Ozone)
summary(airquality$Temp)


#######################################################
# 2.-Estimador local lineal                           #                         
#######################################################

K<-function(x){
return(1/sqrt(2*pi)*exp(-x^2/2))
}


S<-function(t,x,h,r){
#-- t vector de puntos donde se va a evaluar la función.
#-- x valores de la variable explicativa
#-- y valores de la variable respuesta    
#-- r exponente

    return(apply((K(outer(x,t,"-")/h))%*%(outer(x,t,"-")^r),1,sum))
}

EstLL<-function(t,x,y,h){
#-- Esta función me devuelve la estimación por el estimador noparamétrico de la
#-- regresión de Nadaraya-Watson
#-- t vector de puntos donde se va a evaluar la función.
#-- x valores de la variable explicativa
#-- y valores de la variable respuesta
#-- h ventana de suavizado
    
    
    return((K(outer(x,t,"-")/h)%*%S(t,x,h,2)-outer(x,t,"-")%*%S(x,t,h,1)/apply(K(outer(x,t,"-")/h)%*%S(t,x,h,2)-outer(x,t,"-")%*%S(x,t,h,1),1,sum))%*%y)
}
