Plot method for class 'decontaminated_density'
Source:R/decontaminated_density.R
plot.decontaminated_density.Rd
Plot the decontaminated density of the unknown component from some admixture model, after inversion of the admixture cumulative distribution functions.
Usage
# S3 method for decontaminated_density
plot(x, x_val, add_plot = FALSE, ...)
Arguments
- x
An object of class 'decontaminated_density' (see ?decontaminated_density).
- x_val
(numeric) A vector of points at which to evaluate the probability mass/density function.
- add_plot
(default to FALSE) A boolean specifying if one plots the decontaminated density over an existing plot. Used for visual comparison purpose.
- ...
Arguments to be passed to generic method 'plot', such as graphical parameters (see par).
Details
The decontaminated density is obtained by inverting the admixture density, given by l = p*f + (1-p)*g, to isolate the unknown component f after having estimated p and l.
Author
Xavier Milhaud xavier.milhaud.research@gmail.com
Examples
####### Continuous support:
## Simulate mixture data:
mixt1 <- twoComp_mixt(n = 400, weight = 0.4,
comp.dist = list("norm", "norm"),
comp.param = list(list("mean" = 3, "sd" = 0.5),
list("mean" = 0, "sd" = 1)))
mixt2 <- twoComp_mixt(n = 350, weight = 0.6,
comp.dist = list("norm", "norm"),
comp.param = list(list("mean" = 3, "sd" = 0.5),
list("mean" = 5, "sd" = 2)))
data1 <- getmixtData(mixt1)
data2 <- getmixtData(mixt2)
## Define the admixture models:
admixMod1 <- admix_model(knownComp_dist = mixt1$comp.dist[[2]],
knownComp_param = mixt1$comp.param[[2]])
admixMod2 <- admix_model(knownComp_dist = mixt2$comp.dist[[2]],
knownComp_param = mixt2$comp.param[[2]])
## Estimation:
est <- admix_estim(samples = list(data1,data2),
admixMod = list(admixMod1,admixMod2), est_method = 'PS')
prop <- getmixingWeight(est)
## Determine the decontaminated version of the unknown density by inversion:
res1 <- decontaminated_density(sample1 = data1, estim.p = prop[1],
admixMod = admixMod1)
res2 <- decontaminated_density(sample1 = data2, estim.p = prop[2],
admixMod = admixMod2)
## Use appropriate sequence of x values:
plot(x = res1, x_val = seq(from = 0, to = 6, length.out = 100), add_plot = FALSE)
plot(x = res2, col = "red", x_val = seq(from = 0, to = 6, length.out = 100), add_plot = TRUE)
####### Countable discrete support:
mixt1 <- twoComp_mixt(n = 4000, weight = 0.7,
comp.dist = list("pois", "pois"),
comp.param = list(list("lambda" = 3),
list("lambda" = 2)))
mixt2 <- twoComp_mixt(n = 3500, weight = 0.85,
comp.dist = list("pois", "pois"),
comp.param = list(list("lambda" = 3),
list("lambda" = 4)))
data1 <- getmixtData(mixt1)
data2 <- getmixtData(mixt2)
## Define the admixture models:
admixMod1 <- admix_model(knownComp_dist = mixt1$comp.dist[[2]],
knownComp_param = mixt1$comp.param[[2]])
admixMod2 <- admix_model(knownComp_dist = mixt2$comp.dist[[2]],
knownComp_param = mixt2$comp.param[[2]])
## Estimation:
est <- admix_estim(samples = list(data1,data2),
admixMod = list(admixMod1,admixMod2), est_method = "IBM")
#> Warning: IBM estimators of two unknown proportions are reliable only if the two
#> corresponding unknown component distributions have been tested equal (see 'admix_test()').
#> Furthermore, when both the known and unknown component distributions of the mixture
#> models are identical, the IBM approach provides an estimation of the ratio of the
#> actual mixing weights rather than an estimation of the unknown weights themselves.
prop <- getmixingWeight(est)
## Determine the decontaminated version of the unknown density by inversion:
res1 <- decontaminated_density(sample1 = data1, estim.p = prop[1],
admixMod = admixMod1)
res2 <- decontaminated_density(sample1 = data2, estim.p = prop[2],
admixMod = admixMod2)
## Use appropriate sequence of x values:
plot(x = res1, x_val = seq(from = 0, to = 15, by = 1), add_plot = FALSE)
plot(x = res2, x_val = seq(from = 0, to = 15, by = 1), add_plot = TRUE, col = "red")
####### Finite discrete support:
mixt1 <- twoComp_mixt(n = 4000, weight = 0.7,
comp.dist = list("multinom", "multinom"),
comp.param = list(list("size" = 1, "prob" = c(0.3,0.4,0.3)),
list("size" = 1, "prob" = c(0.6,0.3,0.1))))
mixt2 <- twoComp_mixt(n = 3500, weight = 0.85,
comp.dist = list("multinom", "multinom"),
comp.param = list(list("size" = 1, "prob" = c(0.3,0.4,0.3)),
list("size" = 1, "prob" = c(0.2,0.6,0.2))))
data1 <- getmixtData(mixt1)
data2 <- getmixtData(mixt2)
## Define the admixture models:
admixMod1 <- admix_model(knownComp_dist = mixt1$comp.dist[[2]],
knownComp_param = mixt1$comp.param[[2]])
admixMod2 <- admix_model(knownComp_dist = mixt2$comp.dist[[2]],
knownComp_param = mixt2$comp.param[[2]])
## Estimation:
est <- admix_estim(samples = list(data1,data2),
admixMod = list(admixMod1,admixMod2), est_method = "IBM")
#> Warning: IBM estimators of two unknown proportions are reliable only if the two
#> corresponding unknown component distributions have been tested equal (see 'admix_test()').
#> Furthermore, when both the known and unknown component distributions of the mixture
#> models are identical, the IBM approach provides an estimation of the ratio of the
#> actual mixing weights rather than an estimation of the unknown weights themselves.
prop <- getmixingWeight(est)
## Determine the decontaminated version of the unknown density by inversion:
res1 <- decontaminated_density(sample1 = data1, estim.p = prop[1],
admixMod = admixMod1)
res2 <- decontaminated_density(sample1 = data2, estim.p = prop[2],
admixMod = admixMod2)
## Use appropriate sequence of x values:
plot(x = res1, x_val = seq(from=1, to=3, by=1), add_plot = FALSE)
plot(x = res2, x_val = seq(from=1, to=3, by=1), add_plot = TRUE, col = "red")