Giter Club home page Giter Club logo

mixtools's Introduction

mixtools: Tools for Analyzing Finite Mixture Models

Lifecycle: stable CRAN/METACRAN CRAN status Dependencies GitHub last commit Downloads JSS HAL

Synopsis

The mixtools package provides functions for analyzing finite mixture models. Parametric and semiparametric mixture models are handled. Various tools are include for determining the number of components. Visualizations include histograms with the estimated mixture model overlaid, 2D and 3D scatterplots for relevant mixture fits, and the mixturegram. More details about the package are included in both the original JSS article as well as a technical report on the open archive HAL.

Other highlights:

  • Includes estimation of various parametric and semiparametric mixtures-of-regressions models.

  • Functions to help with determining the number of components, including bootstrapping the likelihood ratio test statistic, mixturegrams, and model selection criteria.

  • Functions available for estimating Reliability Mixture Models (RMMs).

  • Includes a Metropolis-Hastings algorithm for estimating a mixture-of-linear-regressions model.

  • Includes some real datasets for which mixture models have been shown to provide good fits.

Documentation

The JSS article and the technical report on HAL both provide documentation about the mixtools package. Moreover, the help file also documents the references used for each function.

Examples

Additional examples for the mixtools package are currently being developed for a Shiny app.

Installation

Released and tested versions of mixtools are available via the CRAN network, and can be installed from within R via

install.packages("mixtools")

Support

The issue tickets at the GitHub repo are the primary bug reporting interface. As with the other web resources, previous issues can be searched as well.

Authors

Derek S. Young, Tatiana Benaglia, Didier Chauveau, David Hunter, Kedai Cheng, Ryan Elmore, Thomas Hettmansperger, Hoben Thomas, Fengjuan Xua

License

GPL (>= 2)

Funding Acknowledgment

This package is based upon work supported by the National Science Foundation, Grant Number SES-0518772 and the Chan Zuckerberg Initiative, Grant Number 2020-225193.

Code of Conduct

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. Both contributors and maintainers must consistently demonstrate acceptable behavior, respectful communications, and professional conduct. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. By contributing to this project, you agree to abide by its terms.

We are here for a love of coding and a passion for cultivating knowledge. Let us enjoy this collaboration together!

mixtools's People

Contributors

dsy109 avatar kedai-cheng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

mixtools's Issues

Testing updated plotting functions

@drh20drh20 Recently, @Kedai-Cheng has uploaded testable versions of updated graphics functions for mixtools. These are located under the branch he created. I believe you were a developer, or at least a contributor, for some of the original functions. When convenient, would you please have a look at the updated functions listed below to see if they are consistent with the desired output of the original functions? Please inform us of bugs as well as noting any additional functionality you would like to see. Note that we have not settled on an official naming convention for these updated functions. Thanks.

plotly.FDR.R
plotly.npEM.R
plotly.spEMN01.R
plotlyexpRMM.R
plotlyseq.npEM.R
plotlyspRMM.R
plotlyweibullRMM.R

Seldom error in mvnormalmixEM

When using mvnormalmixEM I encountered the error error in qr.solve(a) : singular matrix 'a' in solve. It occurs rather rarely.

The error can be reproduced with the following example:

library(mixtools)

set.seed(6)
rn = rbind(rmvnorm(n = 18, mu = c(0, 0), sigma = diag(2)),  rmvnorm(n = 2, mu = c(3, 3), sigma = diag(2)))
set.seed(17)
mvnormalmixEM(rn)

The error occurs only with certain seeds. Changing the second seed to 1, for example, works fine. Perhaps it would be useful to restart the algorithm when an error occurs.

Predicting locally adaptive mixing proportion for new data

After fitting the model with in-sample data,
regmixEM.loc(rnorm(100),rnorm(100),kern.l = c("Gaussian"),k=2)
is there a way to predict the locally adaptive mixing proportion for new data rnorm(10)? The returned value of the function is only for the I'm-sample data.

Fixing of mixing weights in the normalmixEM() function of mixtools

Hi,

Thanks a lot for this useful package!

I am using the mixtools package to fix a mixture of 4 normals with the normalmixEM() function (in the context of validating potential surrogate biomarkers; this methodology will be implemented in the Surrogate R package).

In the normalmixEM() function, the lambda parameters can be specified as starting values for the mixing weights in the EM algorithm. I wonder whether it is possible to ‘fix’ these mixing weights. So for example, is there a way to fix e.g., lambda=c(.5, .3, .2., .1) such that the 4 obtained normal components will have exactly these mixings weights?

Thanks for your consideration,

Best regards,
Wim Van der Elst

regmixEM.loc does not work when 'x' is a matrix

Hi! Thanks for this awesome package!

I was trying to run regmixEM.loc and maybe I have misinterpreted the documentation.

Documentation shows that x is An nxp matrix of predictors. See addintercept below: link.

However, if we try to run the example with a matrix, it throws an error:

library(mixtools)
#> mixtools package, version 1.2.0, Released 2020-02-05
#> This package is based upon work supported by the National Science Foundation under Grant No. SES-0518772.
data(NOdata)

# works
res <- regmixEM.loc(NOdata$Equivalence, NOdata$NO)
#> number of overall iterations= 10

# does not work, but x is a nxp matrix, with p=1
res <- regmixEM.loc(NOdata$Equivalence, as.matrix(NOdata[,c("NO")]))
#> Error in W * X.mat: arrays de dimensão não compatível

Created on 2022-11-23 with reprex v2.0.2

This error occurs inside the mixtools:::lambda function, this line

The error also occurs when we try with $p&gt;1$:

library(mixtools)
#> mixtools package, version 1.2.0, Released 2020-02-05
#> This package is based upon work supported by the National Science Foundation under Grant No. SES-0518772.
data(NOdata)


NOdata$random <- runif(nrow(NOdata))

# does not work, but x is a nxp matrix, with p=2
res <- regmixEM.loc(NOdata$Equivalence, as.matrix(NOdata[,c("NO", "random")]))
#> Error in W * X.mat: arrays de dimensão não compatível

Created on 2022-11-23 with reprex v2.0.2

Thanks!

Errror with normalmixEM and specific random seeds

With the data from #7, I get an error when running normalmixEM with specific random seeds:

d = readRDS("1k_vector_for_normalmixEM.rds")
s = 2028
set.seed(s)
mixmdl = normalmixEM(d, k=2, fast=T, verb=T)


