linear_algebra_stats

Simple Linear Algebra Functions for Statistics

Description

‘broadcast’ provides some simple Linear Algebra Functions for Statistics:
cinv();
sd_gauss_lc().


Usage

cinv(x)

sd_gauss_lc(X, vc, bad_rp = NaN)

Arguments

x a matrix
X a numeric matrix of constants
vc the variance-covariance matrix for the (correlated) Gaussian random variables.
bad_rp if vc is not a Positive (semi-) Definite matrix, give here the value to replace bad standard deviations with.

Details

cinv()
cinv() computes the Choleski inverse of a symmetric Positive Definite matrix.

sd_gauss_lc()
Given the linear combination X %*% b, where:

  • X is a matrix of constants;

  • b is a vector of (correlated) Gaussian random variables;

  • vc is the variance-covariance matrix for b;

sd_gauss_lc(X, vc) computes the standard deviations for the linear combination X %*% b.
Written in ‘C’ for efficiency.


Value

For cinv():
A matrix.

For sd_gauss_lc():
A vector of standard deviations.

Examples

library("broadcast")


vc <- datasets::ability.cov$cov
X <- matrix(rnorm(1000), 1000, ncol(vc))

solve(vc)
##              general       picture        blocks         maze       reading
## general  0.082259001 -0.0312406436 -7.750932e-03 -0.013309494 -2.061705e-02
## picture -0.031240644  0.2369906996 -2.484938e-02  0.017844845  8.603286e-04
## blocks  -0.007750932 -0.0248493822  1.344272e-02 -0.012544830 -3.802671e-05
## maze    -0.013309494  0.0178448450 -1.254483e-02  0.101625400  5.508423e-03
## reading -0.020617049  0.0008603286 -3.802671e-05  0.005508423  5.713620e-02
## vocab   -0.002420800  0.0019394999 -1.157864e-03 -0.002857265 -2.406969e-02
##                vocab
## general -0.002420800
## picture  0.001939500
## blocks  -0.001157864
## maze    -0.002857265
## reading -0.024069692
## vocab    0.020323179
cinv(vc) # faster than `solve()`, but only works on positive definite matrices
##              [,1]          [,2]          [,3]         [,4]          [,5]
## [1,]  0.082259001 -0.0312406436 -7.750932e-03 -0.013309494 -2.061705e-02
## [2,] -0.031240644  0.2369906996 -2.484938e-02  0.017844845  8.603286e-04
## [3,] -0.007750932 -0.0248493822  1.344272e-02 -0.012544830 -3.802671e-05
## [4,] -0.013309494  0.0178448450 -1.254483e-02  0.101625400  5.508423e-03
## [5,] -0.020617049  0.0008603286 -3.802671e-05  0.005508423  5.713620e-02
## [6,] -0.002420800  0.0019394999 -1.157864e-03 -0.002857265 -2.406969e-02
##              [,6]
## [1,] -0.002420800
## [2,]  0.001939500
## [3,] -0.001157864
## [4,] -0.002857265
## [5,] -0.024069692
## [6,]  0.020323179
all(round(solve(vc), 6) == round(cinv(vc), 6)) # they're the same
## [1] TRUE

