Sunteți pe pagina 1din 5

###Lectura de los datos

data = read.table("G:/OP/datos2014.txt", header = T)sample<-data.frame(y=data)

## instalar y cargar la libreria depmixS4

library(depmixS4)

## ajustar un modelo oculto de markov con 1, 2, 3, 4, 5, 6, 7 estados con observaciones


gausianas

m1<-depmix(y.Sureste~1, data=sample, ns=1, ntimes=nrow(sample))


fm1<-fit(m1, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))

m2<-depmix(y.Sureste~1, data=sample, ns=2, ntimes=nrow(sample))


fm2<-fit(m2, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))

m3<-depmix(y.Sureste~1, data=sample, ns=3, ntimes=nrow(sample))


fm3<-fit(m3, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))

m4<-depmix(y.Sureste~1, data=sample, ns=4, ntimes=nrow(sample))


fm4<-fit(m4, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))

m5<-depmix(y.Sureste~1, data=sample, ns=5, ntimes=nrow(sample))


fm5<-fit(m5, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))

m6<-depmix(y.Sureste~1, data=sample, ns=6, ntimes=nrow(sample))


fm6<-fit(m6, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))

m7<-depmix(y.Sureste~1, data=sample, ns=7, ntimes=nrow(sample))


fm7<-fit(m7, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))

### determinar cual es el mejor modelo

bic<-c(BIC(fm2), BIC(fm3), BIC(fm4), BIC(fm5), BIC(fm6), BIC(fm7))

which.min(bic)

aic<-c(AIC(fm1), AIC(fm2), AIC(fm3), AIC(fm4), AIC(fm5), AIC(fm6), AIC(fm7))

which.min(aic)

## parametros del modelo seleccionado, ejemplo donde se selecciono el modelo HMM con
dos estados
summary(fm3)

### Numero de observaciones en cada estado, rango de las distribuciones asociadas a cada
estado, probabilidad de ocurrencia de cada estado.

probs<-posterior(fm3)
table(probs[,1])

probs<- cbind(probs,sample)

first<-which(probs$state==1)
second<-which(probs$state==2)
third<-which(probs$state==3)

range(probs$y.Sureste [first],na.rm=TRUE)
range(probs$ y.Sureste[second],na.rm=TRUE)
range(probs$ y.Sureste[third],na.rm=TRUE)

apply(probs[,2:4],2,mean)

## ejemplo de grafica del modelo de markov oculto ajustado en la zona


sureste, es un hmm con 3 estados

## histograma de los datos

hist(sample$y.Sureste, nclass=13, freq=FALSE, ylim=c(0,0.06),col="light


grey",lwd=0.001, pch=0.1, bg=5, lty=3, fg=1, main="C", xlab="Ozono",
ylab="densidad")

## grafico de la densidad ajustada al primer estado

x <- seq(-20,20,by=.1)

curve(0.37*dnorm(x, mean=23.21, sd=5.63), col ="red", lty = 1, lwd = 1,add=TRUE)


points(23.21, 0, type= "p", col="red", lwd=4)

## grafico de la densidad del Segundo estado

curve(0.42*dnorm(x, mean=34.84, sd=5.01), col ="blue", lty = 1, lwd = 1,add=TRUE)


points(34.84, 0, type= "p", col="blue", lwd=4)
## grafico de la densidad del tercer estado

curve(0.20*dnorm(x, mean=48.55, sd=7.23), col ="green", lty = 1, lwd = 1,add=TRUE)


points(48.55, 0, type= "p", col="green", lwd=4)

