Create components needed by a ssvd object
make_matrix_and_offset.RdUse the Singular Value Decomposition (SVD) to construct a parsimonious representation of a set of rates, probabilities, means, or other values.
Usage
make_matrix_and_offset(x, transform = c("log", "logit", "none"), n_comp = 10)Details
`make_matrix_and_offset() typically proceeds as follows:
transform values in matrix
x(eg take logs)carry out a SVD on the transformed version of
xcentre and scale the results from the SVD to produce matrix
matrixand vectoroffset.
If
\(X\) is a the matrix of transformed values of
x\(F\) is the matrix called
matrix,\(g\) is the vector called
offset, and\(\alpha\) is a vector of standard normal variates,
and
$$\beta = F \alpha + g$$
then \(\beta\) should look like a randomly-selected column from \(X\).
Matrix x typically has age along the rows,
and some combination of classification variables,
such as country and time, along the columns.
One exception is when the SVD is used to capture
the relationship between female and male rates,
in which case rows are formed by interacting
sex and age. See below for an example.
When scale is "log" or "logit",
make_matrix_and_offset() converts any 0s in
x to values just above 0 before
applying the log or logit function.
When scale is "logit",
make_matrix_and_offset() also converts any 1s to values just below 1`.
Examples
x <- matrix(rgamma(n = 150, shape = 1),
nrow = 10,
ncol = 15)
x
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 3.56720380 0.003006878 0.5823610 0.9919389 0.6262240 3.99729207
#> [2,] 1.16790186 3.549754306 0.4097386 0.5870689 1.9758239 0.09760170
#> [3,] 0.05745463 0.320788501 0.4414623 0.9002344 0.1350997 1.59358869
#> [4,] 0.34040705 0.057208557 0.3029223 0.1013501 2.4746057 2.70982721
#> [5,] 3.47156091 1.192544692 0.3143513 0.5136526 0.1306852 0.34895709
#> [6,] 1.04366207 0.977676517 0.1501912 0.5211211 0.1503169 0.84492969
#> [7,] 3.02627506 0.270517553 1.9871448 0.9643644 0.2410900 1.53427309
#> [8,] 0.36756952 0.632583351 0.0957137 1.7860282 0.4381687 1.51650134
#> [9,] 0.09970044 0.687157296 4.3464560 1.1765075 1.3526707 0.47342014
#> [10,] 0.78957870 2.307000169 0.5334439 0.7714259 0.6557784 0.04720586
#> [,7] [,8] [,9] [,10] [,11] [,12] [,13]
#> [1,] 0.280821777 0.1244746 1.3906908 0.9330427 1.5329073 0.24247424 1.95369160
#> [2,] 0.004650806 1.0179040 0.1499705 0.4298801 1.6344452 0.08642313 0.04321846
#> [3,] 0.312242653 0.3315243 1.5212165 0.6262551 1.6104275 0.32607519 0.66979397
#> [4,] 2.300686987 2.9197751 1.0940085 0.6833322 0.2586801 0.28390766 0.14797684
#> [5,] 2.139300961 0.5594540 0.5275938 0.6810664 2.2716396 3.27000473 1.12674682
#> [6,] 0.236397300 2.4718336 0.2797523 0.3335608 1.6820578 0.55451812 2.75331147
#> [7,] 1.629613976 2.2863807 0.3491605 0.2210535 2.3039239 0.97291392 0.33989775
#> [8,] 0.101492580 2.6819784 0.7033173 1.2725915 1.6293517 0.83687730 0.55150446
#> [9,] 2.422577440 0.8104164 2.4537597 5.3369482 1.7628890 1.11902902 0.15003181
#> [10,] 1.110745169 5.1982640 0.2337429 0.4004319 1.0264775 0.54241287 0.79764261
#> [,14] [,15]
#> [1,] 0.16174685 0.4013503
#> [2,] 3.06172416 0.1637757
#> [3,] 0.69982934 2.6790740
#> [4,] 1.71830506 0.4943887
#> [5,] 0.32760009 0.4201330
#> [6,] 0.08526380 0.2787144
#> [7,] 3.75891187 2.7092459
#> [8,] 0.98357963 3.1915289
#> [9,] 0.02302998 1.1277676
#> [10,] 0.08573478 1.1894050
make_matrix_and_offset(x)
#> $matrix
#> 10 x 10 sparse Matrix of class "dgCMatrix"
#>
#> [1,] 0.17528628 -1.65720991 -0.05668403 0.24742426 -0.12856010 0.52205430
#> [2,] 1.43624933 0.42553298 -0.40433772 -0.30518841 -0.14150740 0.36394391
#> [3,] 0.29016560 -0.52792213 0.22617414 -0.28818973 0.71633520 -0.33941385
#> [4,] 0.15679453 -0.69318740 -0.32138916 -0.54972906 -0.62028404 -0.69374772
#> [5,] 0.06933407 -0.02582008 0.46096010 0.67440904 -0.16545291 -0.03744454
#> [6,] 0.53490707 -0.24764186 0.62259009 0.62520632 0.02268646 -0.16637543
#> [7,] 0.04260670 -0.16177638 -0.32886505 0.33069408 -0.13451366 -0.43215747
#> [8,] 0.47571592 -0.17158849 0.02188372 -0.01149469 0.57688061 -0.36545908
#> [9,] -0.12429760 -0.19540437 1.04416407 -0.90435328 -0.07229123 0.21240954
#> [10,] 0.40319892 0.34641700 0.85275585 0.15515048 -0.40469680 -0.23983199
#>
#> [1,] -0.05382438 -0.13367565 0.02172424 0.06702029
#> [2,] -0.12094761 0.09756409 -0.01488215 -0.01058140
#> [3,] -0.16549639 0.23497041 0.27346909 0.07214679
#> [4,] 0.24687043 0.12224166 -0.04302583 0.01352010
#> [5,] -0.14698977 0.40276031 -0.23792116 0.15605022
#> [6,] 0.31797514 0.03301484 0.05181985 -0.28726456
#> [7,] -0.73239081 -0.11274978 -0.02852707 -0.13774428
#> [8,] 0.12704230 -0.27239286 -0.34514803 0.08108567
#> [9,] -0.24182609 0.01868138 -0.16416879 -0.11023359
#> [10,] -0.06628593 -0.28005857 0.19528999 0.19054851
#>
#> $offset
#> [1] -0.68760454 -1.03547562 -0.61234173 -0.57269519 -0.27952568 -0.68642930
#> [7] 0.01722542 -0.27913968 -0.20772451 -0.49823436
#>
make_matrix_and_offset(x, transform = "none")
#> $matrix
#> 10 x 10 sparse Matrix of class "dgCMatrix"
#>
#> [1,] 0.2996417 0.06610274 1.043700877 0.325531605 -0.15409584 0.34910127
#> [2,] 0.2477155 0.40937448 -0.341548025 -0.594214842 0.58028551 0.26914652
#> [3,] 0.2171811 -0.10270269 0.136537464 0.416083501 0.16264076 -0.38330764
#> [4,] 0.2942018 0.12660764 -0.263218156 0.462253467 0.15766163 0.70775843
#> [5,] 0.3053926 0.10509102 0.590533254 -0.745079437 -0.34370231 -0.11831054
#> [6,] 0.2309295 0.37256342 0.008434699 0.002783175 -0.55758549 0.01954166
#> [7,] 0.4344857 0.36076511 0.191031783 -0.044450273 0.58801153 -0.31420802
#> [8,] 0.3188680 0.16322295 -0.246014493 0.463883139 -0.02095599 -0.46556252
#> [9,] 0.3952457 -1.56677822 -0.275352649 -0.158521040 -0.05061767 0.04557032
#> [10,] 0.3147881 0.49614317 -0.820737626 -0.050060946 -0.55385156 0.00738620
#>
#> [1,] 0.28423527 -0.12824557 -0.161901830 -0.015611731
#> [2,] 0.52505756 0.07142443 -0.007002622 0.008505383
#> [3,] 0.22118533 0.22146418 0.122825588 -0.186258688
#> [4,] -0.35725556 0.20954880 0.086740716 0.015019654
#> [5,] -0.28371889 0.30637423 0.001420205 0.004203135
#> [6,] 0.23649237 -0.17764519 0.300593755 0.061105012
#> [7,] -0.39740858 -0.31064927 0.030515615 -0.002633322
#> [8,] 0.14543319 0.19517270 -0.105300459 0.172047404
#> [9,] 0.04781382 -0.09047462 0.004394599 0.011753857
#> [10,] -0.05952236 -0.10500891 -0.169052642 -0.111670126
#>
#> $offset
#> [1] 1.1192818 0.9586588 0.8150044 1.0591588 1.1530194 0.8242205 1.5063178
#> [8] 1.1192524 1.5561574 1.0459526
#>
make_matrix_and_offset(x, n_comp = 2)
#> $matrix
#> 10 x 2 sparse Matrix of class "dgCMatrix"
#>
#> [1,] 0.17528628 -1.65720991
#> [2,] 1.43624933 0.42553298
#> [3,] 0.29016560 -0.52792213
#> [4,] 0.15679453 -0.69318740
#> [5,] 0.06933407 -0.02582008
#> [6,] 0.53490707 -0.24764186
#> [7,] 0.04260670 -0.16177638
#> [8,] 0.47571592 -0.17158849
#> [9,] -0.12429760 -0.19540437
#> [10,] 0.40319892 0.34641700
#>
#> $offset
#> [1] -0.78659953 -1.11042810 -0.45819495 -0.40298282 -0.07126645 -0.56826868
#> [7] -0.09937670 -0.48685316 0.03569183 -0.22527445
#>