
Small count rounding with post-processing to expected frequencies
Source:R/PLSroundingFits.R
PLSroundingFits.RdThe counts rounded by PLSrounding
Thereafter, based on the publishable rounded data, expected inner cell frequencies are generated by iterative proportional fitting using Mipf.
To ensure that empty cells missing in input data are included in the fitting process, the data is first extended using Extend0.
Usage
PLSroundingFits(
data,
freqVar = NULL,
roundBase = 3,
hierarchies = NULL,
formula = NULL,
dimVar = NULL,
preAggregate = is.null(freqVar),
printInc = nrow(data) > 1000,
xReturn = FALSE,
extend0 = FALSE,
extend0Fits = TRUE,
limit = 1e-10,
viaQR = FALSE,
iter = 1000,
eps = 0.01,
tol = 1e-13,
reduceBy0 = TRUE,
reduceByColSums = TRUE,
reduceByLeverage = FALSE,
...
)Arguments
- data
data frame (inner cells)
- freqVar
Variable holding counts
- roundBase
Rounding base
- hierarchies
List of hierarchies
- formula
Model formula
- dimVar
Dimensional variables
- preAggregate
Aggregation
- printInc
Printing iteration information
- xReturn
Dummy matrix in output when
TRUE. To return crossTable as well, usexReturn = 2.- extend0
PLSroundingparameter. See below.- extend0Fits
When
extend0Fitsis set toTRUE(default), the data is automatically extended. Additionally,extend0Fitscan be specified as a list, or set to"all"(seePLSrounding). Previously, this functionality was controlled by a parameter calledextend0, but nowextend0is specific to thePLSroundingfunction. When bothextend0andextend0Fitsare used simultaneously,extend0Fitsadds an additional extension on top of the one provided byextend0(see example).- limit
LSfitNonNegparameter- viaQR
LSfitNonNegparameter- iter
Mipfparameter- eps
Mipfparameter- tol
Mipfparameter- reduceBy0
Mipfparameter- reduceByColSums
Mipfparameter- reduceByLeverage
Mipfparameter- ...
Further parameters to
PLSrounding.
Value
Output from PLSrounding (class attribute "PLSrounded") with modified versions of inner and publish:
- inner
Extended with more input data variables and with expected frequencies (
ipFit).- publish
Extended with aggregated expected frequencies (
ipFit).
Details
The nine first parameters is documented in more detail in PLSrounding.
If iterative proportional fitting succeeds, the maximum difference between rounded counts and ipFit is less than input parameter eps.
Examples
z <- data.frame(geo = c("Iceland", "Portugal", "Spain"),
eu = c("nonEU", "EU", "EU"),
year = rep(c("2018","2019"), each = 3),
freq = c(2,3,7,1,5,6), stringsAsFactors = FALSE)
z4 <- z[-c(1:2), ]
PLSroundingFits(z4, "freq", formula = ~eu * year + geo, extend0 = FALSE)[c("inner", "publish")]
#> -z(6*12->4*8):. 1 iterations: deviation 0
#> $inner
#> geo eu year freq original rounded difference ipFit
#> 1 Spain EU 2018 7 7 7 0 5.055556
#> 2 Iceland nonEU 2019 1 1 0 -1 0.000000
#> 3 Portugal EU 2019 5 5 5 0 3.055556
#> 4 Spain EU 2019 6 6 6 0 7.944444
#> 5 Iceland nonEU 2018 0 0 0 0 0.000000
#> 6 Portugal EU 2018 0 0 0 0 1.944444
#>
#> $publish
#> geo year original rounded difference ipFit
#> 1 Total Total 19 18 -1 18
#> 2 EU Total 18 18 0 18
#> 3 nonEU Total 1 0 -1 0
#> 4 Total 2018 7 7 0 7
#> 5 Total 2019 12 11 -1 11
#> 6 Iceland Total 1 0 -1 0
#> 7 Portugal Total 5 5 0 5
#> 8 Spain Total 13 13 0 13
#> 9 EU 2018 7 7 0 7
#> 10 EU 2019 11 11 0 11
#> 11 nonEU 2018 0 0 0 0
#> 12 nonEU 2019 1 0 -1 0
#>
PLSroundingFits(z4, "freq", formula = ~eu * year + geo)[c("inner", "publish")]
#> -z(6*12->4*8):. 1 iterations: deviation 0
#> $inner
#> geo eu year freq original rounded difference ipFit
#> 1 Spain EU 2018 7 7 7 0 5.055556
#> 2 Iceland nonEU 2019 1 1 0 -1 0.000000
#> 3 Portugal EU 2019 5 5 5 0 3.055556
#> 4 Spain EU 2019 6 6 6 0 7.944444
#> 5 Iceland nonEU 2018 0 0 0 0 0.000000
#> 6 Portugal EU 2018 0 0 0 0 1.944444
#>
#> $publish
#> geo year original rounded difference ipFit
#> 1 Total Total 19 18 -1 18
#> 2 EU Total 18 18 0 18
#> 3 nonEU Total 1 0 -1 0
#> 4 Total 2018 7 7 0 7
#> 5 Total 2019 12 11 -1 11
#> 6 Iceland Total 1 0 -1 0
#> 7 Portugal Total 5 5 0 5
#> 8 Spain Total 13 13 0 13
#> 9 EU 2018 7 7 0 7
#> 10 EU 2019 11 11 0 11
#> 11 nonEU 2018 0 0 0 0
#> 12 nonEU 2019 1 0 -1 0
#>
my_km2 <- SSBtools::SSBtoolsData("my_km2")
# Default automatic extension (extend0Fits = TRUE)
PLSroundingFits(my_km2, "freq",
formula = ~(Sex + Age) * Municipality * Square1000m + Square250m)[c("inner", "publish")]
#> -z(60*59->33*50):. 1 iterations: deviation 2.842171e-14
#> $inner
#> Square1000m Square250m Municipality Age Sex freq original
#> 1 my_km 500_000 Oslo 15_to_65 female 3 3
#> 2 my_km 500_000 Oslo 15_to_65 male 2 2
#> 3 my_km 500_000 Oslo under_15 male 1 1
#> 4 my_km 750_250 Nittedal 15_to_65 female 2 2
#> 5 my_km 750_250 Nittedal 15_to_65 male 2 2
#> 6 my_km 750_250 Nittedal under_15 female 1 1
#> 7 my_km 750_250 Nittedal under_15 male 1 1
#> 8 my_km 750_500 Nittedal 65_and_over female 1 1
#> 9 my_km 750_500 Nittedal 65_and_over male 1 1
#> 10 my_km 750_500 Oslo 15_to_65 female 1 1
#> 11 another_km another_500_000 Oslo 15_to_65 female 26 26
#> 12 another_km another_500_000 Oslo 15_to_65 male 21 21
#> 13 another_km another_500_000 Oslo under_15 female 31 31
#> 14 another_km another_500_000 Oslo under_15 male 34 34
#> 15 another_km another_750_250 Oslo 15_to_65 female 2 2
#> 16 another_km another_750_250 Oslo 15_to_65 male 1 1
#> 17 another_km another_750_250 Oslo 65_and_over female 10 10
#> 18 another_km another_750_250 Oslo 65_and_over male 13 13
#> 19 my_km 500_000 Oslo under_15 female 0 0
#> 20 my_km 500_000 Oslo 65_and_over female 0 0
#> 21 my_km 500_000 Oslo 65_and_over male 0 0
#> 22 my_km 500_000 Nittedal 15_to_65 female 0 0
#> 23 my_km 500_000 Nittedal 15_to_65 male 0 0
#> 24 my_km 500_000 Nittedal under_15 female 0 0
#> 25 my_km 500_000 Nittedal under_15 male 0 0
#> 26 my_km 500_000 Nittedal 65_and_over female 0 0
#> 27 my_km 500_000 Nittedal 65_and_over male 0 0
#> 28 my_km 750_250 Oslo 15_to_65 female 0 0
#> 29 my_km 750_250 Oslo 15_to_65 male 0 0
#> 30 my_km 750_250 Oslo under_15 female 0 0
#> 31 my_km 750_250 Oslo under_15 male 0 0
#> 32 my_km 750_250 Oslo 65_and_over female 0 0
#> 33 my_km 750_250 Oslo 65_and_over male 0 0
#> 34 my_km 750_250 Nittedal 65_and_over female 0 0
#> 35 my_km 750_250 Nittedal 65_and_over male 0 0
#> 36 my_km 750_500 Oslo 15_to_65 male 0 0
#> 37 my_km 750_500 Oslo under_15 female 0 0
#> 38 my_km 750_500 Oslo under_15 male 0 0
#> 39 my_km 750_500 Oslo 65_and_over female 0 0
#> 40 my_km 750_500 Oslo 65_and_over male 0 0
#> 41 my_km 750_500 Nittedal 15_to_65 female 0 0
#> 42 my_km 750_500 Nittedal 15_to_65 male 0 0
#> 43 my_km 750_500 Nittedal under_15 female 0 0
#> 44 my_km 750_500 Nittedal under_15 male 0 0
#> 45 another_km another_500_000 Oslo 65_and_over female 0 0
#> 46 another_km another_500_000 Oslo 65_and_over male 0 0
#> 47 another_km another_500_000 Nittedal 15_to_65 female 0 0
#> 48 another_km another_500_000 Nittedal 15_to_65 male 0 0
#> 49 another_km another_500_000 Nittedal under_15 female 0 0
#> 50 another_km another_500_000 Nittedal under_15 male 0 0
#> 51 another_km another_500_000 Nittedal 65_and_over female 0 0
#> 52 another_km another_500_000 Nittedal 65_and_over male 0 0
#> 53 another_km another_750_250 Oslo under_15 female 0 0
#> 54 another_km another_750_250 Oslo under_15 male 0 0
#> 55 another_km another_750_250 Nittedal 15_to_65 female 0 0
#> 56 another_km another_750_250 Nittedal 15_to_65 male 0 0
#> 57 another_km another_750_250 Nittedal under_15 female 0 0
#> 58 another_km another_750_250 Nittedal under_15 male 0 0
#> 59 another_km another_750_250 Nittedal 65_and_over female 0 0
#> 60 another_km another_750_250 Nittedal 65_and_over male 0 0
#> rounded difference ipFit
#> 1 3 0 1.125000
#> 2 0 -2 0.000000
#> 3 0 -1 0.000000
#> 4 2 0 0.875000
#> 5 2 0 0.875000
#> 6 0 -1 0.656250
#> 7 3 2 0.656250
#> 8 3 2 0.562500
#> 9 0 -1 0.562500
#> 10 3 2 2.250000
#> 11 26 0 20.289855
#> 12 21 0 20.289855
#> 13 31 0 26.376812
#> 14 34 0 26.376812
#> 15 2 0 4.710145
#> 16 1 0 4.710145
#> 17 10 0 2.166667
#> 18 13 0 2.166667
#> 19 0 0 0.000000
#> 20 0 0 0.000000
#> 21 0 0 0.000000
#> 22 0 0 0.375000
#> 23 0 0 0.375000
#> 24 0 0 0.281250
#> 25 0 0 0.281250
#> 26 0 0 0.281250
#> 27 0 0 0.281250
#> 28 0 0 2.625000
#> 29 0 0 0.000000
#> 30 0 0 0.000000
#> 31 0 0 0.000000
#> 32 0 0 0.000000
#> 33 0 0 0.000000
#> 34 0 0 0.656250
#> 35 0 0 0.656250
#> 36 0 0 0.000000
#> 37 0 0 0.000000
#> 38 0 0 0.000000
#> 39 0 0 0.000000
#> 40 0 0 0.000000
#> 41 0 0 0.750000
#> 42 0 0 0.750000
#> 43 0 0 0.562500
#> 44 0 0 0.562500
#> 45 0 0 9.333333
#> 46 0 0 9.333333
#> 47 0 0 0.000000
#> 48 0 0 0.000000
#> 49 0 0 0.000000
#> 50 0 0 0.000000
#> 51 0 0 0.000000
#> 52 0 0 0.000000
#> 53 0 0 6.123188
#> 54 0 0 6.123188
#> 55 0 0 0.000000
#> 56 0 0 0.000000
#> 57 0 0 0.000000
#> 58 0 0 0.000000
#> 59 0 0 0.000000
#> 60 0 0 0.000000
#>
#> $publish
#> Square250m Municipality Age Sex original rounded difference
#> 1 Total Total Total Total 153 154 1
#> 2 Total Total Total female 77 80 3
#> 3 Total Total Total male 76 74 -2
#> 4 Total Total 15_to_65 Total 60 60 0
#> 5 Total Total 65_and_over Total 25 26 1
#> 6 Total Total under_15 Total 68 68 0
#> 7 Total Nittedal Total Total 8 10 2
#> 8 Total Oslo Total Total 145 144 -1
#> 9 another_km Total Total Total 138 138 0
#> 10 my_km Total Total Total 15 16 1
#> 11 500_000 Total Total Total 6 3 -3
#> 12 750_250 Total Total Total 6 7 1
#> 13 750_500 Total Total Total 3 6 3
#> 14 another_500_000 Total Total Total 112 112 0
#> 15 another_750_250 Total Total Total 26 26 0
#> 16 Total Nittedal Total female 4 5 1
#> 17 Total Oslo Total female 73 75 2
#> 18 Total Nittedal Total male 4 5 1
#> 19 Total Oslo Total male 72 69 -3
#> 20 Total Nittedal 15_to_65 Total 4 4 0
#> 21 Total Oslo 15_to_65 Total 56 56 0
#> 22 Total Nittedal 65_and_over Total 2 3 1
#> 23 Total Oslo 65_and_over Total 23 23 0
#> 24 Total Nittedal under_15 Total 2 3 1
#> 25 Total Oslo under_15 Total 66 65 -1
#> 26 another_km Total Total female 69 69 0
#> 27 my_km Total Total female 8 11 3
#> 28 another_km Total Total male 69 69 0
#> 29 my_km Total Total male 7 5 -2
#> 30 another_km Total 15_to_65 Total 50 50 0
#> 31 my_km Total 15_to_65 Total 10 10 0
#> 32 another_km Total 65_and_over Total 23 23 0
#> 33 my_km Total 65_and_over Total 2 3 1
#> 34 another_km Total under_15 Total 65 65 0
#> 35 my_km Total under_15 Total 3 3 0
#> 36 another_km Nittedal Total Total 0 0 0
#> 37 my_km Nittedal Total Total 8 10 2
#> 38 another_km Oslo Total Total 138 138 0
#> 39 my_km Oslo Total Total 7 6 -1
#> 40 another_km Nittedal Total female 0 0 0
#> 41 my_km Nittedal Total female 4 5 1
#> 42 another_km Oslo Total female 69 69 0
#> 43 my_km Oslo Total female 4 6 2
#> 44 another_km Nittedal Total male 0 0 0
#> 45 my_km Nittedal Total male 4 5 1
#> 46 another_km Oslo Total male 69 69 0
#> 47 my_km Oslo Total male 3 0 -3
#> 48 another_km Nittedal 15_to_65 Total 0 0 0
#> 49 my_km Nittedal 15_to_65 Total 4 4 0
#> 50 another_km Oslo 15_to_65 Total 50 50 0
#> 51 my_km Oslo 15_to_65 Total 6 6 0
#> 52 another_km Nittedal 65_and_over Total 0 0 0
#> 53 my_km Nittedal 65_and_over Total 2 3 1
#> 54 another_km Oslo 65_and_over Total 23 23 0
#> 55 my_km Oslo 65_and_over Total 0 0 0
#> 56 another_km Nittedal under_15 Total 0 0 0
#> 57 my_km Nittedal under_15 Total 2 3 1
#> 58 another_km Oslo under_15 Total 65 65 0
#> 59 my_km Oslo under_15 Total 1 0 -1
#> ipFit
#> 1 154
#> 2 80
#> 3 74
#> 4 60
#> 5 26
#> 6 68
#> 7 10
#> 8 144
#> 9 138
#> 10 16
#> 11 3
#> 12 7
#> 13 6
#> 14 112
#> 15 26
#> 16 5
#> 17 75
#> 18 5
#> 19 69
#> 20 4
#> 21 56
#> 22 3
#> 23 23
#> 24 3
#> 25 65
#> 26 69
#> 27 11
#> 28 69
#> 29 5
#> 30 50
#> 31 10
#> 32 23
#> 33 3
#> 34 65
#> 35 3
#> 36 0
#> 37 10
#> 38 138
#> 39 6
#> 40 0
#> 41 5
#> 42 69
#> 43 6
#> 44 0
#> 45 5
#> 46 69
#> 47 0
#> 48 0
#> 49 4
#> 50 50
#> 51 6
#> 52 0
#> 53 3
#> 54 23
#> 55 0
#> 56 0
#> 57 3
#> 58 65
#> 59 0
#>
# Manual specification to avoid Nittedal combined with another_km
PLSroundingFits(my_km2, "freq", formula = ~(Sex + Age) * Municipality * Square1000m + Square250m,
extend0Fits = list(c("Sex", "Age"),
c("Municipality", "Square1000m", "Square250m")))[c("inner", "publish")]
#> -zx-x-(36*53->24*46):. 1 iterations: deviation 1.421085e-14
#> $inner
#> Square1000m Square250m Municipality Age Sex freq original
#> 1 my_km 500_000 Oslo 15_to_65 female 3 3
#> 2 my_km 500_000 Oslo 15_to_65 male 2 2
#> 3 my_km 500_000 Oslo under_15 male 1 1
#> 4 my_km 750_250 Nittedal 15_to_65 female 2 2
#> 5 my_km 750_250 Nittedal 15_to_65 male 2 2
#> 6 my_km 750_250 Nittedal under_15 female 1 1
#> 7 my_km 750_250 Nittedal under_15 male 1 1
#> 8 my_km 750_500 Nittedal 65_and_over female 1 1
#> 9 my_km 750_500 Nittedal 65_and_over male 1 1
#> 10 my_km 750_500 Oslo 15_to_65 female 1 1
#> 11 another_km another_500_000 Oslo 15_to_65 female 26 26
#> 12 another_km another_500_000 Oslo 15_to_65 male 21 21
#> 13 another_km another_500_000 Oslo under_15 female 31 31
#> 14 another_km another_500_000 Oslo under_15 male 34 34
#> 15 another_km another_750_250 Oslo 15_to_65 female 2 2
#> 16 another_km another_750_250 Oslo 15_to_65 male 1 1
#> 17 another_km another_750_250 Oslo 65_and_over female 10 10
#> 18 another_km another_750_250 Oslo 65_and_over male 13 13
#> 19 my_km 500_000 Oslo under_15 female 0 0
#> 20 my_km 500_000 Oslo 65_and_over female 0 0
#> 21 my_km 500_000 Oslo 65_and_over male 0 0
#> 22 my_km 750_250 Nittedal 65_and_over female 0 0
#> 23 my_km 750_250 Nittedal 65_and_over male 0 0
#> 24 my_km 750_500 Nittedal 15_to_65 female 0 0
#> 25 my_km 750_500 Nittedal 15_to_65 male 0 0
#> 26 my_km 750_500 Nittedal under_15 male 0 0
#> 27 my_km 750_500 Nittedal under_15 female 0 0
#> 28 my_km 750_500 Oslo 15_to_65 male 0 0
#> 29 my_km 750_500 Oslo under_15 male 0 0
#> 30 my_km 750_500 Oslo under_15 female 0 0
#> 31 my_km 750_500 Oslo 65_and_over female 0 0
#> 32 my_km 750_500 Oslo 65_and_over male 0 0
#> 33 another_km another_500_000 Oslo 65_and_over female 0 0
#> 34 another_km another_500_000 Oslo 65_and_over male 0 0
#> 35 another_km another_750_250 Oslo under_15 male 0 0
#> 36 another_km another_750_250 Oslo under_15 female 0 0
#> rounded difference ipFit
#> 1 3 0 3.000000
#> 2 0 -2 0.000000
#> 3 0 -1 0.000000
#> 4 2 0 1.400000
#> 5 2 0 1.400000
#> 6 0 -1 1.050000
#> 7 3 2 1.050000
#> 8 3 2 0.450000
#> 9 0 -1 0.450000
#> 10 3 2 3.000000
#> 11 26 0 20.289855
#> 12 21 0 20.289855
#> 13 31 0 26.376812
#> 14 34 0 26.376812
#> 15 2 0 4.710145
#> 16 1 0 4.710145
#> 17 10 0 2.166667
#> 18 13 0 2.166667
#> 19 0 0 0.000000
#> 20 0 0 0.000000
#> 21 0 0 0.000000
#> 22 0 0 1.050000
#> 23 0 0 1.050000
#> 24 0 0 0.600000
#> 25 0 0 0.600000
#> 26 0 0 0.450000
#> 27 0 0 0.450000
#> 28 0 0 0.000000
#> 29 0 0 0.000000
#> 30 0 0 0.000000
#> 31 0 0 0.000000
#> 32 0 0 0.000000
#> 33 0 0 9.333333
#> 34 0 0 9.333333
#> 35 0 0 6.123188
#> 36 0 0 6.123188
#>
#> $publish
#> Square250m Municipality Age Sex original rounded difference
#> 1 Total Total Total Total 153 154 1
#> 2 Total Total Total female 77 80 3
#> 3 Total Total Total male 76 74 -2
#> 4 Total Total 15_to_65 Total 60 60 0
#> 5 Total Total 65_and_over Total 25 26 1
#> 6 Total Total under_15 Total 68 68 0
#> 7 Total Nittedal Total Total 8 10 2
#> 8 Total Oslo Total Total 145 144 -1
#> 9 another_km Total Total Total 138 138 0
#> 10 my_km Total Total Total 15 16 1
#> 11 500_000 Total Total Total 6 3 -3
#> 12 750_250 Total Total Total 6 7 1
#> 13 750_500 Total Total Total 3 6 3
#> 14 another_500_000 Total Total Total 112 112 0
#> 15 another_750_250 Total Total Total 26 26 0
#> 16 Total Nittedal Total female 4 5 1
#> 17 Total Oslo Total female 73 75 2
#> 18 Total Nittedal Total male 4 5 1
#> 19 Total Oslo Total male 72 69 -3
#> 20 Total Nittedal 15_to_65 Total 4 4 0
#> 21 Total Oslo 15_to_65 Total 56 56 0
#> 22 Total Nittedal 65_and_over Total 2 3 1
#> 23 Total Oslo 65_and_over Total 23 23 0
#> 24 Total Nittedal under_15 Total 2 3 1
#> 25 Total Oslo under_15 Total 66 65 -1
#> 26 another_km Total Total female 69 69 0
#> 27 my_km Total Total female 8 11 3
#> 28 another_km Total Total male 69 69 0
#> 29 my_km Total Total male 7 5 -2
#> 30 another_km Total 15_to_65 Total 50 50 0
#> 31 my_km Total 15_to_65 Total 10 10 0
#> 32 another_km Total 65_and_over Total 23 23 0
#> 33 my_km Total 65_and_over Total 2 3 1
#> 34 another_km Total under_15 Total 65 65 0
#> 35 my_km Total under_15 Total 3 3 0
#> 36 my_km Nittedal Total Total 8 10 2
#> 37 another_km Oslo Total Total 138 138 0
#> 38 my_km Oslo Total Total 7 6 -1
#> 39 my_km Nittedal Total female 4 5 1
#> 40 another_km Oslo Total female 69 69 0
#> 41 my_km Oslo Total female 4 6 2
#> 42 my_km Nittedal Total male 4 5 1
#> 43 another_km Oslo Total male 69 69 0
#> 44 my_km Oslo Total male 3 0 -3
#> 45 my_km Nittedal 15_to_65 Total 4 4 0
#> 46 another_km Oslo 15_to_65 Total 50 50 0
#> 47 my_km Oslo 15_to_65 Total 6 6 0
#> 48 my_km Nittedal 65_and_over Total 2 3 1
#> 49 another_km Oslo 65_and_over Total 23 23 0
#> 50 my_km Oslo 65_and_over Total 0 0 0
#> 51 my_km Nittedal under_15 Total 2 3 1
#> 52 another_km Oslo under_15 Total 65 65 0
#> 53 my_km Oslo under_15 Total 1 0 -1
#> ipFit
#> 1 154
#> 2 80
#> 3 74
#> 4 60
#> 5 26
#> 6 68
#> 7 10
#> 8 144
#> 9 138
#> 10 16
#> 11 3
#> 12 7
#> 13 6
#> 14 112
#> 15 26
#> 16 5
#> 17 75
#> 18 5
#> 19 69
#> 20 4
#> 21 56
#> 22 3
#> 23 23
#> 24 3
#> 25 65
#> 26 69
#> 27 11
#> 28 69
#> 29 5
#> 30 50
#> 31 10
#> 32 23
#> 33 3
#> 34 65
#> 35 3
#> 36 10
#> 37 138
#> 38 6
#> 39 5
#> 40 69
#> 41 6
#> 42 5
#> 43 69
#> 44 0
#> 45 4
#> 46 50
#> 47 6
#> 48 3
#> 49 23
#> 50 0
#> 51 3
#> 52 65
#> 53 0
#>
# Example with both extend0 (specified) and extend0Fits (default is TRUE)
PLSroundingFits(my_km2, "freq", formula = ~(Sex + Age) * Municipality * Square1000m + Square250m,
printInc = TRUE, zeroCandidates = TRUE, roundBase = 5, extend0 = list(c("Sex", "Age"),
c("Municipality", "Square1000m", "Square250m")))[c("inner", "publish")]
#> [extend0 18*6->36*6]
#> [extend0Fits 36*6->60*6]
#> [-**...:=]
#> -z(60*59->27*47):. 1 iterations: deviation 1.421085e-14
#> $inner
#> Sex Age Municipality Square1000m Square250m freq original
#> 1 female 15_to_65 Oslo my_km 500_000 3 3
#> 2 male 15_to_65 Oslo my_km 500_000 2 2
#> 3 male under_15 Oslo my_km 500_000 1 1
#> 4 female 15_to_65 Nittedal my_km 750_250 2 2
#> 5 male 15_to_65 Nittedal my_km 750_250 2 2
#> 6 female under_15 Nittedal my_km 750_250 1 1
#> 7 male under_15 Nittedal my_km 750_250 1 1
#> 8 female 65_and_over Nittedal my_km 750_500 1 1
#> 9 male 65_and_over Nittedal my_km 750_500 1 1
#> 10 female 15_to_65 Oslo my_km 750_500 1 1
#> 11 female 15_to_65 Oslo another_km another_500_000 26 26
#> 12 male 15_to_65 Oslo another_km another_500_000 21 21
#> 13 female under_15 Oslo another_km another_500_000 31 31
#> 14 male under_15 Oslo another_km another_500_000 34 34
#> 15 female 15_to_65 Oslo another_km another_750_250 2 2
#> 16 male 15_to_65 Oslo another_km another_750_250 1 1
#> 17 female 65_and_over Oslo another_km another_750_250 10 10
#> 18 male 65_and_over Oslo another_km another_750_250 13 13
#> 19 female under_15 Oslo my_km 500_000 0 0
#> 20 female 65_and_over Oslo my_km 500_000 0 0
#> 21 male 65_and_over Oslo my_km 500_000 0 0
#> 22 female 65_and_over Nittedal my_km 750_250 0 0
#> 23 male 65_and_over Nittedal my_km 750_250 0 0
#> 24 female 15_to_65 Nittedal my_km 750_500 0 0
#> 25 male 15_to_65 Nittedal my_km 750_500 0 0
#> 26 male under_15 Nittedal my_km 750_500 0 0
#> 27 female under_15 Nittedal my_km 750_500 0 0
#> 28 male 15_to_65 Oslo my_km 750_500 0 0
#> 29 male under_15 Oslo my_km 750_500 0 0
#> 30 female under_15 Oslo my_km 750_500 0 0
#> 31 female 65_and_over Oslo my_km 750_500 0 0
#> 32 male 65_and_over Oslo my_km 750_500 0 0
#> 33 female 65_and_over Oslo another_km another_500_000 0 0
#> 34 male 65_and_over Oslo another_km another_500_000 0 0
#> 35 male under_15 Oslo another_km another_750_250 0 0
#> 36 female under_15 Oslo another_km another_750_250 0 0
#> 37 female 15_to_65 Nittedal my_km 500_000 0 0
#> 38 male 15_to_65 Nittedal my_km 500_000 0 0
#> 39 female under_15 Nittedal my_km 500_000 0 0
#> 40 male under_15 Nittedal my_km 500_000 0 0
#> 41 female 65_and_over Nittedal my_km 500_000 0 0
#> 42 male 65_and_over Nittedal my_km 500_000 0 0
#> 43 female 15_to_65 Oslo my_km 750_250 0 0
#> 44 male 15_to_65 Oslo my_km 750_250 0 0
#> 45 female under_15 Oslo my_km 750_250 0 0
#> 46 male under_15 Oslo my_km 750_250 0 0
#> 47 female 65_and_over Oslo my_km 750_250 0 0
#> 48 male 65_and_over Oslo my_km 750_250 0 0
#> 49 female 15_to_65 Nittedal another_km another_500_000 0 0
#> 50 male 15_to_65 Nittedal another_km another_500_000 0 0
#> 51 female under_15 Nittedal another_km another_500_000 0 0
#> 52 male under_15 Nittedal another_km another_500_000 0 0
#> 53 female 65_and_over Nittedal another_km another_500_000 0 0
#> 54 male 65_and_over Nittedal another_km another_500_000 0 0
#> 55 female 15_to_65 Nittedal another_km another_750_250 0 0
#> 56 male 15_to_65 Nittedal another_km another_750_250 0 0
#> 57 female under_15 Nittedal another_km another_750_250 0 0
#> 58 male under_15 Nittedal another_km another_750_250 0 0
#> 59 female 65_and_over Nittedal another_km another_750_250 0 0
#> 60 male 65_and_over Nittedal another_km another_750_250 0 0
#> rounded difference ipFit
#> 1 5 2 1.6666667
#> 2 0 -2 0.0000000
#> 3 0 -1 0.0000000
#> 4 0 -2 0.8333333
#> 5 5 3 0.8333333
#> 6 0 -1 0.8333333
#> 7 0 -1 0.8333333
#> 8 0 -1 0.0000000
#> 9 0 -1 0.0000000
#> 10 0 -1 1.6666667
#> 11 26 0 20.2898551
#> 12 21 0 20.2898551
#> 13 31 0 26.3768116
#> 14 34 0 26.3768116
#> 15 2 0 4.7101449
#> 16 1 0 4.7101449
#> 17 10 0 2.1666667
#> 18 13 0 2.1666667
#> 19 0 0 0.0000000
#> 20 0 0 0.0000000
#> 21 0 0 0.0000000
#> 22 0 0 0.0000000
#> 23 0 0 0.0000000
#> 24 0 0 0.8333333
#> 25 0 0 0.8333333
#> 26 0 0 0.8333333
#> 27 5 5 0.8333333
#> 28 0 0 0.0000000
#> 29 0 0 0.0000000
#> 30 0 0 0.0000000
#> 31 0 0 0.0000000
#> 32 0 0 0.0000000
#> 33 0 0 9.3333333
#> 34 0 0 9.3333333
#> 35 0 0 6.1231884
#> 36 0 0 6.1231884
#> 37 0 0 0.8333333
#> 38 0 0 0.8333333
#> 39 0 0 0.8333333
#> 40 0 0 0.8333333
#> 41 0 0 0.0000000
#> 42 0 0 0.0000000
#> 43 0 0 1.6666667
#> 44 0 0 0.0000000
#> 45 0 0 0.0000000
#> 46 0 0 0.0000000
#> 47 0 0 0.0000000
#> 48 0 0 0.0000000
#> 49 0 0 0.0000000
#> 50 0 0 0.0000000
#> 51 0 0 0.0000000
#> 52 0 0 0.0000000
#> 53 0 0 0.0000000
#> 54 0 0 0.0000000
#> 55 0 0 0.0000000
#> 56 0 0 0.0000000
#> 57 0 0 0.0000000
#> 58 0 0 0.0000000
#> 59 0 0 0.0000000
#> 60 0 0 0.0000000
#>
#> $publish
#> Sex Age Municipality Square250m original rounded difference
#> 1 Total Total Total Total 153 153 0
#> 2 female Total Total Total 77 79 2
#> 3 male Total Total Total 76 74 -2
#> 4 Total 15_to_65 Total Total 60 60 0
#> 5 Total 65_and_over Total Total 25 23 -2
#> 6 Total under_15 Total Total 68 70 2
#> 7 Total Total Nittedal Total 8 10 2
#> 8 Total Total Oslo Total 145 143 -2
#> 9 Total Total Total another_km 138 138 0
#> 10 Total Total Total my_km 15 15 0
#> 11 Total Total Total 500_000 6 5 -1
#> 12 Total Total Total 750_250 6 5 -1
#> 13 Total Total Total 750_500 3 5 2
#> 14 Total Total Total another_500_000 112 112 0
#> 15 Total Total Total another_750_250 26 26 0
#> 16 female Total Nittedal Total 4 5 1
#> 17 female Total Oslo Total 73 74 1
#> 18 male Total Nittedal Total 4 5 1
#> 19 male Total Oslo Total 72 69 -3
#> 20 Total 15_to_65 Nittedal Total 4 5 1
#> 21 Total 15_to_65 Oslo Total 56 55 -1
#> 22 Total 65_and_over Nittedal Total 2 0 -2
#> 23 Total 65_and_over Oslo Total 23 23 0
#> 24 Total under_15 Nittedal Total 2 5 3
#> 25 Total under_15 Oslo Total 66 65 -1
#> 26 female Total Total another_km 69 69 0
#> 27 female Total Total my_km 8 10 2
#> 28 male Total Total another_km 69 69 0
#> 29 male Total Total my_km 7 5 -2
#> 30 Total 15_to_65 Total another_km 50 50 0
#> 31 Total 15_to_65 Total my_km 10 10 0
#> 32 Total 65_and_over Total another_km 23 23 0
#> 33 Total 65_and_over Total my_km 2 0 -2
#> 34 Total under_15 Total another_km 65 65 0
#> 35 Total under_15 Total my_km 3 5 2
#> 36 Total Total Nittedal another_km 0 0 0
#> 37 Total Total Nittedal my_km 8 10 2
#> 38 Total Total Oslo another_km 138 138 0
#> 39 Total Total Oslo my_km 7 5 -2
#> 40 female Total Nittedal another_km 0 0 0
#> 41 female Total Nittedal my_km 4 5 1
#> 42 female Total Oslo another_km 69 69 0
#> 43 female Total Oslo my_km 4 5 1
#> 44 male Total Nittedal another_km 0 0 0
#> 45 male Total Nittedal my_km 4 5 1
#> 46 male Total Oslo another_km 69 69 0
#> 47 male Total Oslo my_km 3 0 -3
#> 48 Total 15_to_65 Nittedal another_km 0 0 0
#> 49 Total 15_to_65 Nittedal my_km 4 5 1
#> 50 Total 15_to_65 Oslo another_km 50 50 0
#> 51 Total 15_to_65 Oslo my_km 6 5 -1
#> 52 Total 65_and_over Nittedal another_km 0 0 0
#> 53 Total 65_and_over Nittedal my_km 2 0 -2
#> 54 Total 65_and_over Oslo another_km 23 23 0
#> 55 Total 65_and_over Oslo my_km 0 0 0
#> 56 Total under_15 Nittedal another_km 0 0 0
#> 57 Total under_15 Nittedal my_km 2 5 3
#> 58 Total under_15 Oslo another_km 65 65 0
#> 59 Total under_15 Oslo my_km 1 0 -1
#> ipFit
#> 1 153
#> 2 79
#> 3 74
#> 4 60
#> 5 23
#> 6 70
#> 7 10
#> 8 143
#> 9 138
#> 10 15
#> 11 5
#> 12 5
#> 13 5
#> 14 112
#> 15 26
#> 16 5
#> 17 74
#> 18 5
#> 19 69
#> 20 5
#> 21 55
#> 22 0
#> 23 23
#> 24 5
#> 25 65
#> 26 69
#> 27 10
#> 28 69
#> 29 5
#> 30 50
#> 31 10
#> 32 23
#> 33 0
#> 34 65
#> 35 5
#> 36 0
#> 37 10
#> 38 138
#> 39 5
#> 40 0
#> 41 5
#> 42 69
#> 43 5
#> 44 0
#> 45 5
#> 46 69
#> 47 0
#> 48 0
#> 49 5
#> 50 50
#> 51 5
#> 52 0
#> 53 0
#> 54 23
#> 55 0
#> 56 0
#> 57 5
#> 58 65
#> 59 0
#>