多个模拟序列之间的一个预测回归关系

问题描述 投票:0回答:2

我模拟了长度为 100 的两个独立随机游走的 1000 次实现

N <- 1000
n <- 100
set.seed(1)
M.x <- sapply(1:N, \(k) cumsum(rnorm(n)))
M.y <- sapply(1:N, \(k) cumsum(rnorm(n)))

在矩阵中

M.x
M.y
是列中的实现。

对于每个组合“列到列”,我想通过使用简单线性回归

lm(y ~ -1 + x)
来估计回归系数并提取回归系数。

我想避免循环。我更喜欢使用

map()
包中
purrr
系列的东西,我对此还不太了解。

我将非常感谢您的帮助。

r linear-regression purrr
2个回答
2
投票

请注意,无截距的简单线性回归中的斜率公式为

sum(x*y)/sum(x^2)
。我们可以以矩阵形式利用它:

diag(t(M.x) %*% M.y) / diag(t(M.x) %*% M.x)

[1]  0.142780158 -0.688172617  0.591777820  1.096226652  0.458449019 -0.729486974 -0.161225471
[8] -0.275493553  0.500602766 -0.175171117 -0.400500634  0.111438175  0.005283035 -0.302037119
[15] -0.588920240 -1.675476344 -1.609057813  0.047642782 -0.229759970 -0.599253230  2.537797206

正如@Onyambu 指出的,更有效的方法是:

colSums(M.x*M.y)/colSums(M.x^2)

基准:

benchmark("matrix_mul" = {
            a <- diag(t(M.x) %*% M.y) / diag(t(M.x) %*% M.x)
          },
          "colsums" = {
            a <- colSums(M.x*M.y)/colSums(M.x^2)
          },
          replications = 10)

        test replications elapsed relative user.self sys.self user.child
2    colsums           10   0.021    1.000      0.02     0.00          0
1 matrix_mul           10   2.775  132.143      2.73     0.05          0
  sys.child
2         0
1         0

1
投票

您可以再次使用

sapply