sd_gauss_lc(X, vc)
##    [1]  28.97507669  73.46506997   8.51345843  55.65334668   4.05342819
##    [6]   7.28130098  54.69359815  33.43403245  25.28746149  62.95384171
##   [11]  55.08478973  28.83140774  17.13124656  48.94509356  14.30014077
##   [16]  40.75025686   5.68760468  59.23763787  12.80459796   3.73146287
##   [21]  16.86772295  42.30238973  51.38352801  41.05863243  82.21307197
##   [26]   5.59155998  12.16481142   3.93242454  24.17623998  29.35905193
##   [31]  39.63141400  19.74337089  17.84950373  31.05125751  26.09826241
##   [36]  24.61746669  11.61319986  34.99679460   2.03715675   0.30569638
##   [41]  42.92736725  37.80994036   6.77952897  67.00075197  37.13037054
##   [46]  32.69126834  36.62811554   2.51848738   1.57368627  24.45184231
##   [51]  26.29778743   2.16889622   0.74669582  53.40507937  80.51224462
##   [56]   7.80110647   8.47307444  20.80310695   9.04496945  31.06995157
##   [61]  15.11107499  59.10728526  38.20494933   2.81851206  14.05248559
##   [66]  17.43985669   7.10240083  20.87484401  54.15960408   6.38763898
##   [71]   2.35076687  12.05832136   0.18223653  56.14093918  12.56129684
##   [76]   9.00728735  12.73939452  39.44537540  32.27336417  17.66267471
##   [81]   7.90413002  34.84966928  58.60459728  18.94076645  12.18539278
##   [86]  13.92841243  11.53848007  37.02590659  14.86624251   2.02910437
##   [91]  17.02813911  18.28272659   8.22191085   0.36051732  39.14880972
##   [96]  30.08746754  24.99929083  36.01791994  26.58662335  14.62810724
##  [101]  28.36155448   2.32081111  17.50176368  21.09494630  16.13415458
##  [106]  25.41145266  14.80935555  19.18641737   5.57353967  25.77913094
##  [111]  20.24016449  21.03776552  25.17865957  48.48919607  59.96342515
##  [116]  23.06853923  63.28117164  12.43869948   1.15727447  42.49835860
##  [121]   0.40076916  16.73908331  22.90903826   2.12799602   2.12704510
##  [126]  32.37369070   9.23181178   9.02284623   6.28646592  16.07783429
##  [131]  26.08331198  24.58818952  42.10329187  63.16318006   3.76359346
##  [136]   5.54597566  15.67168019  40.50762058   6.21206171  10.04651339
##  [141]   6.32035691  15.04732505  36.75655506  24.30295114  28.43456642
##  [146]  49.05277922   1.87953415  46.38843383  22.81317517   0.14868190
##  [151]  34.18292395   1.95485042  11.82749407  32.90712551  10.46075649
##  [156]  47.69124703  44.26665114   5.70084828   9.33047651  21.20671217
##  [161]  53.72776107  22.39558052   7.59870406  57.15640417  31.86102651
##  [166]  35.69104594  12.17031988   4.68159704  19.86589697  77.27600324
##  [171]  39.50450628  33.91447093  36.24217711  26.22565092  53.84261485
##  [176]  34.89062274  32.90720732  68.08988458  12.36612131  57.43123732
##  [181]  10.65382283  21.32678205   6.25878785   0.31635451   2.15010198
##  [186]   6.19610337  37.53433190  86.82977830  12.34204838   9.81890492
##  [191]   6.93904920  75.79692030   6.06834548  57.03383313  57.06643841
##  [196]  46.24381708   6.36846949  42.38519930  18.38560675   3.27881068
##  [201]  23.40308365  22.20901268  25.61044915  41.99860032  15.83932397
##  [206]   5.07666401   9.00870606   5.42421774  15.74575806  18.35304296
##  [211]  15.09342588  48.74416157   7.47225877  39.05499440  28.37983176
##  [216]  33.50102662  14.42962912   0.44032382  31.66019312  49.43394922
##  [221]  11.00821419  29.34371671  30.62319614  95.92641341  16.81527548
##  [226]   1.37563428  49.11210249  48.42825851   3.68191236   9.27219509
##  [231]  27.17293106  35.12911642  75.74310063  12.41908150  15.95430967
##  [236]  31.34719325  16.97965020  39.79212714  47.73329536  25.43063177
##  [241]  55.96199414   7.78099553  17.83507106  38.82658799   7.95049226
##  [246]  11.50993512  47.25636707   1.62656885   9.48108330  13.81543101
##  [251]  37.08709397  42.06636253  17.28226046  16.06259007  56.98149770
##  [256]  19.11746844  21.51172065  68.81932418   1.95358412   8.93974132
##  [261]  38.15363427   0.08343337  18.12347727  10.40797000  10.29898272
##  [266]  20.75695840  10.51476757  38.46855009  59.19553009  27.33518952
##  [271]  13.94245149   8.19676837   7.07555889  26.74456986   7.93880136
##  [276]  29.30527206  37.07240040  86.05482153  44.21123436  23.96467862
##  [281]  55.76394537   3.25737742 124.86002743  55.79983245   4.05841809
##  [286]  25.42601208  12.38196949  31.03538347  47.44724689  33.62946599
##  [291]   3.84395091  35.11888477   9.02329560   1.93239057   3.78886393
##  [296]  39.26125786  19.53773032  36.85926236  11.03394103  35.67764327
##  [301]  33.72736952  12.26449580   0.64760493  13.22002226   3.31190229
##  [306]  28.92135280   9.56625339  17.51040043  18.14111760   9.10090885
##  [311]  20.58477412  55.99469352  26.36322735   8.18336793  14.64409335
##  [316]  33.58353368  63.25976320  22.32993838   1.58259412  19.22255816
##  [321]   8.79387775  93.66546756   7.62012560   4.65933490   9.90049842
##  [326]  22.52636798  28.78077460  13.56064954  65.27760642  19.10218378
##  [331]  27.82024747  41.97980468   3.95561173  21.85078640  34.23723008
##  [336]  12.44990862  11.67071676   6.95227401  60.31287414  41.17904380
##  [341]  37.08918880  76.59568790  43.54578824  10.35667980  59.82453541
##  [346]  27.95264289  21.85873449  17.76365668   2.40288020  80.93688512
##  [351]  14.07337044  14.40681675  67.89491744  56.07424435  75.47254693
##  [356]  35.25362853  29.44241833   0.59858968  40.97929537   5.60834267
##  [361]  21.07463369  12.45977578  26.17676765  14.84460112   8.48663500
##  [366]  31.60055713  26.22897080  25.75366732   3.66693075  60.26005571
##  [371]  13.22863416  43.98656399  24.87979990  74.38459993   2.83494732
##  [376]  26.50010978  44.09781181   0.86232195   3.04348713  25.18772073
##  [381]  31.18831467   6.88888514   6.61759331  29.23442563  95.80124472
##  [386]  23.07192396  10.35118807  86.25335365  36.11314078  57.55502486
##  [391]  35.08879896   8.57014617   9.09823754   8.49251108   0.19359861
##  [396]  19.56987128  59.46976171  69.09843578   3.32174481  40.85703147
##  [401]  16.43478178   9.06436665  12.65547399  28.54792666  20.62158782
##  [406]  16.01708439  14.61070984  21.19672879  30.47502243  28.09715274
##  [411]   1.13441473   2.57192289  11.52955826  19.35495538  36.75052318
##  [416]  15.36899301   7.53131818  11.20899127  15.63715041  31.53754338
##  [421]  30.11251211  39.05932135   8.81711196  36.22314641  17.47116339
##  [426]  24.78191375   9.73732524  21.13244552   0.11957343   4.27424614
##  [431]   8.93989372   1.46819151   2.21318203  36.08682463  45.20871497
##  [436]  13.59323562   1.44082614  47.33696150  39.60877686  50.98692365
##  [441]  40.26190958  28.86365757  40.74742008  37.42457365  27.96738194
##  [446]  46.12634502  22.04491942  23.48926849  18.97746102  42.41052279
##  [451]  53.20754347   6.50365915  46.03644465   1.02546531  10.93022417
##  [456]  51.67244526  12.66868644  18.85201956   5.30238938  36.41674965
##  [461]  19.77874400  19.76175960  35.81985957  22.92497380   0.30675206
##  [466]  26.53629117  11.17661048   8.93245072  24.59314658  34.80251456
##  [471]  18.07746024  57.78740274  31.05929061  42.52753165   9.37310853
##  [476]  11.54085759  16.08112165  38.69619771  17.68250230   1.78166053
##  [481]   1.61219930  12.23287662   7.46726247  28.09367747  14.51932790
##  [486]  35.79287005  40.91774288  31.25703440  35.11802935   4.36150800
##  [491]  21.37107913   2.00081438   6.56114296  15.18077045   0.01374761
##  [496]  13.12475079  43.69033941  28.95423823  10.10157792  42.49132339
##  [501]  90.98777704  17.03348129  27.84701795   0.08171961   3.39691807
##  [506]   6.39810452   5.60973544   2.35605135  22.62852093  70.52938820
##  [511]   9.36122823  33.05909563  87.22380787   7.64040208  21.36719033
##  [516]  14.12550731  10.65352193  21.15231119   5.98781262   8.53447492
##  [521]  24.05187170  37.95854582  12.04333612   9.79265126  14.22651060
##  [526]   2.65965747  11.73494245  15.72092299  28.24530908   3.22071665
##  [531]   8.00809982  17.18754211  71.65764429  28.50286852   1.11539750
##  [536]  44.09235636  11.95656941   6.36586461   6.01846516  27.40479667
##  [541]  37.30814936   0.13980668   6.58862612  62.77315387  31.94913874
##  [546]  36.90510787  14.47080230  15.44890229  12.46152573  34.67386647
##  [551]  21.36182158  28.22921259   4.55497033  30.75771073   6.47272599
##  [556]  16.02172163  19.43549485  73.51068895  21.78841441  15.87068409
##  [561]  18.11196251   0.26081501  58.23672569   2.57210417  60.31802153
##  [566]   1.29441371   9.18859104   2.72065056  22.15555073  25.08534438
##  [571]   7.75160416   4.95621091   0.12833123  16.42806051  12.96169450
##  [576]  41.13720171  36.96865291  46.54291341  21.06480009  61.43145488
##  [581]   0.43845430  18.48483876  12.46563812  48.75337170  28.26593180
##  [586]  11.09216013   9.64124535  41.74033464  13.40021421   5.34903892
##  [591]  14.94224650  40.25027140  27.48422689  27.74352805  11.43162173
##  [596]  53.05241242  22.15420519  15.22802786  27.42637318  48.20176631
##  [601]   7.34781735  33.60670631  57.30781527  14.42565585  18.33161401
##  [606]  14.82665182  21.26293690  21.67273862   5.94048194  22.46690183
##  [611]  19.03068001  20.50326307  30.50623579  14.81869256  43.38251409
##  [616]  32.55838644   6.25928214  14.91906016   0.03960515  38.39406823
##  [621]  42.25529450  37.79976269   8.14175443  12.64869439  49.75416368
##  [626]  34.29901323  20.01820678  22.76326302  68.27117193  23.05624374
##  [631]  43.11561203   5.79601242  27.94506439  31.83620615   8.54784126
##  [636]  41.29262361   1.10348010  41.04967458   9.94520906  38.07474887
##  [641]  10.97899590  14.41480374   7.97920367  43.38490143  23.25194312
##  [646]  11.44944155  36.41682238  21.42462224  46.17719782   5.44231171
##  [651]   2.03619280  28.08896259  28.87439545   2.52660084  47.48717984
##  [656]  37.49126950  20.92952415  17.57068887   3.19365712   9.12316706
##  [661]  36.82093130  32.50324396   7.73117118  51.52151252   1.65262630
##  [666]   4.20059150  72.75588249   9.54031383   4.22733432   6.63329580
##  [671]  22.43694586   0.16869772  48.43948722  12.37781763   3.60064785
##  [676]   3.78867891  25.14964638  34.49503321  12.36884667  10.03435473
##  [681]  55.48255553  11.29159979  64.98663478   4.63196325  17.89135787
##  [686]   4.27229192  53.79700071  13.16074645  47.97673901  18.52808469
##  [691]  52.04762099  49.09744591  29.11863856   3.37941883  11.94273557
##  [696]  54.00239894   2.34482125  25.19806388  50.08730802   5.78707193
##  [701]  46.52019405  18.38521008  66.38835218  34.31519799   8.56483763
##  [706]   6.97347518   0.87595841   9.95097012  23.17018991  18.26654239
##  [711]  43.33825970  41.71499879  35.03970017   1.85160081  36.30235276
##  [716]  13.68609457  36.02611801  15.74130864  11.49902026  47.27431717
##  [721]  32.30336401  25.09259683  25.91228415  24.77035843  29.64069867
##  [726]  64.57484531   8.65035974  17.29971849  64.45333116  23.29778256
##  [731]   0.69740215  53.06445885  23.92978922  56.73606756  21.00417396
##  [736]   5.47680927   6.88036876   9.27789161   8.74798373  13.33458951
##  [741]   7.73769212  41.56159555  33.93852160  23.98294405  15.92057314
##  [746]   5.80911416  48.21421035  22.69939988  22.86638342   4.79703925
##  [751]  20.53369898   3.08441624   1.44478115  54.58540051  11.43833850
##  [756]   8.34332644  26.44663756  63.79095270  35.86219946  41.35798833
##  [761]  51.22372731  32.25096675   0.02556470   5.03592143  10.37216575
##  [766]  51.69921893   1.80072278   1.33521755  29.17019364  19.94135534
##  [771]   6.05694652  44.03556497  28.92506347  43.23289457  22.96448432
##  [776]  43.29035847  17.20974694  24.02192135  23.98676939  27.14360498
##  [781]  10.20424043  49.19824132  43.64712441   8.27981082   6.90692822
##  [786]  53.96050862  39.02154324  41.56263901  19.92820217  41.78993544
##  [791]   6.15172739   7.64451712  74.32910125  31.28042818  15.62603958
##  [796]  37.82098150   0.82901320  28.93961505  60.36530397   5.13704718
##  [801]  71.39130494  30.64834653  54.68790117  32.06800818  42.32853958
##  [806]  28.42273900   3.18369307  27.29944559  31.53056643  29.17451653
##  [811]  36.69693337   7.28508391  44.17231415   2.38959477  12.67450640
##  [816]  61.83418812   5.22774381  14.87605062  11.96933946  24.65746323
##  [821]  13.71870295  20.67482428  26.33375394   8.44775659  37.19840812
##  [826]   2.86245809   0.56119495  39.18728323  30.79050615  25.67913428
##  [831]   4.12938899  16.27943875  55.59945751  44.63418368  34.67898800
##  [836]   7.42643604  13.13516268  63.76275303   0.98675321  12.85362103
##  [841]  17.92719234  10.34101250  60.56586630  58.87760476  33.75686687
##  [846]  10.71234036  51.85216738  16.44847760  25.70554701   0.82861210
##  [851]  49.75182765  26.07162288   7.12132224   8.95154288  24.71643758
##  [856]  12.12141177  57.00171087  14.21798423  64.88475199  21.90171537
##  [861]  32.51416837  51.78874485  63.54027887  56.00614344  65.29476825
##  [866]  43.95105253  63.70026549   0.77431704  44.88002755  10.71797448
##  [871]   6.86415449  15.03066874 116.29907904  24.01220344  20.96579140
##  [876]  95.49073135  39.78666192  48.69771424  28.31158951  19.30513996
##  [881]  28.63790610  51.37575310  42.41093935  57.54436073  32.08551311
##  [886]  37.01658234  22.95047890  37.37891535  30.48675244  17.86247679
##  [891]  33.45640542  46.27487513  43.59527256   1.09424860  36.03514135
##  [896]  23.43330547  47.74476641   2.00266835   2.05208381   7.45291684
##  [901]  13.42236188  27.52633811  16.25617677  49.49418208  12.28094398
##  [906]  52.31989519   3.77226553   0.38803283  28.17089080  21.11693437
##  [911]  22.91950867  34.59859082  52.24973770   6.96807850   7.35191297
##  [916]  17.35593504  11.46486604   7.40675748  27.68285052   8.86147703
##  [921]  72.17240629  31.07911775  17.10891773  18.83650609   5.63402222
##  [926]  34.94444739  28.06439580  40.24357881  15.62797788  11.12139682
##  [931]   5.95919130   7.01676161  95.08988296  57.47223576  15.08561977
##  [936]  62.58183108   2.52921968  51.84644247   0.52725749  43.24901761
##  [941]   0.94772485  25.94013992  27.40269365  17.07457762  30.65814245
##  [946]  58.14779379  21.14227053   8.50754530  32.45317690  42.84504910
##  [951]   0.19133040  16.85749191  27.71750622   6.81693412  43.63809675
##  [956]  32.86420320  64.61824361  20.04794798  13.45452756  12.33228962
##  [961]  31.76341897   6.14817033  58.30833995  27.80033826  29.98106263
##  [966]  18.96957868   4.45555472  64.30637649  12.32968748  39.44246004
##  [971]  49.82507491   8.64154037  41.19809356  18.96219995  27.94763270
##  [976]   8.36416365  13.91722138   9.64953801  40.61416734  16.39391453
##  [981]  22.73706481  29.91950460  18.76650126   8.11228084  55.77112638
##  [986]  15.57616552  55.75750644   5.43010753  58.99057543  13.84726299
##  [991]  13.54694808  15.92373708  32.87668853  43.65604000   5.69511908
##  [996]  35.53692819  24.20120695  30.66189870  69.94415266  11.67331597