iteration = 1  log-lik diff = 2542.07  log-lik = 2985.015 
iteration = 2  log-lik diff = 905.4609  log-lik = 3890.476 
iteration = 3  log-lik diff = 10.70506  log-lik = 3901.181 
iteration = 4  log-lik diff = 0.1498541  log-lik = 3901.33 
iteration = 5  log-lik diff = 0.08219221  log-lik = 3901.413 
iteration = 6  log-lik diff = 0.05457844  log-lik = 3901.467 
iteration = 7  log-lik diff = 0.04231898  log-lik = 3901.51 
iteration = 8  log-lik diff = 0.03637755  log-lik = 3901.546 
iteration = 9  log-lik diff = 0.03281174  log-lik = 3901.579 
iteration = 10  log-lik diff = 0.02976199  log-lik = 3901.609 
iteration = 11  log-lik diff = 0.026478  log-lik = 3901.635 
iteration = 12  log-lik diff = 0.02288291  log-lik = 3901.658 
iteration = 13  log-lik diff = 0.01923513  log-lik = 3901.677 
iteration = 14  log-lik diff = 0.01584756  log-lik = 3901.693 
iteration = 15  log-lik diff = 0.0129276  log-lik = 3901.706 
iteration = 16  log-lik diff = 0.01054503  log-lik = 3901.716 
...
iteration = 146  log-lik diff = 0.009499449  log-lik = 3903.485 
iteration = 147  log-lik diff = 0.01045282  log-lik = 3903.496 
iteration = 148  log-lik diff = 0.01184472  log-lik = 3903.508 
iteration = 149  log-lik diff = 0.01384345  log-lik = 3903.521 
iteration = 150  log-lik diff = 0.016719  log-lik = 3903.538 
iteration = 151  log-lik diff = 0.02092331  log-lik = 3903.559 
iteration = 152  log-lik diff = 0.02725589  log-lik = 3903.586 
iteration = 153  log-lik diff = 0.03721412  log-lik = 3903.624 
iteration = 154  log-lik diff = 0.0536836  log-lik = 3903.677 
iteration = 155  log-lik diff = 0.08186578  log-lik = 3903.759 
iteration = 156  log-lik diff = 0.1289219  log-lik = 3903.888 
iteration = 157  log-lik diff = 0.2072606  log-lik = 3904.095 
iteration = 158  log-lik diff = 0.4128169  log-lik = 3904.508 
iteration = 159  log-lik diff = 1.206451  log-lik = 3905.715 
iteration = 160  log-lik diff = 3.412628  log-lik = 3909.127 
iteration = 161  log-lik diff = NaN  log-lik = NaN 
Error in while (dl > eps && iter < maxit) { : 
  missing value where TRUE/FALSE needed


> sessionInfo()
R version 4.2.2 (2022-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04.3 LTS

Matrix products: default
BLAS:   /home/hilmar/shared/R/4.2_no_X/lib/R/lib/libRblas.so
LAPACK: /home/hilmar/shared/R/4.2_no_X/lib/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] mixtools_2.0.0  pheatmap_1.0.12 tiff_0.1-11    

loaded via a namespace (and not attached):
 [1] compiler_4.2.2     pillar_1.9.0       RColorBrewer_1.1-3 tools_4.2.2        digest_0.6.33      lattice_0.21-8     nlme_3.1-163       viridisLite_0.4.2 
 [9] jsonlite_1.8.7     evaluate_0.21      lifecycle_1.0.3    tibble_3.2.1       gtable_0.3.4       pkgconfig_2.0.3    rlang_1.1.1        Matrix_1.6-1      
[17] cli_3.6.1          rstudioapi_0.15.0  yaml_2.3.7         xfun_0.40          fastmap_1.1.1      dplyr_1.1.2        httr_1.4.7         knitr_1.43        
[25] generics_0.1.3     vctrs_0.6.3        htmlwidgets_1.6.2  segmented_1.6-4    grid_4.2.2         tidyselect_1.2.0   glue_1.6.2         data.table_1.14.8 
[33] R6_2.5.1           fansi_1.0.4        plotly_4.10.2      survival_3.5-7     rmarkdown_2.24     kernlab_0.9-32     tidyr_1.3.0        purrr_1.0.2       
[41] ggplot2_3.4.3      magrittr_2.0.3     MASS_7.3-60        splines_4.2.2      scales_1.2.1       htmltools_0.5.6    colorspace_2.1-0   utf8_1.2.3        
[49] lazyeval_0.2.2     munsell_0.5.0     

Predicting components for new data?

Hi,

Thank you for this useful package!

I'm using mixtools to fit a Normal mixture model similar to the vignette example:

library(mixtools)
data(faithful)
attach(faithful)

wait1 = normalmixEM(waiting, mu=c(50, 70))

head(wait1$posterior, 2)
#              comp.1       comp.2
#   [1,] 1.023874e-04 9.998976e-01
#   [2,] 9.999089e-01 9.109251e-05

Is there a way to predict the posterior component likelihood for new data (analogous to e.g. predict on an lm model)?

predict(wait1, newdata=data.frame(waiting=c(42,44,61)))
# Error in UseMethod("predict") :
#   no applicable method for 'predict' applied to an object of class "mixEM"
mod = lm(eruptions ~ waiting, data=faithful)
predict(mod, newdata=data.frame(waiting=c(45,77)))

density plot for `gammamixEM` seems to be not implemented

Hi @dsy109 ,

Thank you for your work on mixtools. I came across the following issue. With the code below, I would expect to plot the density curves of the resulting gamma distributions. Instead I'm getting a plot of the log-likelihood of each iteration.

Looking at the source code of mixtools, it would seem that this is not implemented for gammamixEM? Is this intended? Or am I missing something?

Cheers,

Pepijn

library(mixtools)
#> mixtools package, version 2.0.0, Released 2022-12-04
#> This package is based upon work supported by the National Science Foundation under Grant No. SES-0518772 and the Chan Zuckerberg Initiative: Essential Open Source Software for Science (Grant No. 2020-255193).
set.seed(100)
x <- c(rgamma(200, shape = 0.2, scale = 14), rgamma(200, 
                                                    shape = 32, scale = 10), rgamma(200, shape = 5, scale = 6))
out <- gammamixEM(x, lambda = c(1, 1, 1)/3, verb = TRUE)
#> number of iterations= 25 
#> iteration = 1  log-lik diff = 1175.88  log-lik = -2608.276 
#> iteration = 2  log-lik diff = 47.74193  log-lik = -2560.534 
#> iteration = 3  log-lik diff = 10.27375  log-lik = -2550.26 
#> iteration = 4  log-lik diff = 4.378686  log-lik = -2545.881 
#> iteration = 5  log-lik diff = 2.703569  log-lik = -2543.178 
#> iteration = 6  log-lik diff = 2.013168  log-lik = -2541.165 
#> iteration = 7  log-lik diff = 1.657544  log-lik = -2539.507 
#> iteration = 8  log-lik diff = 1.441377  log-lik = -2538.066 
#> iteration = 9  log-lik diff = 1.293605  log-lik = -2536.772 
#> iteration = 10  log-lik diff = 1.183348  log-lik = -2535.589 
#> iteration = 11  log-lik diff = 1.095632  log-lik = -2534.493 
#> iteration = 12  log-lik diff = 1.022566  log-lik = -2533.471 
#> iteration = 13  log-lik diff = 0.9596622  log-lik = -2532.511 
#> iteration = 14  log-lik diff = 0.9043369  log-lik = -2531.607 
#> iteration = 15  log-lik diff = 0.8544442  log-lik = -2530.752 
#> iteration = 16  log-lik diff = 0.8093044  log-lik = -2529.943 
#> iteration = 17  log-lik diff = 0.7679066  log-lik = -2529.175 
#> iteration = 18  log-lik diff = 0.7296704  log-lik = -2528.445 
#> iteration = 19  log-lik diff = 0.6941591  log-lik = -2527.751 
#> iteration = 20  log-lik diff = 0.6610344  log-lik = -2527.09 
#> iteration = 21  log-lik diff = 0.6300273  log-lik = -2526.46 
#> iteration = 22  log-lik diff = 0.6009192  log-lik = -2525.859 
#> iteration = 23  log-lik diff = 0.5735289  log-lik = -2525.286 
#> iteration = 24  log-lik diff = 0.5477037  log-lik = -2524.738 
#> iteration = 25  log-lik diff = 0.523313  log-lik = -2524.215 
#> iteration = 26  log-lik diff = 0.5002437  log-lik = -2523.714 
#> iteration = 27  log-lik diff = 0.4783967  log-lik = -2523.236 
#> iteration = 28  log-lik diff = 0.4576846  log-lik = -2522.778 
#> iteration = 29  log-lik diff = 0.4380291  log-lik = -2522.34 
#> iteration = 30  log-lik diff = 0.4193604  log-lik = -2521.921 
#> iteration = 31  log-lik diff = 0.4015763  log-lik = -2521.519 
#> iteration = 32  log-lik diff = 0.3847644  log-lik = -2521.134 
#> iteration = 33  log-lik diff = 0.3686747  log-lik = -2520.766 
#> iteration = 34  log-lik diff = 0.3533688  log-lik = -2520.412 
#> iteration = 35  log-lik diff = 0.3387888  log-lik = -2520.074 
#> iteration = 36  log-lik diff = 0.3248889  log-lik = -2519.749 
#> iteration = 37  log-lik diff = 0.3116312  log-lik = -2519.437 
#> iteration = 38  log-lik diff = 0.2989803  log-lik = -2519.138 
#> iteration = 39  log-lik diff = 0.2869034  log-lik = -2518.851 
#> iteration = 40  log-lik diff = 0.2753699  log-lik = -2518.576 
#> iteration = 41  log-lik diff = 0.2643513  log-lik = -2518.312 
#> iteration = 42  log-lik diff = 0.2538208  log-lik = -2518.058 
#> iteration = 43  log-lik diff = 0.2437535  log-lik = -2517.814 
#> iteration = 44  log-lik diff = 0.2341259  log-lik = -2517.58 
#> iteration = 45  log-lik diff = 0.224916  log-lik = -2517.355 
#> iteration = 46  log-lik diff = 0.2161031  log-lik = -2517.139 
#> iteration = 47  log-lik diff = 0.2076678  log-lik = -2516.931 
#> iteration = 48  log-lik diff = 0.1995918  log-lik = -2516.732 
#> iteration = 49  log-lik diff = 0.1919381  log-lik = -2516.54 
#> iteration = 50  log-lik diff = 0.184525  log-lik = -2516.355 
#> iteration = 51  log-lik diff = 0.1774225  log-lik = -2516.178 
#> iteration = 52  log-lik diff = 0.1706174  log-lik = -2516.007 
#> iteration = 53  log-lik diff = 0.1641054  log-lik = -2515.843 
#> iteration = 54  log-lik diff = 0.1578627  log-lik = -2515.685 
#> iteration = 55  log-lik diff = 0.1518768  log-lik = -2515.533 
#> iteration = 56  log-lik diff = 0.146136  log-lik = -2515.387 
#> iteration = 57  log-lik diff = 0.1406293  log-lik = -2515.246 
#> iteration = 58  log-lik diff = 0.135346  log-lik = -2515.111 
#> iteration = 59  log-lik diff = 0.1302761  log-lik = -2514.981 
#> iteration = 60  log-lik diff = 0.1254102  log-lik = -2514.855 
#> iteration = 61  log-lik diff = 0.1207392  log-lik = -2514.735 
#> iteration = 62  log-lik diff = 0.1162546  log-lik = -2514.618 
#> iteration = 63  log-lik diff = 0.1119481  log-lik = -2514.506 
#> iteration = 64  log-lik diff = 0.1078121  log-lik = -2514.399 
#> iteration = 65  log-lik diff = 0.1038392  log-lik = -2514.295 
#> iteration = 66  log-lik diff = 0.1000222  log-lik = -2514.195 
#> iteration = 67  log-lik diff = 0.09635467  log-lik = -2514.098 
#> iteration = 68  log-lik diff = 0.09283012  log-lik = -2514.006 
#> iteration = 69  log-lik diff = 0.0894425  log-lik = -2513.916 
#> iteration = 70  log-lik diff = 0.08618604  log-lik = -2513.83 
#> iteration = 71  log-lik diff = 0.08305525  log-lik = -2513.747 
#> iteration = 72  log-lik diff = 0.08004486  log-lik = -2513.667 
#> iteration = 73  log-lik diff = 0.07714987  log-lik = -2513.59 
#> iteration = 74  log-lik diff = 0.07436551  log-lik = -2513.515 
#> iteration = 75  log-lik diff = 0.07168721  log-lik = -2513.444 
#> iteration = 76  log-lik diff = 0.06911063  log-lik = -2513.375 
#> iteration = 77  log-lik diff = 0.06663161  log-lik = -2513.308 
#> iteration = 78  log-lik diff = 0.06424617  log-lik = -2513.244 
#> iteration = 79  log-lik diff = 0.06195054  log-lik = -2513.182 
#> iteration = 80  log-lik diff = 0.05974108  log-lik = -2513.122 
#> iteration = 81  log-lik diff = 0.05761433  log-lik = -2513.064 
#> iteration = 82  log-lik diff = 0.05556697  log-lik = -2513.009 
#> iteration = 83  log-lik diff = 0.05359586  log-lik = -2512.955 
#> iteration = 84  log-lik diff = 0.05169794  log-lik = -2512.904 
#> iteration = 85  log-lik diff = 0.04987033  log-lik = -2512.854 
#> iteration = 86  log-lik diff = 0.04811025  log-lik = -2512.806 
#> iteration = 87  log-lik diff = 0.04641505  log-lik = -2512.759 
#> iteration = 88  log-lik diff = 0.04478219  log-lik = -2512.714 
#> iteration = 89  log-lik diff = 0.04320923  log-lik = -2512.671 
#> iteration = 90  log-lik diff = 0.04169384  log-lik = -2512.629 
#> iteration = 91  log-lik diff = 0.04023379  log-lik = -2512.589 
#> iteration = 92  log-lik diff = 0.03882694  log-lik = -2512.55 
#> iteration = 93  log-lik diff = 0.03747124  log-lik = -2512.513 
#> iteration = 94  log-lik diff = 0.03616473  log-lik = -2512.477 
#> iteration = 95  log-lik diff = 0.03490552  log-lik = -2512.442 
#> iteration = 96  log-lik diff = 0.0336918  log-lik = -2512.408 
#> iteration = 97  log-lik diff = 0.03252185  log-lik = -2512.376 
#> iteration = 98  log-lik diff = 0.031394  log-lik = -2512.344 
#> iteration = 99  log-lik diff = 0.03030666  log-lik = -2512.314 
#> iteration = 100  log-lik diff = 0.0292583  log-lik = -2512.285 
#> iteration = 101  log-lik diff = 0.02824746  log-lik = -2512.256 
#> iteration = 102  log-lik diff = 0.02727271  log-lik = -2512.229 
#> iteration = 103  log-lik diff = 0.02633272  log-lik = -2512.203 
#> iteration = 104  log-lik diff = 0.02542618  log-lik = -2512.177 
#> iteration = 105  log-lik diff = 0.02455186  log-lik = -2512.153 
#> iteration = 106  log-lik diff = 0.02370854  log-lik = -2512.129 
#> iteration = 107  log-lik diff = 0.02289508  log-lik = -2512.106 
#> iteration = 108  log-lik diff = 0.02211038  log-lik = -2512.084 
#> iteration = 109  log-lik diff = 0.02135338  log-lik = -2512.063 
#> iteration = 110  log-lik diff = 0.02062305  log-lik = -2512.042 
#> iteration = 111  log-lik diff = 0.01991842  log-lik = -2512.022 
#> iteration = 112  log-lik diff = 0.01923854  log-lik = -2512.003 
#> iteration = 113  log-lik diff = 0.01858252  log-lik = -2511.984 
#> iteration = 114  log-lik diff = 0.01794947  log-lik = -2511.966 
#> iteration = 115  log-lik diff = 0.01733727  log-lik = -2511.949 
#> iteration = 116  log-lik diff = 0.01674776  log-lik = -2511.932 
#> iteration = 117  log-lik diff = 0.0161788  log-lik = -2511.916 
#> iteration = 118  log-lik diff = 0.01562965  log-lik = -2511.901 
#> iteration = 119  log-lik diff = 0.01509961  log-lik = -2511.885 
#> iteration = 120  log-lik diff = 0.01458799  log-lik = -2511.871 
#> iteration = 121  log-lik diff = 0.01409501  log-lik = -2511.857 
#> iteration = 122  log-lik diff = 0.01361816  log-lik = -2511.843 
#> iteration = 123  log-lik diff = 0.01315782  log-lik = -2511.83 
#> iteration = 124  log-lik diff = 0.0127134  log-lik = -2511.817 
#> iteration = 125  log-lik diff = 0.01228434  log-lik = -2511.805 
#> iteration = 126  log-lik diff = 0.01187007  log-lik = -2511.793 
#> iteration = 127  log-lik diff = 0.01147009  log-lik = -2511.782 
#> iteration = 128  log-lik diff = 0.01108387  log-lik = -2511.771 
#> iteration = 129  log-lik diff = 0.01071093  log-lik = -2511.76 
#> iteration = 130  log-lik diff = 0.0103508  log-lik = -2511.75 
#> iteration = 131  log-lik diff = 0.01000302  log-lik = -2511.739 
#> iteration = 132  log-lik diff = 0.009667163  log-lik = -2511.73 
#> iteration = 133  log-lik diff = 0.009342803  log-lik = -2511.72 
#> iteration = 134  log-lik diff = 0.009029536  log-lik = -2511.711 
#> iteration = 135  log-lik diff = 0.008726973  log-lik = -2511.703 
#> iteration = 136  log-lik diff = 0.008434736  log-lik = -2511.694 
#> iteration = 137  log-lik diff = 0.008152465  log-lik = -2511.686 
#> iteration = 138  log-lik diff = 0.00787981  log-lik = -2511.678 
#> iteration = 139  log-lik diff = 0.007616434  log-lik = -2511.671 
#> iteration = 140  log-lik diff = 0.007362015  log-lik = -2511.663 
#> iteration = 141  log-lik diff = 0.007116239  log-lik = -2511.656 
#> iteration = 142  log-lik diff = 0.006878806  log-lik = -2511.649 
#> iteration = 143  log-lik diff = 0.006649424  log-lik = -2511.643 
#> iteration = 144  log-lik diff = 0.006427816  log-lik = -2511.636 
#> iteration = 145  log-lik diff = 0.006213711  log-lik = -2511.63 
#> iteration = 146  log-lik diff = 0.006006848  log-lik = -2511.624 
#> iteration = 147  log-lik diff = 0.005806978  log-lik = -2511.618 
#> iteration = 148  log-lik diff = 0.005613859  log-lik = -2511.613 
#> iteration = 149  log-lik diff = 0.005427258  log-lik = -2511.607 
#> iteration = 150  log-lik diff = 0.005246949  log-lik = -2511.602 
#> iteration = 151  log-lik diff = 0.005072716  log-lik = -2511.597 
#> iteration = 152  log-lik diff = 0.004904351  log-lik = -2511.592 
#> iteration = 153  log-lik diff = 0.00474165  log-lik = -2511.587 
#> iteration = 154  log-lik diff = 0.004584421  log-lik = -2511.583 
#> iteration = 155  log-lik diff = 0.004432475  log-lik = -2511.578 
#> iteration = 156  log-lik diff = 0.004285631  log-lik = -2511.574 
#> iteration = 157  log-lik diff = 0.004143714  log-lik = -2511.57 
#> iteration = 158  log-lik diff = 0.004006557  log-lik = -2511.566 
#> iteration = 159  log-lik diff = 0.003873996  log-lik = -2511.562 
#> iteration = 160  log-lik diff = 0.003745875  log-lik = -2511.558 
#> iteration = 161  log-lik diff = 0.003622041  log-lik = -2511.554 
#> iteration = 162  log-lik diff = 0.00350235  log-lik = -2511.551 
#> iteration = 163  log-lik diff = 0.003386661  log-lik = -2511.548 
#> iteration = 164  log-lik diff = 0.003274836  log-lik = -2511.544 
#> iteration = 165  log-lik diff = 0.003166745  log-lik = -2511.541 
#> iteration = 166  log-lik diff = 0.003062261  log-lik = -2511.538 
#> iteration = 167  log-lik diff = 0.002961262  log-lik = -2511.535 
#> iteration = 168  log-lik diff = 0.00286363  log-lik = -2511.532 
#> iteration = 169  log-lik diff = 0.00276925  log-lik = -2511.529 
#> iteration = 170  log-lik diff = 0.002678013  log-lik = -2511.527 
#> iteration = 171  log-lik diff = 0.002589812  log-lik = -2511.524 
#> iteration = 172  log-lik diff = 0.002504546  log-lik = -2511.522 
#> iteration = 173  log-lik diff = 0.002422113  log-lik = -2511.519 
#> iteration = 174  log-lik diff = 0.002342421  log-lik = -2511.517 
#> iteration = 175  log-lik diff = 0.002265375  log-lik = -2511.515 
#> iteration = 176  log-lik diff = 0.002190886  log-lik = -2511.513 
#> iteration = 177  log-lik diff = 0.00211887  log-lik = -2511.51 
#> iteration = 178  log-lik diff = 0.002049241  log-lik = -2511.508 
#> iteration = 179  log-lik diff = 0.001981921  log-lik = -2511.506 
#> iteration = 180  log-lik diff = 0.001916832  log-lik = -2511.504 
#> iteration = 181  log-lik diff = 0.001853899  log-lik = -2511.503 
#> iteration = 182  log-lik diff = 0.001793049  log-lik = -2511.501 
#> iteration = 183  log-lik diff = 0.001734213  log-lik = -2511.499 
#> iteration = 184  log-lik diff = 0.001677323  log-lik = -2511.497 
#> iteration = 185  log-lik diff = 0.001622315  log-lik = -2511.496 
#> iteration = 186  log-lik diff = 0.001569124  log-lik = -2511.494 
#> iteration = 187  log-lik diff = 0.001517691  log-lik = -2511.493 
#> iteration = 188  log-lik diff = 0.001467957  log-lik = -2511.491 
#> iteration = 189  log-lik diff = 0.001419864  log-lik = -2511.49 
#> iteration = 190  log-lik diff = 0.001373359  log-lik = -2511.488 
#> iteration = 191  log-lik diff = 0.001328387  log-lik = -2511.487 
#> iteration = 192  log-lik diff = 0.001284899  log-lik = -2511.486 
#> iteration = 193  log-lik diff = 0.001242845  log-lik = -2511.485 
#> iteration = 194  log-lik diff = 0.001202176  log-lik = -2511.483 
#> iteration = 195  log-lik diff = 0.001162847  log-lik = -2511.482 
#> iteration = 196  log-lik diff = 0.001124813  log-lik = -2511.481 
#> iteration = 197  log-lik diff = 0.001088031  log-lik = -2511.48 
#> iteration = 198  log-lik diff = 0.00105246  log-lik = -2511.479 
#> iteration = 199  log-lik diff = 0.001018059  log-lik = -2511.478 
#> iteration = 200  log-lik diff = 0.0009847889  log-lik = -2511.477 
#> iteration = 201  log-lik diff = 0.000952613  log-lik = -2511.476 
#> iteration = 202  log-lik diff = 0.0009214947  log-lik = -2511.475 
#> iteration = 203  log-lik diff = 0.0008913989  log-lik = -2511.474 
#> iteration = 204  log-lik diff = 0.0008622916  log-lik = -2511.473 
#> iteration = 205  log-lik diff = 0.0008341402  log-lik = -2511.472 
#> iteration = 206  log-lik diff = 0.000806913  log-lik = -2511.472 
#> iteration = 207  log-lik diff = 0.0007805794  log-lik = -2511.471 
#> iteration = 208  log-lik diff = 0.0007551099  log-lik = -2511.47 
#> iteration = 209  log-lik diff = 0.0007304758  log-lik = -2511.469 
#> iteration = 210  log-lik diff = 0.0007066495  log-lik = -2511.469 
#> iteration = 211  log-lik diff = 0.0006836043  log-lik = -2511.468 
#> iteration = 212  log-lik diff = 0.0006613145  log-lik = -2511.467 
#> iteration = 213  log-lik diff = 0.0006397551  log-lik = -2511.467 
#> iteration = 214  log-lik diff = 0.000618902  log-lik = -2511.466 
#> iteration = 215  log-lik diff = 0.0005987318  log-lik = -2511.465 
#> iteration = 216  log-lik diff = 0.0005792221  log-lik = -2511.465 
#> iteration = 217  log-lik diff = 0.0005603511  log-lik = -2511.464 
#> iteration = 218  log-lik diff = 0.0005420977  log-lik = -2511.464 
#> iteration = 219  log-lik diff = 0.0005244415  log-lik = -2511.463 
#> iteration = 220  log-lik diff = 0.0005073629  log-lik = -2511.463 
#> iteration = 221  log-lik diff = 0.000490843  log-lik = -2511.462 
#> iteration = 222  log-lik diff = 0.0004748632  log-lik = -2511.462 
#> iteration = 223  log-lik diff = 0.0004594058  log-lik = -2511.461 
#> iteration = 224  log-lik diff = 0.0004444537  log-lik = -2511.461 
#> iteration = 225  log-lik diff = 0.0004299901  log-lik = -2511.46 
#> iteration = 226  log-lik diff = 0.0004159991  log-lik = -2511.46 
#> iteration = 227  log-lik diff = 0.0004024652  log-lik = -2511.46 
#> iteration = 228  log-lik diff = 0.0003893732  log-lik = -2511.459 
#> iteration = 229  log-lik diff = 0.0003767087  log-lik = -2511.459 
#> iteration = 230  log-lik diff = 0.0003644577  log-lik = -2511.459 
#> iteration = 231  log-lik diff = 0.0003526066  log-lik = -2511.458 
#> iteration = 232  log-lik diff = 0.0003411422  log-lik = -2511.458 
#> iteration = 233  log-lik diff = 0.0003300519  log-lik = -2511.457 
#> iteration = 234  log-lik diff = 0.0003193233  log-lik = -2511.457 
#> iteration = 235  log-lik diff = 0.0003089447  log-lik = -2511.457 
#> iteration = 236  log-lik diff = 0.0002989046  log-lik = -2511.457 
#> iteration = 237  log-lik diff = 0.0002891918  log-lik = -2511.456 
#> iteration = 238  log-lik diff = 0.0002797957  log-lik = -2511.456 
#> iteration = 239  log-lik diff = 0.0002707058  log-lik = -2511.456 
#> iteration = 240  log-lik diff = 0.0002619122  log-lik = -2511.455 
#> iteration = 241  log-lik diff = 0.0002534051  log-lik = -2511.455 
#> iteration = 242  log-lik diff = 0.0002451751  log-lik = -2511.455 
#> iteration = 243  log-lik diff = 0.0002372133  log-lik = -2511.455 
#> iteration = 244  log-lik diff = 0.0002295108  log-lik = -2511.454 
#> iteration = 245  log-lik diff = 0.0002220591  log-lik = -2511.454 
#> iteration = 246  log-lik diff = 0.00021485  log-lik = -2511.454 
#> iteration = 247  log-lik diff = 0.0002078756  log-lik = -2511.454 
#> iteration = 248  log-lik diff = 0.0002011283  log-lik = -2511.454 
#> iteration = 249  log-lik diff = 0.0001946005  log-lik = -2511.453 
#> iteration = 250  log-lik diff = 0.0001882852  log-lik = -2511.453 
#> iteration = 251  log-lik diff = 0.0001821754  log-lik = -2511.453 
#> iteration = 252  log-lik diff = 0.0001762643  log-lik = -2511.453 
#> iteration = 253  log-lik diff = 0.0001705455  log-lik = -2511.453 
#> iteration = 254  log-lik diff = 0.0001650127  log-lik = -2511.453 
#> iteration = 255  log-lik diff = 0.0001596599  log-lik = -2511.452 
#> iteration = 256  log-lik diff = 0.0001544811  log-lik = -2511.452 
#> iteration = 257  log-lik diff = 0.0001494707  log-lik = -2511.452 
#> iteration = 258  log-lik diff = 0.0001446232  log-lik = -2511.452 
#> iteration = 259  log-lik diff = 0.0001399332  log-lik = -2511.452 
#> iteration = 260  log-lik diff = 0.0001353957  log-lik = -2511.452 
#> iteration = 261  log-lik diff = 0.0001310056  log-lik = -2511.452 
#> iteration = 262  log-lik diff = 0.0001267582  log-lik = -2511.451 
#> iteration = 263  log-lik diff = 0.0001226488  log-lik = -2511.451 
#> iteration = 264  log-lik diff = 0.0001186729  log-lik = -2511.451 
#> iteration = 265  log-lik diff = 0.0001148262  log-lik = -2511.451 
#> iteration = 266  log-lik diff = 0.0001111044  log-lik = -2511.451 
#> iteration = 267  log-lik diff = 0.0001075035  log-lik = -2511.451 
#> iteration = 268  log-lik diff = 0.0001040195  log-lik = -2511.451 
#> iteration = 269  log-lik diff = 0.0001006486  log-lik = -2511.451 
#> iteration = 270  log-lik diff = 9.738721e-05  log-lik = -2511.451 
#> iteration = 271  log-lik diff = 9.423168e-05  log-lik = -2511.45 
#> iteration = 272  log-lik diff = 9.117858e-05  log-lik = -2511.45 
#> iteration = 273  log-lik diff = 8.822458e-05  log-lik = -2511.45 
#> iteration = 274  log-lik diff = 8.536645e-05  log-lik = -2511.45 
#> iteration = 275  log-lik diff = 8.260108e-05  log-lik = -2511.45 
#> iteration = 276  log-lik diff = 7.992544e-05  log-lik = -2511.45 
#> iteration = 277  log-lik diff = 7.733663e-05  log-lik = -2511.45 
#> iteration = 278  log-lik diff = 7.48318e-05  log-lik = -2511.45 
#> iteration = 279  log-lik diff = 7.240823e-05  log-lik = -2511.45 
#> iteration = 280  log-lik diff = 7.006329e-05  log-lik = -2511.45 
#> iteration = 281  log-lik diff = 6.77944e-05  log-lik = -2511.45 
#> iteration = 282  log-lik diff = 6.559911e-05  log-lik = -2511.45 
#> iteration = 283  log-lik diff = 6.347501e-05  log-lik = -2511.45 
#> iteration = 284  log-lik diff = 6.141979e-05  log-lik = -2511.449 
#> iteration = 285  log-lik diff = 5.943121e-05  log-lik = -2511.449 
#> iteration = 286  log-lik diff = 5.750712e-05  log-lik = -2511.449 
#> iteration = 287  log-lik diff = 5.56454e-05  log-lik = -2511.449 
#> iteration = 288  log-lik diff = 5.384404e-05  log-lik = -2511.449 
#> iteration = 289  log-lik diff = 5.210108e-05  log-lik = -2511.449 
#> iteration = 290  log-lik diff = 5.041461e-05  log-lik = -2511.449 
#> iteration = 291  log-lik diff = 4.878281e-05  log-lik = -2511.449 
#> iteration = 292  log-lik diff = 4.720389e-05  log-lik = -2511.449 
#> iteration = 293  log-lik diff = 4.567614e-05  log-lik = -2511.449 
#> iteration = 294  log-lik diff = 4.419791e-05  log-lik = -2511.449 
#> iteration = 295  log-lik diff = 4.276757e-05  log-lik = -2511.449 
#> iteration = 296  log-lik diff = 4.138358e-05  log-lik = -2511.449 
#> iteration = 297  log-lik diff = 4.004443e-05  log-lik = -2511.449 
#> iteration = 298  log-lik diff = 3.874866e-05  log-lik = -2511.449 
#> iteration = 299  log-lik diff = 3.749488e-05  log-lik = -2511.449 
#> iteration = 300  log-lik diff = 3.628171e-05  log-lik = -2511.449 
#> iteration = 301  log-lik diff = 3.510783e-05  log-lik = -2511.449 
#> iteration = 302  log-lik diff = 3.397198e-05  log-lik = -2511.449 
#> iteration = 303  log-lik diff = 3.287292e-05  log-lik = -2511.449 
#> iteration = 304  log-lik diff = 3.180945e-05  log-lik = -2511.449 
#> iteration = 305  log-lik diff = 3.078043e-05  log-lik = -2511.449 
#> iteration = 306  log-lik diff = 2.978472e-05  log-lik = -2511.449 
#> iteration = 307  log-lik diff = 2.882126e-05  log-lik = -2511.449 
#> iteration = 308  log-lik diff = 2.7889e-05  log-lik = -2511.448 
#> iteration = 309  log-lik diff = 2.698692e-05  log-lik = -2511.448 
#> iteration = 310  log-lik diff = 2.611405e-05  log-lik = -2511.448 
#> iteration = 311  log-lik diff = 2.526944e-05  log-lik = -2511.448 
#> iteration = 312  log-lik diff = 2.445217e-05  log-lik = -2511.448 
#> iteration = 313  log-lik diff = 2.366136e-05  log-lik = -2511.448 
#> iteration = 314  log-lik diff = 2.289614e-05  log-lik = -2511.448 
#> iteration = 315  log-lik diff = 2.21557e-05  log-lik = -2511.448 
#> iteration = 316  log-lik diff = 2.143922e-05  log-lik = -2511.448 
#> iteration = 317  log-lik diff = 2.074593e-05  log-lik = -2511.448 
#> iteration = 318  log-lik diff = 2.007509e-05  log-lik = -2511.448 
#> iteration = 319  log-lik diff = 1.942595e-05  log-lik = -2511.448 
#> iteration = 320  log-lik diff = 1.879782e-05  log-lik = -2511.448 
#> iteration = 321  log-lik diff = 1.819001e-05  log-lik = -2511.448 
#> iteration = 322  log-lik diff = 1.760188e-05  log-lik = -2511.448 
#> iteration = 323  log-lik diff = 1.703277e-05  log-lik = -2511.448 
#> iteration = 324  log-lik diff = 1.648208e-05  log-lik = -2511.448 
#> iteration = 325  log-lik diff = 1.594921e-05  log-lik = -2511.448 
#> iteration = 326  log-lik diff = 1.543358e-05  log-lik = -2511.448 
#> iteration = 327  log-lik diff = 1.493534e-05  log-lik = -2511.448 
#> iteration = 328  log-lik diff = 1.445341e-05  log-lik = -2511.448 
#> iteration = 329  log-lik diff = 1.398703e-05  log-lik = -2511.448 
#> iteration = 330  log-lik diff = 1.353569e-05  log-lik = -2511.448 
#> iteration = 331  log-lik diff = 1.309891e-05  log-lik = -2511.448 
#> iteration = 332  log-lik diff = 1.267622e-05  log-lik = -2511.448 
#> iteration = 333  log-lik diff = 1.226716e-05  log-lik = -2511.448 
#> iteration = 334  log-lik diff = 1.18713e-05  log-lik = -2511.448 
#> iteration = 335  log-lik diff = 1.14882e-05  log-lik = -2511.448 
#> iteration = 336  log-lik diff = 1.111746e-05  log-lik = -2511.448 
#> iteration = 337  log-lik diff = 1.075868e-05  log-lik = -2511.448 
#> iteration = 338  log-lik diff = 1.041147e-05  log-lik = -2511.448 
#> iteration = 339  log-lik diff = 1.007546e-05  log-lik = -2511.448 
#> iteration = 340  log-lik diff = 9.750283e-06  log-lik = -2511.448 
#> iteration = 341  log-lik diff = 9.435598e-06  log-lik = -2511.448 
#> iteration = 342  log-lik diff = 9.131061e-06  log-lik = -2511.448 
#> iteration = 343  log-lik diff = 8.836346e-06  log-lik = -2511.448 
#> iteration = 344  log-lik diff = 8.551137e-06  log-lik = -2511.448 
#> iteration = 345  log-lik diff = 8.275126e-06  log-lik = -2511.448 
#> iteration = 346  log-lik diff = 8.008017e-06  log-lik = -2511.448 
#> iteration = 347  log-lik diff = 7.749523e-06  log-lik = -2511.448 
#> iteration = 348  log-lik diff = 7.499366e-06  log-lik = -2511.448 
#> iteration = 349  log-lik diff = 7.257277e-06  log-lik = -2511.448 
#> iteration = 350  log-lik diff = 7.022996e-06  log-lik = -2511.448 
#> iteration = 351  log-lik diff = 6.796271e-06  log-lik = -2511.448 
#> iteration = 352  log-lik diff = 6.576859e-06  log-lik = -2511.448 
#> iteration = 353  log-lik diff = 6.364522e-06  log-lik = -2511.448 
#> iteration = 354  log-lik diff = 6.159035e-06  log-lik = -2511.448 
#> iteration = 355  log-lik diff = 5.960175e-06  log-lik = -2511.448 
#> iteration = 356  log-lik diff = 5.767728e-06  log-lik = -2511.448 
#> iteration = 357  log-lik diff = 5.581489e-06  log-lik = -2511.448 
#> iteration = 358  log-lik diff = 5.401256e-06  log-lik = -2511.448 
#> iteration = 359  log-lik diff = 5.226836e-06  log-lik = -2511.448 
#> iteration = 360  log-lik diff = 5.058042e-06  log-lik = -2511.448 
#> iteration = 361  log-lik diff = 4.894693e-06  log-lik = -2511.448 
#> iteration = 362  log-lik diff = 4.736612e-06  log-lik = -2511.448 
#> iteration = 363  log-lik diff = 4.58363e-06  log-lik = -2511.448 
#> iteration = 364  log-lik diff = 4.435582e-06  log-lik = -2511.448 
#> iteration = 365  log-lik diff = 4.29231e-06  log-lik = -2511.448 
#> iteration = 366  log-lik diff = 4.153659e-06  log-lik = -2511.448 
#> iteration = 367  log-lik diff = 4.01948e-06  log-lik = -2511.448 
#> iteration = 368  log-lik diff = 3.889629e-06  log-lik = -2511.448 
#> iteration = 369  log-lik diff = 3.763967e-06  log-lik = -2511.448 
#> iteration = 370  log-lik diff = 3.642358e-06  log-lik = -2511.448 
#> iteration = 371  log-lik diff = 3.524673e-06  log-lik = -2511.448 
#> iteration = 372  log-lik diff = 3.410783e-06  log-lik = -2511.448 
#> iteration = 373  log-lik diff = 3.300568e-06  log-lik = -2511.448 
#> iteration = 374  log-lik diff = 3.193908e-06  log-lik = -2511.448 
#> iteration = 375  log-lik diff = 3.090689e-06  log-lik = -2511.448 
#> iteration = 376  log-lik diff = 2.990799e-06  log-lik = -2511.448 
#> iteration = 377  log-lik diff = 2.894133e-06  log-lik = -2511.448 
#> iteration = 378  log-lik diff = 2.800585e-06  log-lik = -2511.448 
#> iteration = 379  log-lik diff = 2.710055e-06  log-lik = -2511.448 
#> iteration = 380  log-lik diff = 2.622446e-06  log-lik = -2511.448 
#> iteration = 381  log-lik diff = 2.537663e-06  log-lik = -2511.448 
#> iteration = 382  log-lik diff = 2.455617e-06  log-lik = -2511.448 
#> iteration = 383  log-lik diff = 2.376216e-06  log-lik = -2511.448 
#> iteration = 384  log-lik diff = 2.299379e-06  log-lik = -2511.448 
#> iteration = 385  log-lik diff = 2.225021e-06  log-lik = -2511.448 
#> iteration = 386  log-lik diff = 2.153061e-06  log-lik = -2511.448 
#> iteration = 387  log-lik diff = 2.083425e-06  log-lik = -2511.448 
#> iteration = 388  log-lik diff = 2.016036e-06  log-lik = -2511.448 
#> iteration = 389  log-lik diff = 1.950821e-06  log-lik = -2511.448 
#> iteration = 390  log-lik diff = 1.88771e-06  log-lik = -2511.448 
#> iteration = 391  log-lik diff = 1.826637e-06  log-lik = -2511.448 
#> iteration = 392  log-lik diff = 1.767534e-06  log-lik = -2511.448 
#> iteration = 393  log-lik diff = 1.71034e-06  log-lik = -2511.448 
#> iteration = 394  log-lik diff = 1.654991e-06  log-lik = -2511.448 
#> iteration = 395  log-lik diff = 1.601428e-06  log-lik = -2511.448 
#> iteration = 396  log-lik diff = 1.549596e-06  log-lik = -2511.448 
#> iteration = 397  log-lik diff = 1.499435e-06  log-lik = -2511.448 
#> iteration = 398  log-lik diff = 1.450894e-06  log-lik = -2511.448 
#> iteration = 399  log-lik diff = 1.403921e-06  log-lik = -2511.448 
#> iteration = 400  log-lik diff = 1.358463e-06  log-lik = -2511.448 
#> iteration = 401  log-lik diff = 1.314473e-06  log-lik = -2511.448 
#> iteration = 402  log-lik diff = 1.271903e-06  log-lik = -2511.448 
#> iteration = 403  log-lik diff = 1.230709e-06  log-lik = -2511.448 
#> iteration = 404  log-lik diff = 1.190844e-06  log-lik = -2511.448 
#> iteration = 405  log-lik diff = 1.152267e-06  log-lik = -2511.448 
#> iteration = 406  log-lik diff = 1.114935e-06  log-lik = -2511.448 
#> iteration = 407  log-lik diff = 1.078808e-06  log-lik = -2511.448 
#> iteration = 408  log-lik diff = 1.043849e-06  log-lik = -2511.448 
#> iteration = 409  log-lik diff = 1.010018e-06  log-lik = -2511.448 
#> iteration = 410  log-lik diff = 9.772807e-07  log-lik = -2511.448 
#> iteration = 411  log-lik diff = 9.456003e-07  log-lik = -2511.448 
#> iteration = 412  log-lik diff = 9.149435e-07  log-lik = -2511.448 
#> iteration = 413  log-lik diff = 8.852767e-07  log-lik = -2511.448 
#> iteration = 414  log-lik diff = 8.565685e-07  log-lik = -2511.448 
#> iteration = 415  log-lik diff = 8.28788e-07  log-lik = -2511.448 
#> iteration = 416  log-lik diff = 8.019047e-07  log-lik = -2511.448 
#> iteration = 417  log-lik diff = 7.758904e-07  log-lik = -2511.448 
#> iteration = 418  log-lik diff = 7.50716e-07  log-lik = -2511.448 
#> iteration = 419  log-lik diff = 7.263557e-07  log-lik = -2511.448 
#> iteration = 420  log-lik diff = 7.027825e-07  log-lik = -2511.448 
#> iteration = 421  log-lik diff = 6.799714e-07  log-lik = -2511.448 
#> iteration = 422  log-lik diff = 6.578971e-07  log-lik = -2511.448 
#> iteration = 423  log-lik diff = 6.365367e-07  log-lik = -2511.448 
#> iteration = 424  log-lik diff = 6.158666e-07  log-lik = -2511.448 
#> iteration = 425  log-lik diff = 5.95865e-07  log-lik = -2511.448 
#> iteration = 426  log-lik diff = 5.7651e-07  log-lik = -2511.448 
#> iteration = 427  log-lik diff = 5.577804e-07  log-lik = -2511.448 
#> iteration = 428  log-lik diff = 5.396569e-07  log-lik = -2511.448 
#> iteration = 429  log-lik diff = 5.221191e-07  log-lik = -2511.448 
#> iteration = 430  log-lik diff = 5.051484e-07  log-lik = -2511.448 
#> iteration = 431  log-lik diff = 4.88727e-07  log-lik = -2511.448 
#> iteration = 432  log-lik diff = 4.728367e-07  log-lik = -2511.448 
#> iteration = 433  log-lik diff = 4.574599e-07  log-lik = -2511.448 
#> iteration = 434  log-lik diff = 4.425806e-07  log-lik = -2511.448 
#> iteration = 435  log-lik diff = 4.281833e-07  log-lik = -2511.448 
#> iteration = 436  log-lik diff = 4.142516e-07  log-lik = -2511.448 
#> iteration = 437  log-lik diff = 4.007707e-07  log-lik = -2511.448 
#> iteration = 438  log-lik diff = 3.877253e-07  log-lik = -2511.448 
#> iteration = 439  log-lik diff = 3.751029e-07  log-lik = -2511.448 
#> iteration = 440  log-lik diff = 3.628898e-07  log-lik = -2511.448 
#> iteration = 441  log-lik diff = 3.5107e-07  log-lik = -2511.448 
#> iteration = 442  log-lik diff = 3.396344e-07  log-lik = -2511.448 
#> iteration = 443  log-lik diff = 3.285681e-07  log-lik = -2511.448 
#> iteration = 444  log-lik diff = 3.178616e-07  log-lik = -2511.448 
#> iteration = 445  log-lik diff = 3.075002e-07  log-lik = -2511.448 
#> iteration = 446  log-lik diff = 2.974753e-07  log-lik = -2511.448 
#> iteration = 447  log-lik diff = 2.877746e-07  log-lik = -2511.448 
#> iteration = 448  log-lik diff = 2.783881e-07  log-lik = -2511.448 
#> iteration = 449  log-lik diff = 2.693059e-07  log-lik = -2511.448 
#> iteration = 450  log-lik diff = 2.605179e-07  log-lik = -2511.448 
#> iteration = 451  log-lik diff = 2.520151e-07  log-lik = -2511.448 
#> iteration = 452  log-lik diff = 2.437873e-07  log-lik = -2511.448 
#> iteration = 453  log-lik diff = 2.358265e-07  log-lik = -2511.448 
#> iteration = 454  log-lik diff = 2.281236e-07  log-lik = -2511.448 
#> iteration = 455  log-lik diff = 2.206702e-07  log-lik = -2511.448 
#> iteration = 456  log-lik diff = 2.134589e-07  log-lik = -2511.448 
#> iteration = 457  log-lik diff = 2.064812e-07  log-lik = -2511.448 
#> iteration = 458  log-lik diff = 1.997296e-07  log-lik = -2511.448 
#> iteration = 459  log-lik diff = 1.931976e-07  log-lik = -2511.448 
#> iteration = 460  log-lik diff = 1.868766e-07  log-lik = -2511.448 
#> iteration = 461  log-lik diff = 1.807612e-07  log-lik = -2511.448 
#> iteration = 462  log-lik diff = 1.748444e-07  log-lik = -2511.448 
#> iteration = 463  log-lik diff = 1.691192e-07  log-lik = -2511.448 
#> iteration = 464  log-lik diff = 1.635799e-07  log-lik = -2511.448 
#> iteration = 465  log-lik diff = 1.582212e-07  log-lik = -2511.448 
#> iteration = 466  log-lik diff = 1.530352e-07  log-lik = -2511.448 
#> iteration = 467  log-lik diff = 1.48018e-07  log-lik = -2511.448 
#> iteration = 468  log-lik diff = 1.431645e-07  log-lik = -2511.448 
#> iteration = 469  log-lik diff = 1.384678e-07  log-lik = -2511.448 
#> iteration = 470  log-lik diff = 1.33924e-07  log-lik = -2511.448 
#> iteration = 471  log-lik diff = 1.29528e-07  log-lik = -2511.448 
#> iteration = 472  log-lik diff = 1.252743e-07  log-lik = -2511.448 
#> iteration = 473  log-lik diff = 1.211592e-07  log-lik = -2511.448 
#> iteration = 474  log-lik diff = 1.171779e-07  log-lik = -2511.448 
#> iteration = 475  log-lik diff = 1.133267e-07  log-lik = -2511.448 
#> iteration = 476  log-lik diff = 1.095991e-07  log-lik = -2511.448 
#> iteration = 477  log-lik diff = 1.059943e-07  log-lik = -2511.448 
#> iteration = 478  log-lik diff = 1.025055e-07  log-lik = -2511.448 
#> iteration = 479  log-lik diff = 9.913174e-08  log-lik = -2511.448 
#> iteration = 480  log-lik diff = 9.58662e-08  log-lik = -2511.448 
#> iteration = 481  log-lik diff = 9.270798e-08  log-lik = -2511.448 
#> iteration = 482  log-lik diff = 8.965253e-08  log-lik = -2511.448 
#> iteration = 483  log-lik diff = 8.669531e-08  log-lik = -2511.448 
#> iteration = 484  log-lik diff = 8.383631e-08  log-lik = -2511.448 
#> iteration = 485  log-lik diff = 8.106917e-08  log-lik = -2511.448 
#> iteration = 486  log-lik diff = 7.839208e-08  log-lik = -2511.448 
#> iteration = 487  log-lik diff = 7.580365e-08  log-lik = -2511.448 
#> iteration = 488  log-lik diff = 7.329754e-08  log-lik = -2511.448 
#> iteration = 489  log-lik diff = 7.08751e-08  log-lik = -2511.448 
#> iteration = 490  log-lik diff = 6.852997e-08  log-lik = -2511.448 
#> iteration = 491  log-lik diff = 6.62626e-08  log-lik = -2511.448 
#> iteration = 492  log-lik diff = 6.406844e-08  log-lik = -2511.448 
#> iteration = 493  log-lik diff = 6.194659e-08  log-lik = -2511.448 
#> iteration = 494  log-lik diff = 5.989295e-08  log-lik = -2511.448 
#> iteration = 495  log-lik diff = 5.790707e-08  log-lik = -2511.448 
#> iteration = 496  log-lik diff = 5.598577e-08  log-lik = -2511.448 
#> iteration = 497  log-lik diff = 5.412767e-08  log-lik = -2511.448 
#> iteration = 498  log-lik diff = 5.233005e-08  log-lik = -2511.448 
#> iteration = 499  log-lik diff = 5.05911e-08  log-lik = -2511.448 
#> iteration = 500  log-lik diff = 4.890899e-08  log-lik = -2511.448 
#> iteration = 501  log-lik diff = 4.728145e-08  log-lik = -2511.448 
#> iteration = 502  log-lik diff = 4.570802e-08  log-lik = -2511.448 
#> iteration = 503  log-lik diff = 4.418553e-08  log-lik = -2511.448 
#> iteration = 504  log-lik diff = 4.27126e-08  log-lik = -2511.448 
#> iteration = 505  log-lik diff = 4.128879e-08  log-lik = -2511.448 
#> iteration = 506  log-lik diff = 3.99109e-08  log-lik = -2511.448 
#> iteration = 507  log-lik diff = 3.857849e-08  log-lik = -2511.448 
#> iteration = 508  log-lik diff = 3.728883e-08  log-lik = -2511.448 
#> iteration = 509  log-lik diff = 3.604282e-08  log-lik = -2511.448 
#> iteration = 510  log-lik diff = 3.483638e-08  log-lik = -2511.448 
#> iteration = 511  log-lik diff = 3.36704e-08  log-lik = -2511.448 
#> iteration = 512  log-lik diff = 3.254218e-08  log-lik = -2511.448 
#> iteration = 513  log-lik diff = 3.145169e-08  log-lik = -2511.448 
#> iteration = 514  log-lik diff = 3.039622e-08  log-lik = -2511.448 
#> iteration = 515  log-lik diff = 2.937577e-08  log-lik = -2511.448 
#> iteration = 516  log-lik diff = 2.838851e-08  log-lik = -2511.448 
#> iteration = 517  log-lik diff = 2.7434e-08  log-lik = -2511.448 
#> iteration = 518  log-lik diff = 2.651041e-08  log-lik = -2511.448 
#> iteration = 519  log-lik diff = 2.561819e-08  log-lik = -2511.448 
#> iteration = 520  log-lik diff = 2.475417e-08  log-lik = -2511.448 
#> iteration = 521  log-lik diff = 2.392017e-08  log-lik = -2511.448 
#> iteration = 522  log-lik diff = 2.311117e-08  log-lik = -2511.448 
#> iteration = 523  log-lik diff = 2.233128e-08  log-lik = -2511.448 
#> iteration = 524  log-lik diff = 2.157594e-08  log-lik = -2511.448 
#> iteration = 525  log-lik diff = 2.084471e-08  log-lik = -2511.448 
#> iteration = 526  log-lik diff = 2.01394e-08  log-lik = -2511.448 
#> iteration = 527  log-lik diff = 1.945546e-08  log-lik = -2511.448 
#> iteration = 528  log-lik diff = 1.879607e-08  log-lik = -2511.448 
#> iteration = 529  log-lik diff = 1.81567e-08  log-lik = -2511.448 
#> iteration = 530  log-lik diff = 1.753961e-08  log-lik = -2511.448 
#> iteration = 531  log-lik diff = 1.694252e-08  log-lik = -2511.448 
#> iteration = 532  log-lik diff = 1.636499e-08  log-lik = -2511.448 
#> iteration = 533  log-lik diff = 1.580656e-08  log-lik = -2511.448 
#> iteration = 534  log-lik diff = 1.526678e-08  log-lik = -2511.448 
#> iteration = 535  log-lik diff = 1.474518e-08  log-lik = -2511.448 
#> iteration = 536  log-lik diff = 1.424041e-08  log-lik = -2511.448 
#> iteration = 537  log-lik diff = 1.375201e-08  log-lik = -2511.448 
#> iteration = 538  log-lik diff = 1.32809e-08  log-lik = -2511.448 
#> iteration = 539  log-lik diff = 1.282433e-08  log-lik = -2511.448 
#> iteration = 540  log-lik diff = 1.238368e-08  log-lik = -2511.448 
#> iteration = 541  log-lik diff = 1.195758e-08  log-lik = -2511.448 
#> iteration = 542  log-lik diff = 1.154513e-08  log-lik = -2511.448 
#> iteration = 543  log-lik diff = 1.114677e-08  log-lik = -2511.448 
#> iteration = 544  log-lik diff = 1.07616e-08  log-lik = -2511.448 
#> iteration = 545  log-lik diff = 1.038916e-08  log-lik = -2511.448 
#> iteration = 546  log-lik diff = 1.002945e-08  log-lik = -2511.448 
#> iteration = 547  log-lik diff = 9.681116e-09  log-lik = -2511.448 
#> number of iterations= 547
plot(out, density = TRUE)

Created on 2024-02-09 with reprex v2.0.2

This is my sessionInfo():

R version 4.3.2 (2023-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default


locale:
[1] LC_COLLATE=Dutch_Netherlands.utf8  LC_CTYPE=Dutch_Netherlands.utf8    LC_MONETARY=Dutch_Netherlands.utf8
[4] LC_NUMERIC=C                       LC_TIME=Dutch_Netherlands.utf8    

time zone: Europe/Amsterdam
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] CopernicusMarine_0.2.3 mixtools_2.0.0         ggplot2_3.4.4          readr_2.1.4           
[5] dplyr_1.1.4           

loaded via a namespace (and not attached):
 [1] gtable_0.3.4       xfun_0.41          httr2_1.0.0        htmlwidgets_1.6.4  processx_3.8.3    
 [6] lattice_0.21-9     callr_3.7.3        tzdb_0.4.0         ps_1.7.5           vctrs_0.6.5       
[11] tools_4.3.2        generics_0.1.3     curl_5.2.0         parallel_4.3.2     tibble_3.2.1      
[16] fansi_1.0.6        highr_0.10         pkgconfig_2.0.3    Matrix_1.6-1.1     data.table_1.14.10
[21] lifecycle_1.0.4    compiler_4.3.2     farver_2.1.1       textshaping_0.3.7  munsell_0.5.0     
[26] htmltools_0.5.7    yaml_2.3.8         lazyeval_0.2.2     plotly_4.10.3      pillar_1.9.0      
[31] crayon_1.5.2       tidyr_1.3.0        MASS_7.3-60        nlme_3.1-163       tidyselect_1.2.0  
[36] digest_0.6.33      kernlab_0.9-32     purrr_1.0.2        labeling_0.4.3     splines_4.3.2     
[41] fastmap_1.1.1      grid_4.3.2         colorspace_2.1-0   cli_3.6.2          magrittr_2.0.3    
[46] survival_3.5-7     utf8_1.2.4         clipr_0.8.0        withr_2.5.2        scales_1.3.0      
[51] rappdirs_0.3.3     segmented_2.0-1    bit64_4.0.5        rmarkdown_2.25     httr_1.4.7        
[56] bit_4.0.5          ragg_1.2.7         hms_1.1.3          evaluate_0.23      knitr_1.45        
[61] viridisLite_0.4.2  rlang_1.1.2        glue_1.6.2         reprex_2.0.2       pkgload_1.3.3     
[66] rstudioapi_0.15.0  vroom_1.6.5        jsonlite_1.8.8     R6_2.5.1           systemfonts_1.0.5 
[71] fs_1.6.3

Mixture model converges to wrong result (randomly)

Hi,
I have been trying to model an approximately gaussian mixture (image data, background + foreground intensities) using normalmixEM with 2 or 3 components.

While this seems to work generally, quite often I get results that just do not seem to make any sense in terms of the initial data distribution. In particular, the input distribution is clearly bimodal with a 30/70 split in proportions, but the resulting mixture does not fit the modes nor does the sum of the mixtures seem to fit the overall distribution well.

This problem happens for certain data sets for k=2 about 1 in 5 times and about 1 in 100-200 times for k=3. I can reproduce this behavior using specific random seeds for both k=2 and k=3. This does not seem to depend so much on the initial data as removing data points or subsampling from 100k to 1k data points does not change the behavior. Removing the long tail to the right also does not change anything. I tried to play around with initial lambda values but that does not seem to change much.

Tested in mixtools 1.2.0 on R 4.1.2 (openblas) and mixtools 2.0 on R 4.2.2 (standard R BLAS), both on Linux.

To reproduce (example data have been attached below):

library(mixtools)

#d = readRDS("100k_vector_for_normalmixEM.rds")
# 1k subsample from 100k data
d = readRDS("1k_vector_for_normalmixEM.rds")

hist(d, 100)

# k=2; problem occurs about 1 every 5 runs without setting random seed
set.seed(1238)
mixmdl = normalmixEM(d, k=2)
summary(mixmdl)
plot(mixmdl, which=2)

# k=3; much less frequent without setting random seed
set.seed(10319)
mixmdl = normalmixEM(d, k=3)
summary(mixmdl)
plot(mixmdl, which=2)

Results from the 100k data set (1k looks similar) for k=2:

summary of normalmixEM object:
          comp 1     comp 2
lambda 0.8223187 0.17768126
mu     0.0119736 0.01614824
sigma  0.0050708 0.00156856
loglik at estimate:  391868.6 

image

Output from a 'good' run (100k, k=2):

summary of normalmixEM object:
           comp 1     comp 2
lambda 0.29123448 0.70876552
mu     0.00687830 0.01511378
sigma  0.00119344 0.00370195
loglik at estimate:  402918.3 

example_data.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.