unname(sapply(1:N, \(i) lm(M.y[,i] ~ -1 + M.x[,i])$coef))
#>    [1]  0.142780158 -0.688172617  0.591777820  1.096226652  0.458449019
#>    [6] -0.729486974 -0.161225471 -0.275493553  0.500602766 -0.175171117
#>   [11] -0.400500634  0.111438175  0.005283035 -0.302037119 -0.588920240
#>   [16] -1.675476344 -1.609057813  0.047642782 -0.229759970 -0.599253230
#>   [21]  2.537797206 -2.977715213  0.636540370  0.061993011  2.188426275
#>   [26]  0.679679549 -0.719462566 -1.197273286 -0.416117471  1.664768550
#>   [31] -1.005816693 -1.162631092 -0.294099681  0.729467645 -0.215695317
#>   [36]  0.956380670  1.846427922  0.489391447 -0.885925810  0.066974384
#>   [41]  0.606102008  0.406679708  1.597965339 -0.202898267  0.019374302
#>   [46] -0.107405981  0.422746366  0.807129063  0.595192146  0.408670969
#>   [51] -0.327639464  0.008517012 -0.409888273  1.263649176 -1.542075828
#>   [56]  0.512431632  1.155453295  0.053880676 -0.036682612  0.877186512
#>   [61] -0.328162501  0.649707679 -0.557597309  0.975597615  1.625491381
#>   [66]  0.428314366 -0.709623799  0.073475141 -0.202766409 -0.340904465
#>   [71] -1.053087943 -0.956892298  1.341394636 -0.397776745 -0.036116668
#>   [76]  0.523498836 -0.063581399  0.211290060 -1.962040442 -0.471110719
#>   [81] -1.298191872 -0.086383535 -0.460128743  0.252570031 -0.033313877
#>   [86] -0.475633530 -1.632861518 -0.593702856 -0.827513457 -0.001396760
#>   [91]  0.563178278 -0.382932729  1.320015422 -0.486670558 -1.923201522
#>   [96] -2.771269220 -1.127225486  1.279884834  0.908108916 -0.703459180
#>  [101]  1.153656849 -0.887346302 -0.171878860  0.103040892 -0.355599609
#>  [106] -0.703744718  1.470741204  2.535436357 -1.130265337  0.919289133
#>  [111]  0.382851146  0.539736322  0.535958651 -0.449753720  0.466950594
#>  [116] -0.080096195 -0.159956416 -1.710404742 -0.766018196 -1.587517475
#>  [121]  0.243087724 -1.229835873 -3.136643564  1.431822385 -0.285076483
#>  [126]  0.855901812 -0.585610441 -0.452630066  0.635419369  1.069862989
#>  [131] -2.327251784  0.130630588 -0.038356725 -0.746222770  0.809647919
#>  [136] -1.048461673  0.537289403 -2.085502597 -1.432872359 -0.651188384
#>  [141] -0.174702321  1.118701033  0.996249234  0.098764025  0.073821528
#>  [146]  0.453500977  0.091910378 -0.084203508 -0.808649050 -0.284186968
#>  [151]  0.563463177  0.195282849  0.473938277  0.825834685 -0.615184094
#>  [156] -1.475076996 -0.279765852  0.746661436 -0.042608477  2.260168802
#>  [161] -0.211406901 -2.079142805  1.742691178  0.735913352  2.098113271
#>  [166]  0.159075799 -0.271114399 -0.468704277  1.433374757  0.001036845
#>  [171] -0.960438240  1.207444303  0.248658537  0.302821523  0.002429807
#>  [176]  1.296961757  0.583911152 -1.106773843 -1.926896071  0.120309394
#>  [181]  2.474567183  0.597633724 -0.184838007  0.150638633  0.069206696
#>  [186] -0.854393866  0.988315471 -0.679071373  4.284405478  0.710587262
#>  [191] -0.501174873 -0.773781398 -0.276915623  1.598569824 -0.942613117
#>  [196] -0.581714832  0.307788847 -0.001973353  0.356196868  1.353933718
#>  [201] -0.463888593  0.291795383  0.665797455  0.959419426 -0.547117724
#>  [206] -0.609298164  1.265522580  0.954084026  0.568211456  0.866577912
#>  [211] -0.262119503 -0.297727275  1.190209818 -0.060594486 -0.499806100
#>  [216] -2.257997852  0.125542723  0.092895114  0.767227486  0.177355546
#>  [221]  0.088750566 -0.694623358  0.755471912  0.072190646 -0.313446456
#>  [226]  0.985802298 -0.306558415  0.570389359 -0.240827270  0.566492738
#>  [231] -1.699678519 -1.245365340  0.760514004 -0.278772143  0.012356502
#>  [236]  0.314190770 -0.752788913 -0.522973334  0.564922093 -0.818729227
#>  [241]  0.316896487 -0.061078787 -0.248392816  0.740108985 -0.189991526
#>  [246] -0.093572645  0.511704832  1.376989240 -0.328069553 -1.195800396
#>  [251]  0.121389063  0.649641858  0.460376652  0.147758772 -0.400891935
#>  [256]  0.743865930  1.290839946  0.282205768  0.684324693 -0.241200342
#>  [261] -0.005604070 -0.008407957 -0.258061457 -0.104181623 -0.721145183
#>  [266] -0.531989833  0.958034973 -0.019485204 -0.640718886 -1.050179620
#>  [271]  0.100071359  0.969843131  0.433737583 -0.488703249  0.409396810
#>  [276] -0.272751252 -0.694075277  0.252244042 -0.600687490 -1.642538569
#>  [281]  1.106936025  0.919048889  0.971942874  0.379891648  0.008922961
#>  [286] -0.244725919  1.373009578 -0.595568748  0.820877695  0.078434072
#>  [291]  1.621109471 -0.552126110  0.790993402  1.234568207  0.942040388
#>  [296]  1.313044432 -0.678262672  0.478572186 -0.214135010 -1.121011739
#>  [301] -1.514925554 -0.382354982 -1.206988640 -0.340690348  0.547124102
#>  [306] -0.045360546  0.440435604 -0.690129377  0.319584078  0.775831568
#>  [311]  0.460294762  1.505941187  0.308014083  1.057926228  1.038160496
#>  [316]  0.702004015 -0.559355572  0.025643119  1.251236134  0.486673391
#>  [321] -0.152482284 -0.812259297 -0.086964018 -0.331959372 -1.351203941
#>  [326] -1.325641395  0.750480747  0.225129511 -0.302439528  0.368495587
#>  [331] -0.155709918  0.030223853 -0.421697568 -0.082027612  0.505391874
#>  [336] -0.177161150  0.664516409 -1.175020606  0.559086969 -0.926244570
#>  [341] -0.988884806 -1.795195859 -1.242319946  0.278460180 -0.387542222
#>  [346] -3.241608445  0.545854689  0.399026127 -0.103525327  1.193451241
#>  [351]  0.590264050  0.755009240 -0.670187334 -0.238820106  0.668178223
#>  [356] -0.609009594  0.181935783 -0.653944599 -0.563463065  0.076750822
#>  [361] -0.669208489  0.620508443 -1.210562126  2.594621571  0.823149487
#>  [366] -0.418400403  0.087126846  0.011642997 -0.054161075 -0.701836104
#>  [371]  0.724482722  0.057437708 -1.138908592 -1.611934282  0.484930031
#>  [376]  0.627516677  0.511555475  1.671077505 -1.869605290  0.104855370
#>  [381] -0.500006866  0.664458715 -0.254880133  0.273153560 -0.972156766
#>  [386] -0.612948676  0.463238387 -0.771706884 -0.152892676 -0.277668758
#>  [391] -0.034229842  0.592440207  1.476814388  0.274990442  0.683610781
#>  [396] -1.677356321  0.447578448 -0.466287718  0.059293393  1.983837238
#>  [401] -0.077064452  1.535348498  0.232939092 -0.859431993 -0.790554969
#>  [406]  4.185362384  0.104208531  0.232461652  1.032037726 -0.507343252
#>  [411] -0.717896429 -0.024296632 -0.114259015  1.278474957  0.253348442
#>  [416] -0.493087330 -1.481319794 -0.051070933  0.528177631 -0.764335578
#>  [421] -0.354651054 -0.025094481  0.877145682 -0.025753603  1.147501626
#>  [426] -0.736490995 -0.358757791  0.984722673  0.625297939  0.267092517
#>  [431] -0.125890124  0.655998709 -0.433716359 -1.180240544 -0.023133140
#>  [436] -2.058958525  0.045283679  0.994295964 -2.726133031  0.589739694
#>  [441]  0.522789707  0.255225152 -0.842458719 -3.288018360  0.268888458
#>  [446] -1.025985070  1.783538144  0.274914979  0.549368818  1.014576846
#>  [451] -0.414151885 -0.312253275 -0.049141545 -0.222312373  1.011742456
#>  [456]  0.582157308 -1.501621742 -0.834920693  0.175630033 -0.668892854
#>  [461]  1.136500854 -1.042510367 -0.388277548  1.579019482 -0.338852237
#>  [466]  1.229626862  0.383807372 -1.031890439 -0.182115176 -0.461429897
#>  [471]  0.245829274  1.122306941  0.490415809 -0.008683220  0.045273361
#>  [476]  1.357918350  0.421894080 -0.363645529  0.614758589  0.665282720
#>  [481]  1.954763605 -0.145879345 -0.153090170 -0.029691622 -0.428708901
#>  [486] -0.208822466  0.019570092 -2.399608403  0.525993397 -0.005184060
#>  [491]  1.368057020 -0.329971374  0.290391874 -0.815309000 -0.008396685
#>  [496]  1.325130172  1.250087677  0.429978678 -0.787679242 -1.534935317
#>  [501] -0.831585909  0.973363449 -1.637260710 -0.015329439 -0.276239062
#>  [506]  0.400099010  1.034728008  0.161922721 -0.036928227  0.906681043
#>  [511]  1.388616887  0.413838396 -0.593609601 -0.553056503 -0.076678301
#>  [516] -0.112235818 -0.138329801 -0.138426635  0.912623273 -0.909450247
#>  [521]  0.182960923  0.610006736  0.596871007  0.094906527  1.429897683
#>  [526] -1.980858050 -1.038331200 -0.322100701  1.176064916  1.008884733
#>  [531]  0.323342093  0.693673733  0.558897396 -0.321437122  0.427578935
#>  [536]  0.272240144 -0.248542287 -1.376679813  0.771310134 -1.918237330
#>  [541]  1.118653706  0.253123615 -0.048065085 -0.081069590  0.260625490
#>  [546] -0.199715775 -0.196610461 -1.333797311 -0.294943351 -1.680231262
#>  [551] -0.056302127 -0.237052281  1.344312600 -1.679848830  0.392146617
#>  [556] -0.230505381  0.073599679  1.124174778  0.152681151  0.277105893
#>  [561]  0.318497229 -2.622962122 -0.025196409  0.253981739 -0.316410464
#>  [566]  0.842998848  0.193398191  0.074307214  0.388002690 -1.053945009
#>  [571]  0.416116671 -0.097739395 -0.363803718  0.695399661  1.023318872
#>  [576] -0.024103929 -0.187999949 -0.157047687  0.072294422 -0.607698838
#>  [581]  0.442578953  0.421976722  1.636688095 -0.392688289  0.192968744
#>  [586] -1.277807053 -0.007460952  0.305810067 -0.186106546 -0.470916167
#>  [591]  1.250230169 -0.636339498 -0.143533925 -1.203047745  0.038806710
#>  [596] -1.947324708  1.812736330 -0.819454895 -0.937642936  0.397273569
#>  [601] -0.703541527 -0.563010266 -0.413320022 -1.447774882  0.325015704
#>  [606]  0.041007959  0.700083984 -0.107917941  0.411982406  0.874344596
#>  [611]  0.218511291  0.548132171 -0.423096393 -0.513291084  0.407246145
#>  [616]  0.180821250  0.026307385  0.975473273 -0.580539240 -0.984826634
#>  [621]  0.418078364 -0.291757826 -0.173333743 -0.621228061 -0.098119257
#>  [626]  0.014267538  0.131728699 -1.659052329  0.355753545 -0.979578862
#>  [631] -0.751149061  0.641575239  1.947022802 -0.307268398 -0.355498641
#>  [636] -0.552994094 -0.072896614  0.004081815  1.535724326 -0.694960031
#>  [641] -0.942599442 -1.008218229  1.057722675  0.593655165 -3.364598391
#>  [646] -0.364751791  0.602939503  0.843215859 -0.857700079 -0.626362726
#>  [651] -1.191980367  0.645131380 -0.716272144 -1.670270971  0.377044129
#>  [656] -0.227288272  0.266709680 -0.575794899 -0.003092393 -1.131304990
#>  [661] -0.271245131 -0.056698023 -0.499877998 -0.836935075 -1.575005255
#>  [666] -1.020114768 -0.558284137 -0.688783739  1.676023919  0.321405836
#>  [671] -0.885289072 -0.529382987 -0.120157692 -0.621319345 -0.559189806
#>  [676]  2.228373987 -0.718729881  3.019370856 -0.690494724  0.006536090
#>  [681] -0.839671617  0.445830072  1.354970793  0.717173345 -0.225335764
#>  [686] -1.592243165  0.307817908  0.903138953 -1.147974894  0.433826706
#>  [691]  1.188687235 -0.295693458 -1.024777758  0.141901252  0.978099035
#>  [696] -1.019038742  0.338415766  1.175447094 -1.015748001  0.214480721
#>  [701] -1.222546184 -2.103001574 -2.174898234 -0.821057397  0.905598624
#>  [706] -0.018949206 -0.906960472  1.804277362  0.937477284  0.378882797
#>  [711]  0.289311897  1.055060190  0.524166191  0.602805628 -0.385147770
#>  [716] -2.560322637  1.354662135 -1.869113561  0.759088474  0.159640159
#>  [721]  1.595104332  1.349868933 -0.640981456  0.319723055 -0.700202086
#>  [726] -0.030996980  0.490609752 -1.505985915 -1.172451504 -1.570715873
#>  [731] -1.059930839  0.405345812  0.254510054 -0.311236260 -0.236567791
#>  [736]  0.515981965  0.053573253 -0.642747394 -1.447894823  0.323381417
#>  [741]  0.004482076 -0.395398752  0.629588753 -0.105610510 -0.401305241
#>  [746]  5.102246377  0.407634259 -0.327246045 -0.248085259  0.122404236
#>  [751] -0.683975511  0.271868805  0.524927931 -1.177261229 -0.468528501
#>  [756]  0.265269749  1.325718929  0.186478687 -0.014795828 -0.592484794
#>  [761] -0.271923065 -0.083180505 -0.862606807 -1.300436271 -1.367001795
#>  [766]  0.820520976 -0.493885278  0.558534102 -0.517153378 -0.345050493
#>  [771] -1.316169153 -0.037889441 -0.391100496 -0.250052739 -0.336979388
#>  [776]  1.262638296 -0.177596688  3.249398843  0.938132145 -0.163673504
#>  [781]  0.455873806 -2.511250157  1.709364886 -0.691060879 -0.324192930
#>  [786] -0.879495240 -1.884495600  0.091255164 -0.685735670  0.118470157
#>  [791] -0.047474961  1.168527130  0.672150445 -0.621979016 -0.536693958
#>  [796] -1.595820145 -0.155981317 -1.246725418  1.089565438  0.489779503
#>  [801] -0.417214112  0.443137779 -1.210536906  0.915981465 -1.129062956
#>  [806]  0.384933609 -1.033609720  0.774092049  0.786226432  1.283178813
#>  [811] -0.152609026 -0.623084587 -1.193118689 -1.031066109  0.100258097
#>  [816] -0.272545632  1.057919309 -0.327012132 -0.353760557  0.972085189
#>  [821]  0.750070893 -1.069572094  1.375028833 -1.067651001  0.470007167
#>  [826] -0.480467096 -0.144925034 -1.017411085 -0.807132430  1.582803291
#>  [831]  0.206971466 -0.337142947 -0.296166475 -0.693760238  0.247693786
#>  [836] -0.532784838  0.707518060  0.085600568 -0.591593386  0.605976246
#>  [841] -0.273506700  0.512892407 -0.842999232 -0.137111172  0.414036061
#>  [846]  0.447228955  0.334547473  1.683487981  0.304940060 -1.859899324
#>  [851]  0.050384437 -0.722624188 -0.410544345 -0.953988844 -0.108775566
#>  [856] -0.156519439  1.018372684 -2.277867880  0.740314445 -1.159149609
#>  [861] -2.778408681 -0.817934216 -0.188595339 -0.920092351  0.016759135
#>  [866] -0.054782116 -0.041216762  2.017510231  0.285408330  0.933284066
#>  [871]  0.393518694 -1.520506593  0.861880369  0.266554276  1.389880127
#>  [876] -0.835548939 -2.784430510  0.634368107 -0.408897708 -0.817965861
#>  [881] -0.093666747 -0.136140528 -0.048701755 -0.237781325 -0.388323000
#>  [886]  1.483665647 -2.836321970 -0.293884714 -1.021843430 -1.544642133
#>  [891]  0.125904486 -0.267030538  0.136994133 -0.404835151 -0.406830086
#>  [896]  0.759312397 -1.022547835 -0.526718122 -0.751037511 -0.366842047
#>  [901]  0.253243770 -0.833496977 -0.053614877 -0.131402129  1.642664006
#>  [906]  0.506368330 -0.249639763 -0.171877683 -0.534761998 -0.374962837
#>  [911]  1.384406951 -1.105639345  0.021978031 -0.890433287 -1.579214962
#>  [916]  0.048256996  0.104334531  1.832824029 -0.250895296 -0.797026968
#>  [921]  0.655569276 -1.448102565 -1.182888978 -0.052004765 -0.944823737
#>  [926]  0.845384163 -0.447629164 -0.280044284  0.521135186  0.595257903
#>  [931] -0.672434321  2.559969024 -0.056732861 -0.477141469  0.678068080
#>  [936]  1.121641291 -0.947261586  0.308302462  1.100078243  0.364928198
#>  [941]  0.228815913  0.588466255 -0.798926968  0.497836747 -0.480694712
#>  [946] -0.003117742  0.080966682  0.653415945  0.232699176 -1.100040627
#>  [951]  0.981915644 -0.142760209  0.134545619  0.844301227  0.879541777
#>  [956]  0.785469269  1.267139513 -0.185951025 -0.044168527 -0.295282479
#>  [961] -0.194446874 -0.045376377  0.368187536  0.056163708 -0.662164303
#>  [966] -0.356984532  0.048393092  1.250741721  2.694488166  0.645393564
#>  [971]  1.987430087  0.879119028 -0.553184641  0.841232332 -2.023211703
#>  [976] -0.729007161 -3.656670655  0.555670055 -0.308245278  0.253733509
#>  [981] -0.418765293  1.538593949  0.762869350 -0.256973687  0.370456422
#>  [986]  2.451956272 -0.513617909 -0.246875031 -0.126422669 -1.580391031
#>  [991]  0.882649310  0.085424287  0.119481942 -0.031228133 -1.036315771
#>  [996]  0.209135738  0.383954776 -0.495887324  2.307715949 -1.250153766
© www.soinside.com 2019 - 2024. All rights reserved.