Guest User

Untitled

a guest
Oct 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. gg.mixEM <- function(EM) {
  2. require(ggplot2)
  3. x <- with(EM,seq(min(x),max(x),len=1000))
  4. pars <- with(EM,data.frame(comp=colnames(posterior), mu, sigma,lambda))
  5. em.df <- data.frame(x=rep(x,each=nrow(pars)),pars)
  6. em.df$y <- with(em.df,lambda*dnorm(x,mean=mu,sd=sigma))
  7. ggplot(data.frame(x=EM$x),aes(x,y=..density..)) +
  8. geom_histogram(fill=NA,color="grey")+
  9. geom_path(data=em.df,aes(x,y,color=comp),alpha=1)+
  10. scale_color_discrete("Component\nMeans",labels=format(em.df$mu,digits=3))+
  11. theme_bw()
  12. }
  13.  
  14. intersect <- function(m1, sd1, m2, sd2, p1, p2){
  15. B <- (m1/sd1^2 - m2/sd2^2)
  16. A <- 0.5*(1/sd2^2 - 1/sd1^2)
  17. C <- 0.5*(m2^2/sd2^2 - m1^2/sd1^2) - log((sd1/sd2)*(p2/p1))
  18.  
  19. if (A!=0){
  20. (-B + c(1,-1)*sqrt(B^2 - 4*A*C))/(2*A)
  21. } else {-C/B}
  22. }
  23.  
  24. library(mixtools)
  25.  
  26. tauvals=pbpastex()$V1
  27.  
  28. tauvals.nona = as.numeric(tauvals[!is.na(as.numeric(tauvals))])
  29. mixmodel = normalmixEM(tauvals.nona)
  30.  
  31. intersect_point = intersect(mixmodel$mu[1],mixmodel$sigma[1],mixmodel$mu[2],mixmodel$sigma[2],mixmodel$lambda[1],mixmodel$lambda[2])[2]
  32.  
  33. gg.mixEM(mixmodel)
  34. +geom_vline(xintercept=intersect_point)
  35. +ggtitle(paste("Cutoff",intersect_point))
  36. +geom_path(data=data.frame(x=tauvals.nona),aes(x=x),stat="density",linetype="dotted")
Add Comment
Please, Sign In to add comment