legend("topright",col=c("red","blue", green ),lty=1,lwd=2,legend=c( "Primer estado","Segundo


estado",tercer estado), bty="n")

points(29.04,0, type= "p",pch=5, col="black", lwd=2)


boxplot(k, horizontal = TRUE, outline = TRUE, ylim = c(0, 60), frame = FALSE,
col= "green1", add = TRUE)

points(30.25, 0, type= "p", col="blue", lwd=4)

##grafico de la function de densidad mezcla de las densidades en los estados

curve(0.37*dnorm(x, mean=23.21, sd=5.63)+ 0.42*dnorm(x, mean=34.84,


sd=5.01)+0.20*dnorm(x, mean=48.55, sd=7.23),col ="black", lty = 1, lwd = 1,add=TRUE)

text(21.338,0.002,m1,cex=0.5,col=red)

text(36.167,0.002,m2,cex=0.5,col=blue)
text(29.04,0.003,M,cex=0.5,col=black)

##Ejemplo de grafico de la trayectoria de los posibles estados de la cadena de markov,


corresponde a seleccionar un hmm con 2 estados

plot(sample$y.Sureste, type="h", main="A", xlab="dias", ylab="Ozono")

for(i in 1:nrow(sample)){
if(probs$state[i]==2)
text(i, sample$y.Sureste[i]+1, probs$state[i],cex=0.5, col="blue" )
if(probs$state[i]==1)
text(i, sample$y.Sureste[i]+1, probs$state[i],cex=0.5, col="red" )

abline(h=23.21, col="red", lty=1, lwd=1)


text(375, 24, "m1",cex=0.9, col="red" )

abline(h=34.84, col="blue", lty=1, lwd=1)


text(375, 35, "m2",cex=0.9, col="blue" )

abline(h=48.55, col="green", lty=1, lwd=1)


text(375, 49, "m3",cex=0.9, col="green" )

abline(h=33.23, col="black", lty=1, lwd=1)


text(375, 34, "M",cex=0.9, col="black" )

legend(0,70,col=c("red","blue", green ),lty=1,lwd=2,legend=c("Primer estado","Segundo


estado",Tercer estado), bty="n")

##Ajuste de un hmm con observaciones gamma

## lectura de datos
data = read.table("G:/OP/datos1998.txt", header = T)
sample<-data.frame(y=data)

## cargar el paquete

library(depmixS4)

##ajuste de los modelos hmm con 1, 2, 3, 4, 5, 6, 7 estados observaciones gamma

m1<-depmix(y.Noroeste~1, data=sample, ns=1,family=Gamma("identity"),


respstar=c(0.6), ntimes=nrow(sample))
fm1<-fit(m1, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))
m2<-depmix(y.Noroeste~1, data=sample, ns=2,family=Gamma("identity"),
respstar=c(0.6,0.8), ntimes=nrow(sample))
fm2<-fit(m2, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))
m3<-depmix(y.Noroeste~1, data=sample, ns=3,family=Gamma("identity"),
respstar=c(0.6,0.8, 1), ntimes=nrow(sample))
fm3<-fit(m3, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))
m4<-depmix(y.Noroeste~1, data=sample, ns=4,family=Gamma("identity"),
respstar=c(0.6,0.8, 1,1), ntimes=nrow(sample))
fm4<-fit(m4, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))
m5<-depmix(y.Noroeste~1, data=sample, ns=5,family=Gamma("identity"),
respstar=c(0.6,0.8, 1,1,1), ntimes=nrow(sample))
fm5<-fit(m5, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))
m6<-depmix(y.Noroeste~1, data=sample, ns=6,family=Gamma("identity"),
respstar=c(0.6,0.8, 1,1,1,1), ntimes=nrow(sample))
fm6<-fit(m6, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))
m7<-depmix(y.Noroeste~1, data=sample, ns=7,family=Gamma("identity"),
respstar=c(0.6,0.8, 1,1,1,1,1), ntimes=nrow(sample))
fm7<-fit(m7, em=em.control(maxit=2000, tol=0.00000001,crit="relative"))
bic<-c(BIC(fm1), BIC(fm2), BIC(fm3), BIC(fm4), BIC(fm5), BIC(fm6), BIC(fm7))
which.min(bic)
### resumen de los parametros

summary(fm3)

## probabilidad de cada estado, numero de observaciones en cada estado, rango de las


densidades asociadas a cada estado

probs<-posterior(fm3)
table(probs[,1])
probs<- cbind(probs,sample)

first<-which(probs$state==1)
second<-which(probs$state==2)
third<-which(probs$state==3)

range(probs$y.Noroeste [first],na.rm=TRUE)
range(probs$ y.Noroeste [second],na.rm=TRUE)
range(probs$ y.Noroeste [third],na.rm=TRUE)
apply(probs[,2:4],2,mean)

## calculo de las varianzas, parametros de forma y escala de las densidades gamma

varianza1<-var(probs$y.Noroeste [first])
desviacionesta1<-sqrt(var(probs$y.Noroeste [first]))
escala1<-varianza1/media1
forma1<-media1/escala1

varianza2<-var(probs$y.Noroeste [second])
desviacionesta2<-sqrt(var(probs$y.Noroeste [second]))
escala2<-varianza2/media2
forma2<-media2/escala2

varianza3<-var(probs$y.Noroeste [third])
desviacionesta3<-sqrt(var(probs$y.Noroeste [third]))
escala3<-varianza3/media3
forma3<-media3/escala3

desviacionesta1
desviacionesta2
desviacionesta3
escala1
escala2
escala3
forma1
forma2
forma3

S-ar putea să vă placă și