library(NiLeDAM)
#> 
#> ***********************************************************
#> 
#>       Welcome to the NiLeDAM package
#>       An online graphical interface is available at:
#>         http://shiny.nathalievilla.org/niledam
#>         or run: liveNILEDAM()
#>       Citation details with citation('NiLeDAM')
#> 
#>       For questions/remarks, please contact the maintainer:
#>         nathalie.vialaneix@inrae.fr
#> 
#> ***********************************************************The package NiLeDAM will be tested on a data set called
srilanka, provided by Anne-Magali Seydoux-Guillaume and
published in Seydoux-Guillaume et al. (2012). For more
information about this dataset, refer to the help page:
summary(srilanka)
#>        U             errU             Th             ErrTh            Pb      
#>  Min.   : 495   Min.   :229.0   Min.   : 41275   Min.   : 856   Min.   :1000  
#>  1st Qu.:1816   1st Qu.:239.0   1st Qu.: 62489   1st Qu.:1006   1st Qu.:1548  
#>  Median :6275   Median :271.0   Median :187783   Median :1711   Median :4562  
#>  Mean   :4276   Mean   :256.8   Mean   :139063   Mean   :1433   Mean   :3457  
#>  3rd Qu.:6760   3rd Qu.:274.0   3rd Qu.:199075   3rd Qu.:1768   3rd Qu.:4871  
#>  Max.   :7359   Max.   :277.0   Max.   :215401   Max.   :1852   Max.   :5365  
#>      ErrPb      
#>  Min.   :314.0  
#>  1st Qu.:318.0  
#>  Median :338.0  
#>  Mean   :331.3  
#>  3rd Qu.:341.0  
#>  Max.   :345.0calculateAges()As a first step, ages are calculated with the help of the function
calculateAges().
nloops to at least
1000. The larger the number of bootstraps, the more
time-consuming the function gets.seed is used to make results reproducible.
Any integer can be used.level = 0.05 (statistical risk for the
tests) and verbose = TRUE.Remark: the data frame used in this function must have exactly 6 columns as the srilanka data set has (in that order). If not, then the function will generate an error.
calculated.ages <- calculateAges(srilanka, nloops = 10, seed = 12, verbose = TRUE)
#> Age estimation...
#> MC simulations...
#>  (it might take a while if 'nloops' is large...)
#> 
#> 32 ages and confidence intervals estimated from 10 bootstrap samples.
#>  Summary:
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   447.0   491.2   505.5   515.3   546.5   598.0What contains this ages object ?
calculated.ages@ages
#>   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
#> 569 447 598 515 543 567 557 567 458 497 481 497 520 519 477 559 515 525 493 581 
#>  21  22  23  24  25  26  27  28  29  30  31  32 
#> 561 501 479 500 482 505 486 468 506 501 521 494calculated.ages@ci
#>             1       2       3       4      5       6       7      8       9
#> 2.5%  530.200 384.375 534.600 443.800 487.35 541.900 478.350 521.35 448.225
#> 97.5% 660.325 542.125 662.425 569.725 586.55 612.475 603.175 599.50 486.775
#>            10      11      12     13      14      15      16      17      18
#> 2.5%  447.825 457.925 475.575 496.35 496.025 438.675 434.725 336.075 390.625
#> 97.5% 508.775 508.500 512.975 543.65 539.325 549.275 744.650 572.775 596.475
#>            19      20      21      22      23      24      25     26      27
#> 2.5%  421.175 500.125 497.175 480.675 439.575 475.925 441.925 473.90 473.575
#> 97.5% 535.400 680.450 692.750 533.625 485.775 522.200 510.000 530.05 505.600
#>           28     29      30     31      32
#> 2.5%  453.90 485.95 489.125 488.60 468.725
#> 97.5% 488.75 531.30 518.975 540.65 507.875tests()Then, one can estimate the number of age populations using the
previously generated object. This is done with the function
tests, which help page is accessible with:
One can either test a unique number or a sequence of numbers to find the most likely number of different populations of ages (or common ages).
Here, 1 to 3 populations are tested:
res.tests <- tests(calculated.ages, nbmin = 1, nbmax = 3, verbose = TRUE)
#> Test if the 32 estimated ages are coming from
#>  1 2 3 
#> population(s).
#> 
#>     The ages are found to be likely coming from 2 population(s) at level 5 %.
#>     Chi2 test statistic: 26.52015  ~ df: 30 
#> 
#>     Estimated ages: 566 494 
#> 
#>     Population numbers:
#>  1 2 1 2 1 1 1 1 2 2 2 2 2 2 2 1 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2It appears that the samples come from 2 different populations of ages.
Finally, the results can be visualized thanks to the following methods:
plot to plot the sample age densities as well as the
common age densitiespopline to plot samples with Th* (calculated from
estimated ages and from U) on x-axis and with Pb on y-axiscalculateAges()calculated.ages <- calculateAges(srilanka2, nloops = 10, seed = 12)
#> Age estimation...
#> MC simulations...
#>  (it might take a while if 'nloops' is large...)
#> 
#> 24 ages and confidence intervals estimated from 10 bootstrap samples.
#>  Summary:
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   458.0   485.0   500.5   505.2   519.2   581.0tests()res.tests <- tests(calculated.ages, nbmax = 3)
#> Test if the 24 estimated ages are coming from
#>  1 2 3 
#> population(s).
#> 
#>     The ages are found to be likely coming from 1 population(s) at level 5 %.
#>     Chi2 test statistic: 28.15801  ~ df: 23 
#> 
#>     Estimated ages: 493 
#> 
#>     Population numbers:
#>  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1This time, only one population is identified (as expected).
NiLeDAM also contains a shiny graphical interface that can be used to perform the actions described above. This interface in launched using:
Seydoux-Guillaume A.M., Montel J.M., Bingen B., Bosse V., de Parseval P., Paquette J.L., Janots E., Wirth R. (2012) Low-temperature alteration of monazite: fluid mediated coupled dissolution-precipitation, irradiation damage and disturbance of the U-Pb and Th-Pb chronometers. Chemical Geology, 330–331, 140–158.