mirror of
https://github.com/boostorg/math.git
synced 2026-01-19 04:22:09 +00:00
Additional t-tests (#487)
* Add integer support to t_test * Add paired samples t test * Add two sample t test * Add welch's t test * Update docs * Cleanup * Add CHECK_ULP_CLOSE tests to test battery. Fix svg * Remove all instances of ex [CI SKIP] * Remove std::distance and note in docs [CI SKIP] * Re-write test battery
This commit is contained in:
46
doc/graphs/paired_sample_t_statistic.svg
Normal file
46
doc/graphs/paired_sample_t_statistic.svg
Normal file
@@ -0,0 +1,46 @@
|
||||
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="82" height="40" style="vertical-align: -2.838;" viewBox="0 -1652.5 5874.2 2874.4" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
||||
<title id="MathJax-SVG-1-Title">{\displaystyle t={\frac {{\bar {X}}_{D}-\mu _{0}}{s_{D}/{\sqrt {n}}}}}</title>
|
||||
<defs aria-hidden="true">
|
||||
<path stroke-width="1" id="E1-MJMATHI-74" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-58" d="M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-AF" d="M69 544V590H430V544H69Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-44" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-3BC" d="M58 -216Q44 -216 34 -208T23 -186Q23 -176 96 116T173 414Q186 442 219 442Q231 441 239 435T249 423T251 413Q251 401 220 279T187 142Q185 131 185 107V99Q185 26 252 26Q261 26 270 27T287 31T302 38T315 45T327 55T338 65T348 77T356 88T365 100L372 110L408 253Q444 395 448 404Q461 431 491 431Q504 431 512 424T523 412T525 402L449 84Q448 79 448 68Q448 43 455 35T476 26Q485 27 496 35Q517 55 537 131Q543 151 547 152Q549 153 557 153H561Q580 153 580 144Q580 138 575 117T555 63T523 13Q510 0 491 -8Q483 -10 467 -10Q446 -10 429 -4T402 11T385 29T376 44T374 51L368 45Q362 39 350 30T324 12T288 -4T246 -11Q199 -11 153 12L129 -85Q108 -167 104 -180T92 -202Q76 -216 58 -216Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-6E" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-221A" d="M95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178Z"></path>
|
||||
</defs>
|
||||
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
||||
<use xlink:href="#E1-MJMATHI-74" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-3D" x="639" y="0"></use>
|
||||
<g transform="translate(1695,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="3938" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(60,736)">
|
||||
<use xlink:href="#E1-MJMATHI-58" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-AF" x="274" y="248"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-44" x="1205" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2212" x="1760" y="0"></use>
|
||||
<g transform="translate(2761,0)">
|
||||
<use xlink:href="#E1-MJMATHI-3BC" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-30" x="853" y="-213"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(424,-803)">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-44" x="663" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2F" x="1155" y="0"></use>
|
||||
<g transform="translate(1655,0)">
|
||||
<use xlink:href="#E1-MJMAIN-221A" x="0" y="-78"></use>
|
||||
<rect stroke="none" width="600" height="60" x="833" y="663"></rect>
|
||||
<use xlink:href="#E1-MJMATHI-6E" x="833" y="0"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.8 KiB |
79
doc/graphs/two_sample_pooled_variance.svg
Normal file
79
doc/graphs/two_sample_pooled_variance.svg
Normal file
@@ -0,0 +1,79 @@
|
||||
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="213" height="46" style="vertical-align: -2.671;" viewBox="0 -2154.8 15316.8 3304.9" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
||||
<title id="MathJax-SVG-1-Title">{\displaystyle s_{p}={\sqrt {\frac {\left(n_{1}-1\right)s_{X_{1}}^{2}+\left(n_{2}-1\right)s_{X_{2}}^{2}}{n_{1}+n_{2}-2}}}}</title>
|
||||
<defs aria-hidden="true">
|
||||
<path stroke-width="1" id="E1-MJMATHI-73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-70" d="M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-6E" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-58" d="M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJSZ4-221A" d="M983 1739Q988 1750 1001 1750Q1008 1750 1013 1745T1020 1733Q1020 1726 742 244T460 -1241Q458 -1250 439 -1250H436Q424 -1250 424 -1248L410 -1166Q395 -1083 367 -920T312 -601L201 44L137 -83L111 -57L187 96L264 247Q265 246 369 -357Q470 -958 473 -963L727 384Q979 1729 983 1739Z"></path>
|
||||
</defs>
|
||||
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-70" x="663" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-3D" x="1203" y="0"></use>
|
||||
<g transform="translate(2259,0)">
|
||||
<use xlink:href="#E1-MJSZ4-221A" x="0" y="205"></use>
|
||||
<rect stroke="none" width="12056" height="60" x="1000" y="1896"></rect>
|
||||
<g transform="translate(1000,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="11816" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(60,978)">
|
||||
<use xlink:href="#E1-MJMAIN-28" x="0" y="0"></use>
|
||||
<g transform="translate(389,0)">
|
||||
<use xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="849" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2212" x="1276" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-31" x="2277" y="0"></use>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-29" x="3167" y="0"></use>
|
||||
<g transform="translate(3723,0)">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="663" y="488"></use>
|
||||
<g transform="translate(469,-320)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-58" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-31" x="1020" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2B" x="5459" y="0"></use>
|
||||
<g transform="translate(6459,0)">
|
||||
<use xlink:href="#E1-MJMAIN-28" x="0" y="0"></use>
|
||||
<g transform="translate(389,0)">
|
||||
<use xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="849" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2212" x="1276" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-31" x="2277" y="0"></use>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-29" x="3167" y="0"></use>
|
||||
</g>
|
||||
<g transform="translate(10183,0)">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="663" y="488"></use>
|
||||
<g transform="translate(469,-320)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-58" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="1020" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(3380,-687)">
|
||||
<use xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="849" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2B" x="1276" y="0"></use>
|
||||
<g transform="translate(2277,0)">
|
||||
<use xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="849" y="-213"></use>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2212" x="3553" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-32" x="4554" y="0"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.3 KiB |
68
doc/graphs/two_sample_t_statistic.svg
Normal file
68
doc/graphs/two_sample_t_statistic.svg
Normal file
@@ -0,0 +1,68 @@
|
||||
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="114" height="51" style="vertical-align: -4.671;" viewBox="0 -1652.5 8212.8 3663.7" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
||||
<title id="MathJax-SVG-1-Title">{\displaystyle t={\frac {{\bar {X}}_{1}-{\bar {X}}_{2}}{s_{p}\cdot {\sqrt {{\frac {1}{n_{1}}}+{\frac {1}{n_{2}}}}}}}}</title>
|
||||
<defs aria-hidden="true">
|
||||
<path stroke-width="1" id="E1-MJMATHI-74" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-58" d="M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-AF" d="M69 544V590H430V544H69Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-70" d="M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-6E" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJSZ2-221A" d="M1001 1150Q1017 1150 1020 1132Q1020 1127 741 244L460 -643Q453 -650 436 -650H424Q423 -647 423 -645T421 -640T419 -631T415 -617T408 -594T399 -560T385 -512T367 -448T343 -364T312 -259L203 119L138 41L111 67L212 188L264 248L472 -474L983 1140Q988 1150 1001 1150Z"></path>
|
||||
</defs>
|
||||
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
||||
<use xlink:href="#E1-MJMATHI-74" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-3D" x="639" y="0"></use>
|
||||
<g transform="translate(1695,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="6277" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(1220,676)">
|
||||
<use xlink:href="#E1-MJMATHI-58" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-AF" x="274" y="248"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1205" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2212" x="1528" y="0"></use>
|
||||
<g transform="translate(2529,0)">
|
||||
<use xlink:href="#E1-MJMATHI-58" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-AF" x="274" y="248"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="1205" y="-213"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(60,-1203)">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-70" x="663" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-22C5" x="1147" y="0"></use>
|
||||
<g transform="translate(1648,0)">
|
||||
<use xlink:href="#E1-MJSZ2-221A" x="0" y="-28"></use>
|
||||
<rect stroke="none" width="3508" height="60" x="1000" y="1063"></rect>
|
||||
<g transform="translate(1000,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="902" height="60" x="0" y="220"></rect>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="388" y="629"></use>
|
||||
<g transform="translate(60,-345)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-31" x="739" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2B" x="1364" y="0"></use>
|
||||
<g transform="translate(2365,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="902" height="60" x="0" y="220"></rect>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="388" y="629"></use>
|
||||
<g transform="translate(60,-345)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="739" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.9 KiB |
122
doc/graphs/welchs_t_dof.svg
Normal file
122
doc/graphs/welchs_t_dof.svg
Normal file
@@ -0,0 +1,122 @@
|
||||
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="157" height="75" style="vertical-align: -5.005;" viewBox="0 -3231.2 11234.2 5385.9" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
||||
<title id="MathJax-SVG-1-Title">{\displaystyle \mathrm {d.f.} ={\frac {\left({\frac {s_{1}^{2}}{n_{1}}}+{\frac {s_{2}^{2}}{n_{2}}}\right)^{2}}{{\frac {\left(s_{1}^{2}/n_{1}\right)^{2}}{n_{1}-1}}+{\frac {\left(s_{2}^{2}/n_{2}\right)^{2}}{n_{2}-1}}}}.}</title>
|
||||
<defs aria-hidden="true">
|
||||
<path stroke-width="1" id="E1-MJMAIN-64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-6E" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path>
|
||||
<path stroke-width="1" id="E1-MJSZ3-28" d="M701 -940Q701 -943 695 -949H664Q662 -947 636 -922T591 -879T537 -818T475 -737T412 -636T350 -511T295 -362T250 -186T221 17T209 251Q209 962 573 1361Q596 1386 616 1405T649 1437T664 1450H695Q701 1444 701 1441Q701 1436 681 1415T629 1356T557 1261T476 1118T400 927T340 675T308 359Q306 321 306 250Q306 -139 400 -430T690 -924Q701 -936 701 -940Z"></path>
|
||||
<path stroke-width="1" id="E1-MJSZ3-29" d="M34 1438Q34 1446 37 1448T50 1450H56H71Q73 1448 99 1423T144 1380T198 1319T260 1238T323 1137T385 1013T440 864T485 688T514 485T526 251Q526 134 519 53Q472 -519 162 -860Q139 -885 119 -904T86 -936T71 -949H56Q43 -949 39 -947T34 -937Q88 -883 140 -813Q428 -430 428 251Q428 453 402 628T338 922T245 1146T145 1309T46 1425Q44 1427 42 1429T39 1433T36 1436L34 1438Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path>
|
||||
<path stroke-width="1" id="E1-MJSZ1-28" d="M152 251Q152 646 388 850H416Q422 844 422 841Q422 837 403 816T357 753T302 649T255 482T236 250Q236 124 255 19T301 -147T356 -251T403 -315T422 -340Q422 -343 416 -349H388Q359 -325 332 -296T271 -213T212 -97T170 56T152 251Z"></path>
|
||||
<path stroke-width="1" id="E1-MJSZ1-29" d="M305 251Q305 -145 69 -349H56Q43 -349 39 -347T35 -338Q37 -333 60 -307T108 -239T160 -136T204 27T221 250T204 473T160 636T108 740T60 807T35 839Q35 850 50 850H56H69Q197 743 256 566Q305 425 305 251Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
||||
</defs>
|
||||
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
||||
<use xlink:href="#E1-MJMAIN-64" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2E" x="556" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-66" x="1001" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2E" x="1374" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-3D" x="1930" y="0"></use>
|
||||
<g transform="translate(2986,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="7729" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(1146,1469)">
|
||||
<use xlink:href="#E1-MJSZ3-28"></use>
|
||||
<g transform="translate(736,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="902" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(106,711)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="578" y="425"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-31" x="578" y="-465"></use>
|
||||
</g>
|
||||
<g transform="translate(60,-345)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-31" x="739" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2B" x="1364" y="0"></use>
|
||||
<g transform="translate(2365,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="902" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(106,711)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="578" y="425"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="578" y="-465"></use>
|
||||
</g>
|
||||
<g transform="translate(60,-345)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="739" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJSZ3-29" x="4244" y="-1"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="7044" y="1665"></use>
|
||||
</g>
|
||||
<g transform="translate(60,-1520)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="2953" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(60,711)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJSZ1-28"></use>
|
||||
<g transform="translate(324,0)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="578" y="425"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-31" x="578" y="-465"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2F" x="975" y="0"></use>
|
||||
<g transform="translate(1043,0)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-31" x="739" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJSZ1-29" x="3041" y="-1"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="4311" y="706"></use>
|
||||
</g>
|
||||
<g transform="translate(632,-417)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-31" x="739" y="-243"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2212" x="1106" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1885" y="0"></use>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2B" x="3415" y="0"></use>
|
||||
<g transform="translate(4415,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="2953" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(60,711)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJSZ1-28"></use>
|
||||
<g transform="translate(324,0)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="578" y="425"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="578" y="-465"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2F" x="975" y="0"></use>
|
||||
<g transform="translate(1043,0)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="739" y="-243"></use>
|
||||
</g>
|
||||
</g>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJSZ1-29" x="3041" y="-1"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="4311" y="706"></use>
|
||||
</g>
|
||||
<g transform="translate(632,-417)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.574)" xlink:href="#E1-MJMAIN-32" x="739" y="-243"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2212" x="1106" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1885" y="0"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2E" x="10955" y="0"></use>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
41
doc/graphs/welchs_t_statistic.svg
Normal file
41
doc/graphs/welchs_t_statistic.svg
Normal file
@@ -0,0 +1,41 @@
|
||||
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="82" height="38" style="vertical-align: -2.505;" viewBox="0 -1652.5 5891.3 2730.8" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
||||
<title id="MathJax-SVG-1-Title">{\displaystyle t={\frac {{\bar {X}}_{1}-{\bar {X}}_{2}}{s_{\bar {\Delta }}}}}</title>
|
||||
<defs aria-hidden="true">
|
||||
<path stroke-width="1" id="E1-MJMATHI-74" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-58" d="M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-AF" d="M69 544V590H430V544H69Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path>
|
||||
</defs>
|
||||
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
||||
<use xlink:href="#E1-MJMATHI-74" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-3D" x="639" y="0"></use>
|
||||
<g transform="translate(1695,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="3955" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(60,676)">
|
||||
<use xlink:href="#E1-MJMATHI-58" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-AF" x="274" y="248"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1205" y="-213"></use>
|
||||
<use xlink:href="#E1-MJMAIN-2212" x="1528" y="0"></use>
|
||||
<g transform="translate(2529,0)">
|
||||
<use xlink:href="#E1-MJMATHI-58" x="0" y="0"></use>
|
||||
<use xlink:href="#E1-MJMAIN-AF" x="274" y="248"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="1205" y="-213"></use>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(1398,-686)">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<g transform="translate(469,-305)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-394" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-AF" x="166" y="326"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
57
doc/graphs/welchs_t_variance.svg
Normal file
57
doc/graphs/welchs_t_variance.svg
Normal file
@@ -0,0 +1,57 @@
|
||||
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="109" height="46" style="vertical-align: -2.838;" viewBox="0 -2083 7823.7 3304.9" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
||||
<title id="MathJax-SVG-1-Title">{\displaystyle s_{\bar {\Delta }}={\sqrt {{\frac {s_{1}^{2}}{n_{1}}}+{\frac {s_{2}^{2}}{n_{2}}}}}.}</title>
|
||||
<defs aria-hidden="true">
|
||||
<path stroke-width="1" id="E1-MJMATHI-73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-AF" d="M69 544V590H430V544H69Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMATHI-6E" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path>
|
||||
<path stroke-width="1" id="E1-MJSZ4-221A" d="M983 1739Q988 1750 1001 1750Q1008 1750 1013 1745T1020 1733Q1020 1726 742 244T460 -1241Q458 -1250 439 -1250H436Q424 -1250 424 -1248L410 -1166Q395 -1083 367 -920T312 -601L201 44L137 -83L111 -57L187 96L264 247Q265 246 369 -357Q470 -958 473 -963L727 384Q979 1729 983 1739Z"></path>
|
||||
<path stroke-width="1" id="E1-MJMAIN-2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z"></path>
|
||||
</defs>
|
||||
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<g transform="translate(469,-305)">
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-394" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-AF" x="166" y="326"></use>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-3D" x="1436" y="0"></use>
|
||||
<g transform="translate(2492,0)">
|
||||
<use xlink:href="#E1-MJSZ4-221A" x="0" y="129"></use>
|
||||
<rect stroke="none" width="4051" height="60" x="1000" y="1820"></rect>
|
||||
<g transform="translate(1000,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="1174" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(125,827)">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="663" y="488"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="663" y="-435"></use>
|
||||
</g>
|
||||
<g transform="translate(60,-686)">
|
||||
<use xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="849" y="-213"></use>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2B" x="1636" y="0"></use>
|
||||
<g transform="translate(2637,0)">
|
||||
<g transform="translate(120,0)">
|
||||
<rect stroke="none" width="1174" height="60" x="0" y="220"></rect>
|
||||
<g transform="translate(125,827)">
|
||||
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="663" y="488"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="663" y="-435"></use>
|
||||
</g>
|
||||
<g transform="translate(60,-686)">
|
||||
<use xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
||||
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="849" y="-213"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<use xlink:href="#E1-MJMAIN-2E" x="7545" y="0"></use>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
@@ -1,5 +1,6 @@
|
||||
[/
|
||||
Copyright (c) 2019 Nick Thompson
|
||||
Copyright (c) 2021 Matt Borland
|
||||
Use, modification and distribution are subject to the
|
||||
Boost Software License, Version 1.0. (See accompanying file
|
||||
LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
@@ -14,20 +15,38 @@ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
namespace boost::math::statistics {
|
||||
|
||||
template<typename Real>
|
||||
std::pair<Real, Real> one_sample_t_test(Real sample_mean, Real sample_variance, Real num_samples, Real assumed_mean);
|
||||
template<typename Real, typename Size = Real>
|
||||
std::pair<Real, Real> one_sample_t_test(Real sample_mean, Real sample_variance, Size num_samples, Real assumed_mean);
|
||||
|
||||
template<class ForwardIterator>
|
||||
auto one_sample_t_test(ForwardIterator begin, ForwardIterator end, typename std::iterator_traits<ForwardIterator>::value_type assumed_mean);
|
||||
template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type>
|
||||
std::pair<Real, Real> one_sample_t_test(ForwardIterator begin, ForwardIterator end, Real assumed_mean);
|
||||
|
||||
template<class Container>
|
||||
auto one_sample_t_test(Container const & v, typename Container::value_type assumed_mean);
|
||||
template<typename Container>
|
||||
std::pair<Real, Real> one_sample_t_test(Container const & v, typename Container::value_type assumed_mean);
|
||||
|
||||
}}}
|
||||
template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type>
|
||||
std::pair<Real, Real> two_sample_t_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator begin_2);
|
||||
|
||||
template<typename Container, typename Real = typename Container::value_type>
|
||||
std::pair<Real, Real> two_sample_t_test(Container const & u, Container const & v);
|
||||
|
||||
template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type>
|
||||
std::pair<Real, Real> paired_samples_t_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator begin_2);
|
||||
|
||||
template<typename Container, typename Real = typename Container::value_type>
|
||||
std::pair<Real, Real> paired_samples_t_test(Container const & u, Container const & v);
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
[heading Background]
|
||||
|
||||
A set of C++11 compatible functions for various [@https://en.wikipedia.org/wiki/Student's_t-test Student's t-tests].
|
||||
The input can be any real number or set of real numbers.
|
||||
In the event that the input is an integer or a set of integers typename Real will be deduced as a double precision type.
|
||||
|
||||
[heading One-sample /t/-test]
|
||||
|
||||
A one-sample /t/-test attempts to answer the question "given a sample mean, is it likely that the population mean of my data is a certain value?"
|
||||
The test statistic is
|
||||
|
||||
@@ -61,6 +80,76 @@ auto [t, p] = boost::math::statistics::one_sample_t_test(v, 0.0);
|
||||
|
||||
The test statistic is the first element of the pair, and the /p/-value is the second element.
|
||||
|
||||
[heading Independent two-sample /t/-test]
|
||||
|
||||
A two-sample /t/-test determines if the means of two sets of data have a statistically significant difference from each other.
|
||||
There are two underlying implementations based off the variances of the sets of data.
|
||||
If /s/[sub 1] and /s/[sub 2] are within a factor of 2 of each other the following formulas will be used:
|
||||
|
||||
[$../graphs/two_sample_t_statistic.svg]
|
||||
|
||||
where
|
||||
|
||||
[$../graphs/two_sample_pooled_variance.svg]
|
||||
|
||||
If /s/[sub 1] and /s/[sub 2] are not within a factor of 2 of each other Welch's t-test will be used:
|
||||
|
||||
[$../graphs/welchs_t_statistic.svg]
|
||||
|
||||
where
|
||||
|
||||
[$../graphs/welchs_t_variance.svg]
|
||||
|
||||
and
|
||||
|
||||
[$../graphs/welchs_t_dof.svg]
|
||||
|
||||
An example of usage is as follows:
|
||||
|
||||
```
|
||||
#include <vector>
|
||||
#include <random>
|
||||
#include <boost/math/statistics/t_test.hpp>
|
||||
|
||||
std::random_device rd;
|
||||
std::mt19937 gen{rd()};
|
||||
std::normal_distribution<double> dis{0,1};
|
||||
std::vector<double> u(1024);
|
||||
std::vector<double> v(1024);
|
||||
for(std::size_t i = 0; i < u.size(); ++i)
|
||||
{
|
||||
u[i] = dis(gen);
|
||||
v[i] = dis(gen);
|
||||
}
|
||||
|
||||
auto [t, p] = boost::math::statistics::two_sample_t_test(u, v);
|
||||
```
|
||||
|
||||
/Nota bene:/ The sample sizes for the two sets of data do not need to be equal.
|
||||
|
||||
/Nota bene:/ std::distance is used in the implementation leading to lower performance with ForwardIterator than RandomAccessIterator.
|
||||
|
||||
[heading Dependent /t/-test for paired samples]
|
||||
|
||||
This test is used when the samples are dependent such as when one sample has been tested twice, or when two samples have been paired.
|
||||
Much like the independent t-test it is used to determine if the means of two sets of data have a statistically significant difference from each other.
|
||||
|
||||
[$../graphs/paired_sample_t_statistic.svg]
|
||||
|
||||
where /X/[sub D] and /s/[sub D] are the mean and standard deviation of the differences between all pairs.
|
||||
|
||||
An example of usage is as follows:
|
||||
|
||||
```
|
||||
#include <vector>
|
||||
#include <random>
|
||||
#include <boost/math/statistics/t_test.hpp>
|
||||
|
||||
std::vector<int> first_test {35, 50, 90, 78};
|
||||
std::vector<int> second_test {67, 46, 86, 91};
|
||||
|
||||
auto [t, p] = boost::math::statistics::paired_samples_t_test(first_test, second_test);
|
||||
```
|
||||
|
||||
[heading Performance]
|
||||
|
||||
|
||||
@@ -8,9 +8,12 @@
|
||||
#define BOOST_MATH_STATISTICS_T_TEST_HPP
|
||||
|
||||
#include <cmath>
|
||||
#include <cstddef>
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <vector>
|
||||
#include <stdexcept>
|
||||
#include <boost/math/distributions/students_t.hpp>
|
||||
#include <boost/math/statistics/univariate_statistics.hpp>
|
||||
|
||||
@@ -47,6 +50,133 @@ ReturnType one_sample_t_test_impl(ForwardIterator begin, ForwardIterator end, ty
|
||||
Real s_sq = std::get<1>(temp);
|
||||
return one_sample_t_test_impl<ReturnType>(mu, s_sq, Real(std::distance(begin, end)), Real(assumed_mean));
|
||||
}
|
||||
|
||||
// https://en.wikipedia.org/wiki/Student%27s_t-test#Equal_or_unequal_sample_sizes,_unequal_variances_(sX1_%3E_2sX2_or_sX2_%3E_2sX1)
|
||||
template<typename ReturnType, typename T>
|
||||
ReturnType welchs_t_test_impl(T mean_1, T variance_1, T size_1, T mean_2, T variance_2, T size_2)
|
||||
{
|
||||
using Real = typename std::tuple_element<0, ReturnType>::type;
|
||||
using no_promote_policy = boost::math::policies::policy<boost::math::policies::promote_float<false>, boost::math::policies::promote_double<false>>;
|
||||
using std::sqrt;
|
||||
|
||||
Real dof_num = (variance_1/size_1 + variance_2/size_2) * (variance_1/size_1 + variance_2/size_2);
|
||||
Real dof_denom = ((variance_1/size_1) * (variance_1/size_1))/(size_1 - 1) +
|
||||
((variance_2/size_2) * (variance_2/size_2))/(size_2 - 1);
|
||||
Real dof = dof_num / dof_denom;
|
||||
|
||||
Real s_estimator = sqrt((variance_1/size_1) + (variance_2/size_2));
|
||||
|
||||
Real test_statistic = (static_cast<Real>(mean_1) - static_cast<Real>(mean_2))/s_estimator;
|
||||
auto student = boost::math::students_t_distribution<Real, no_promote_policy>(dof);
|
||||
Real pvalue;
|
||||
if (test_statistic > 0)
|
||||
{
|
||||
pvalue = 2*boost::math::cdf<Real>(student, -test_statistic);;
|
||||
}
|
||||
else
|
||||
{
|
||||
pvalue = 2*boost::math::cdf<Real>(student, test_statistic);
|
||||
}
|
||||
|
||||
return std::make_pair(test_statistic, pvalue);
|
||||
}
|
||||
|
||||
// https://en.wikipedia.org/wiki/Student%27s_t-test#Equal_or_unequal_sample_sizes,_similar_variances_(1/2_%3C_sX1/sX2_%3C_2)
|
||||
template<typename ReturnType, typename T>
|
||||
ReturnType two_sample_t_test_impl(T mean_1, T variance_1, T size_1, T mean_2, T variance_2, T size_2)
|
||||
{
|
||||
using Real = typename std::tuple_element<0, ReturnType>::type;
|
||||
using no_promote_policy = boost::math::policies::policy<boost::math::policies::promote_float<false>, boost::math::policies::promote_double<false>>;
|
||||
using std::sqrt;
|
||||
|
||||
Real dof = size_1 + size_2 - 2;
|
||||
Real pooled_std_dev = sqrt(((size_1-1)*variance_1 + (size_2-1)*variance_2) / dof);
|
||||
Real test_statistic = (mean_1-mean_2) / (pooled_std_dev*sqrt(1.0/static_cast<Real>(size_1) + 1.0/static_cast<Real>(size_2)));
|
||||
|
||||
auto student = boost::math::students_t_distribution<Real, no_promote_policy>(dof);
|
||||
Real pvalue;
|
||||
if (test_statistic > 0)
|
||||
{
|
||||
pvalue = 2*boost::math::cdf<Real>(student, -test_statistic);;
|
||||
}
|
||||
else
|
||||
{
|
||||
pvalue = 2*boost::math::cdf<Real>(student, test_statistic);
|
||||
}
|
||||
|
||||
return std::make_pair(test_statistic, pvalue);
|
||||
}
|
||||
|
||||
template<typename ReturnType, typename ForwardIterator>
|
||||
ReturnType two_sample_t_test_impl(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator end_2)
|
||||
{
|
||||
using Real = typename std::tuple_element<0, ReturnType>::type;
|
||||
using std::sqrt;
|
||||
auto n1 = std::distance(begin_1, end_1);
|
||||
auto n2 = std::distance(begin_2, end_2);
|
||||
|
||||
ReturnType temp_1 = mean_and_sample_variance(begin_1, end_1);
|
||||
Real mean_1 = std::get<0>(temp_1);
|
||||
Real variance_1 = std::get<1>(temp_1);
|
||||
Real std_dev_1 = sqrt(variance_1);
|
||||
|
||||
ReturnType temp_2 = mean_and_sample_variance(begin_2, end_2);
|
||||
Real mean_2 = std::get<0>(temp_2);
|
||||
Real variance_2 = std::get<1>(temp_2);
|
||||
Real std_dev_2 = sqrt(variance_2);
|
||||
|
||||
if(std_dev_1 > 2 * std_dev_2 || std_dev_2 > 2 * std_dev_1)
|
||||
{
|
||||
return welchs_t_test_impl<ReturnType>(mean_1, variance_1, Real(n1), mean_2, variance_2, Real(n2));
|
||||
}
|
||||
else
|
||||
{
|
||||
return two_sample_t_test_impl<ReturnType>(mean_1, variance_1, Real(n1), mean_2, variance_2, Real(n2));
|
||||
}
|
||||
}
|
||||
|
||||
// https://en.wikipedia.org/wiki/Student%27s_t-test#Dependent_t-test_for_paired_samples
|
||||
template<typename ReturnType, typename ForwardIterator>
|
||||
ReturnType paired_samples_t_test_impl(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator end_2)
|
||||
{
|
||||
using Real = typename std::tuple_element<0, ReturnType>::type;
|
||||
using no_promote_policy = boost::math::policies::policy<boost::math::policies::promote_float<false>, boost::math::policies::promote_double<false>>;
|
||||
using std::sqrt;
|
||||
|
||||
std::vector<Real> delta;
|
||||
ForwardIterator it_1 = begin_1;
|
||||
ForwardIterator it_2 = begin_2;
|
||||
std::size_t n = 0;
|
||||
while(it_1 != end_1 && it_2 != end_2)
|
||||
{
|
||||
delta.emplace_back(static_cast<Real>(*it_1++) - static_cast<Real>(*it_2++));
|
||||
++n;
|
||||
}
|
||||
|
||||
if(it_1 != end_1 || it_2 != end_2)
|
||||
{
|
||||
throw std::domain_error("Both sets must have the same number of values.");
|
||||
}
|
||||
|
||||
std::pair<Real, Real> temp = mean_and_sample_variance(delta.begin(), delta.end());
|
||||
Real delta_mean = std::get<0>(temp);
|
||||
Real delta_std_dev = sqrt(std::get<1>(temp));
|
||||
|
||||
Real test_statistic = delta_mean/(delta_std_dev/sqrt(n));
|
||||
|
||||
auto student = boost::math::students_t_distribution<Real, no_promote_policy>(n - 1);
|
||||
Real pvalue;
|
||||
if (test_statistic > 0)
|
||||
{
|
||||
pvalue = 2*boost::math::cdf<Real>(student, -test_statistic);;
|
||||
}
|
||||
else
|
||||
{
|
||||
pvalue = 2*boost::math::cdf<Real>(student, test_statistic);
|
||||
}
|
||||
|
||||
return std::make_pair(test_statistic, pvalue);
|
||||
}
|
||||
} // namespace detail
|
||||
|
||||
template<typename Real, typename std::enable_if<std::is_integral<Real>::value, bool>::type = true>
|
||||
@@ -89,5 +219,57 @@ inline auto one_sample_t_test(Container const & v, Real assumed_mean) -> std::pa
|
||||
return detail::one_sample_t_test_impl<std::pair<Real, Real>>(std::begin(v), std::end(v), assumed_mean);
|
||||
}
|
||||
|
||||
template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type,
|
||||
typename std::enable_if<std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto two_sample_t_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator end_2) -> std::pair<double, double>
|
||||
{
|
||||
return detail::two_sample_t_test_impl<std::pair<double, double>>(begin_1, end_1, begin_2, end_2);
|
||||
}
|
||||
|
||||
template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type,
|
||||
typename std::enable_if<!std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto two_sample_t_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator end_2) -> std::pair<Real, Real>
|
||||
{
|
||||
return detail::two_sample_t_test_impl<std::pair<Real, Real>>(begin_1, end_1, begin_2, end_2);
|
||||
}
|
||||
|
||||
template<typename Container, typename Real = typename Container::value_type, typename std::enable_if<std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto two_sample_t_test(Container const & u, Container const & v) -> std::pair<double, double>
|
||||
{
|
||||
return detail::two_sample_t_test_impl<std::pair<double, double>>(std::begin(u), std::end(u), std::begin(v), std::end(v));
|
||||
}
|
||||
|
||||
template<typename Container, typename Real = typename Container::value_type, typename std::enable_if<!std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto two_sample_t_test(Container const & u, Container const & v) -> std::pair<Real, Real>
|
||||
{
|
||||
return detail::two_sample_t_test_impl<std::pair<Real, Real>>(std::begin(u), std::end(u), std::begin(v), std::end(v));
|
||||
}
|
||||
|
||||
template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type,
|
||||
typename std::enable_if<std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto paired_samples_t_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator end_2) -> std::pair<double, double>
|
||||
{
|
||||
return detail::paired_samples_t_test_impl<std::pair<double, double>>(begin_1, end_1, begin_2, end_2);
|
||||
}
|
||||
|
||||
template<typename ForwardIterator, typename Real = typename std::iterator_traits<ForwardIterator>::value_type,
|
||||
typename std::enable_if<!std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto paired_samples_t_test(ForwardIterator begin_1, ForwardIterator end_1, ForwardIterator begin_2, ForwardIterator end_2) -> std::pair<Real, Real>
|
||||
{
|
||||
return detail::paired_samples_t_test_impl<std::pair<Real, Real>>(begin_1, end_1, begin_2, end_2);
|
||||
}
|
||||
|
||||
template<typename Container, typename Real = typename Container::value_type, typename std::enable_if<std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto paired_samples_t_test(Container const & u, Container const & v) -> std::pair<double, double>
|
||||
{
|
||||
return detail::paired_samples_t_test_impl<std::pair<double, double>>(std::begin(u), std::end(u), std::begin(v), std::end(v));
|
||||
}
|
||||
|
||||
template<typename Container, typename Real = typename Container::value_type, typename std::enable_if<!std::is_integral<Real>::value, bool>::type = true>
|
||||
inline auto paired_samples_t_test(Container const & u, Container const & v) -> std::pair<Real, Real>
|
||||
{
|
||||
return detail::paired_samples_t_test_impl<std::pair<Real, Real>>(std::begin(u), std::end(u), std::begin(v), std::end(v));
|
||||
}
|
||||
|
||||
}}} // namespace boost::math::statistics
|
||||
#endif
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
#include <random>
|
||||
#include <boost/math/statistics/univariate_statistics.hpp>
|
||||
#include <boost/math/statistics/t_test.hpp>
|
||||
#include <boost/multiprecision/cpp_bin_float.hpp>
|
||||
|
||||
using quad = boost::multiprecision::cpp_bin_float_quad;
|
||||
|
||||
template<typename Real>
|
||||
void test_exact_mean()
|
||||
@@ -34,6 +37,24 @@ void test_exact_mean()
|
||||
CHECK_ULP_CLOSE(Real(1), computed_pvalue, 9);
|
||||
}
|
||||
|
||||
template<typename Real>
|
||||
void test_multiprecision_exact_mean()
|
||||
{
|
||||
std::mt19937 gen{5125122};
|
||||
std::normal_distribution<long double> dis{0,3};
|
||||
std::vector<Real> v(1024);
|
||||
for (auto & x : v) {
|
||||
x = dis(gen);
|
||||
}
|
||||
|
||||
Real mu = boost::math::statistics::mean(v);
|
||||
|
||||
auto [computed_statistic, computed_pvalue] = boost::math::statistics::one_sample_t_test(v, mu);
|
||||
|
||||
CHECK_MOLLIFIED_CLOSE(Real(0), computed_statistic, 10*std::numeric_limits<Real>::epsilon());
|
||||
CHECK_ULP_CLOSE(Real(1), computed_pvalue, 9);
|
||||
}
|
||||
|
||||
template<typename Z>
|
||||
void test_integer()
|
||||
{
|
||||
@@ -95,15 +116,117 @@ void test_agreement_with_mathematica()
|
||||
}
|
||||
}
|
||||
|
||||
template<typename Real>
|
||||
void test_two_sample_t()
|
||||
{
|
||||
auto [computed_statistic, computed_pvalue] =
|
||||
boost::math::statistics::detail::two_sample_t_test_impl<std::pair<Real, Real>>(Real(10.0), Real(1.0), Real(20), Real(5.0), Real(0.25), Real(20));
|
||||
|
||||
CHECK_ULP_CLOSE(Real(20), computed_statistic, 5);
|
||||
CHECK_MOLLIFIED_CLOSE(Real(0), computed_pvalue, 1e-21);
|
||||
|
||||
std::vector<Real> set_1 {301, 298, 295, 297, 304, 305, 309, 298, 291, 299, 293, 304};
|
||||
|
||||
auto [computed_statistic_2, computed_pvalue_2] = boost::math::statistics::two_sample_t_test(set_1, set_1);
|
||||
CHECK_ULP_CLOSE(Real(0), computed_statistic_2, 5);
|
||||
CHECK_ULP_CLOSE(Real(1), computed_pvalue_2, 5);
|
||||
}
|
||||
|
||||
template<typename Z>
|
||||
void test_integer_two_sample_t()
|
||||
{
|
||||
auto [computed_statistic, computed_pvalue] =
|
||||
boost::math::statistics::detail::two_sample_t_test_impl<std::pair<double, double>>(Z(10), Z(4), Z(20), Z(5), Z(1), Z(20));
|
||||
|
||||
CHECK_ULP_CLOSE(10.0, computed_statistic, 5);
|
||||
|
||||
std::vector<Z> set_1 {301, 298, 295, 297, 304, 305, 309, 298, 291, 299, 293, 304};
|
||||
|
||||
auto [computed_statistic_2, computed_pvalue_2] = boost::math::statistics::two_sample_t_test(set_1, set_1);
|
||||
CHECK_ULP_CLOSE(0.0, computed_statistic_2, 5);
|
||||
CHECK_ULP_CLOSE(1.0, computed_pvalue_2, 5);
|
||||
}
|
||||
|
||||
template<typename Real>
|
||||
void test_welch()
|
||||
{
|
||||
using std::sqrt;
|
||||
|
||||
auto [computed_statistic, computed_pvalue] =
|
||||
boost::math::statistics::detail::welchs_t_test_impl<std::pair<Real, Real>>(Real(10.0), Real(1.0), Real(20), Real(5.0), Real(0.25), Real(20));
|
||||
|
||||
CHECK_ULP_CLOSE(Real(20), computed_statistic, 5);
|
||||
CHECK_MOLLIFIED_CLOSE(Real(0), computed_pvalue, 5e-18);
|
||||
|
||||
auto [computed_statistic_2, computed_pvalue_2] =
|
||||
boost::math::statistics::detail::welchs_t_test_impl<std::pair<Real, Real>>(Real(10.0), Real(0.5), Real(20), Real(10.0), Real(0.5), Real(20));
|
||||
|
||||
CHECK_ULP_CLOSE(Real(0), computed_statistic_2, 5);
|
||||
CHECK_ULP_CLOSE(Real(1), computed_pvalue_2, 5);
|
||||
}
|
||||
|
||||
template<typename Z>
|
||||
void test_integer_welch()
|
||||
{
|
||||
auto [computed_statistic, computed_pvalue] =
|
||||
boost::math::statistics::detail::welchs_t_test_impl<std::pair<double, double>>(10.0, 4.0, 20.0, 5.0, 1.0, 20.0);
|
||||
|
||||
CHECK_ULP_CLOSE(Z(10), computed_statistic, 5);
|
||||
|
||||
auto [computed_statistic_2, computed_pvalue_2] =
|
||||
boost::math::statistics::detail::welchs_t_test_impl<std::pair<double, double>>(10.0, 0.5, 20.0, 10.0, 0.5, 20.0);
|
||||
CHECK_ULP_CLOSE(Z(0), computed_statistic_2, 5);
|
||||
CHECK_ULP_CLOSE(Z(1), computed_pvalue_2, 5);
|
||||
}
|
||||
|
||||
template<typename Real>
|
||||
void test_paired_samples()
|
||||
{
|
||||
std::vector<Real> set_1 {2,4};
|
||||
std::vector<Real> set_2 {1,2};
|
||||
|
||||
auto [computed_statistic, computed_pvalue] = boost::math::statistics::paired_samples_t_test(set_1, set_2);
|
||||
|
||||
CHECK_ULP_CLOSE(Real(3), computed_statistic, 5);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test_agreement_with_mathematica();
|
||||
|
||||
test_exact_mean<float>();
|
||||
test_exact_mean<double>();
|
||||
test_multiprecision_exact_mean<quad>();
|
||||
|
||||
test_integer<int>();
|
||||
test_integer<int32_t>();
|
||||
test_integer<int64_t>();
|
||||
test_integer<uint32_t>();
|
||||
|
||||
test_two_sample_t<float>();
|
||||
test_two_sample_t<double>();
|
||||
test_two_sample_t<quad>();
|
||||
|
||||
test_integer_two_sample_t<int>();
|
||||
test_integer_two_sample_t<int32_t>();
|
||||
test_integer_two_sample_t<int64_t>();
|
||||
test_integer_two_sample_t<uint32_t>();
|
||||
|
||||
test_welch<float>();
|
||||
test_welch<double>();
|
||||
test_welch<quad>();
|
||||
|
||||
test_integer_welch<int>();
|
||||
test_integer_welch<int32_t>();
|
||||
test_integer_welch<int64_t>();
|
||||
test_integer_welch<uint32_t>();
|
||||
|
||||
test_paired_samples<float>();
|
||||
test_paired_samples<double>();
|
||||
test_paired_samples<int>();
|
||||
test_paired_samples<int32_t>();
|
||||
test_paired_samples<int64_t>();
|
||||
test_paired_samples<uint32_t>();
|
||||
|
||||
return boost::math::test::report_errors();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user