-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathCopulas-in-R.html
More file actions
1514 lines (1359 loc) · 193 KB
/
Copulas-in-R.html
File metadata and controls
1514 lines (1359 loc) · 193 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<title>Copulas in R: Model Multivariate Dependence Beyond Correlation</title>
<meta charset="utf-8">
<meta name="Description" content="Master copulas in R: model multivariate dependence beyond correlation with Gaussian, Clayton, Gumbel, and Frank copulas, fitting, GoF tests, and code.">
<meta name="Keywords" content="copulas in R, copula package, multivariate dependence, Gaussian copula, Clayton copula, Gumbel copula, Frank copula, t-copula, tail dependence, Sklar's theorem">
<meta name="Distribution" content="Global">
<meta name="Author" content="Selva Prabhakaran">
<meta name="Robots" content="index, follow">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="strict-origin-when-cross-origin">
<link rel="icon" href="/screenshots/iconb-64.png" type="image/x-icon" />
<link rel="canonical" href="https://r-statistics.co/Copulas-in-R.html">
<link rel="alternate" type="application/atom+xml" title="r-statistics.co" href="https://r-statistics.co/feed.xml">
<link rel="preconnect" href="https://cdn.jsdelivr.net">
<!-- Preload the primary body font so first paint has IBM Plex Sans ready -->
<link rel="preload" href="/www/fonts/ibm-plex/ibm-plex-sans-latin.woff2" as="font" type="font/woff2" crossorigin>
<!-- Preload heading font (IBM Plex Serif 700) to prevent H1 font swap -->
<link rel="preload" href="/www/fonts/ibm-plex/ibm-plex-serif-700.woff2" as="font" type="font/woff2" crossorigin>
<!-- Critical CSS inlined for fast first paint -->
<style>
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-sans-latin.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-sans-latin.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-sans-latin.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-sans-latin.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Serif';font-style:normal;font-weight:600;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-serif-600.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Serif';font-style:normal;font-weight:700;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-serif-700.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-mono-400.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:optional;src:url('/www/fonts/ibm-plex/ibm-plex-mono-500.woff2') format('woff2')}
*,*::before,*::after{box-sizing:border-box}
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
body{margin:0;font-family:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,sans-serif;font-size:18px;line-height:1.7;color:#0d1117;background:#fafbfc}
html body{font-size:18px;line-height:1.7}
p{margin:0 0 15px}
.container{max-width:1170px;margin:0 auto;padding:0 15px}
@media(min-width:1200px){.container{width:1170px}}
.row{margin-left:-15px;margin-right:-15px}.row::after{content:"";display:table;clear:both}
.col-xs-12,.col-sm-2,.col-sm-3,.col-sm-7{position:relative;min-height:1px;padding-left:15px;padding-right:15px;float:left}
.col-xs-12{width:100%}
@media(min-width:768px){.col-sm-2{width:16.667%}.col-sm-3{width:25%}.col-sm-7{width:58.333%}.hidden-xs{display:block!important}}
.hidden-xs{display:none}
.table{width:100%;border-collapse:collapse}.table>thead>tr>th,.table>tbody>tr>td{padding:8px;border-top:1px solid #ddd}
.table-striped>tbody>tr:nth-of-type(odd){background:#f9f9f9}
.btn{display:inline-block;padding:6px 12px;font-size:14px;border-radius:4px;cursor:pointer;border:1px solid transparent}
.btn-primary{color:#fff;background:#1d3158;border-color:#1d3158}.btn-primary:hover{background:#2c4574}
.btn-default{color:#333;background:#fff;border-color:#ccc}
.btn-sm{padding:3px 10px;font-size:12px}
.form-control{display:block;padding:6px 12px;font-size:14px;border:1px solid #ccc;border-radius:4px}
.list-unstyled{list-style:none;padding-left:0}
.img-responsive{max-width:100%;height:auto}
.pull-right{float:right}
a{color:#1d3158;text-decoration:none}a:hover{text-decoration:underline}
html,body{overflow-x:hidden;max-width:100vw}
#sidebar-nav{position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto;padding:8px 0}
.breadcrumb-nav{font-size:13.5px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#6c757d;margin-bottom:2px;padding:0}
.breadcrumb-nav a{color:#6c757d;text-decoration:none}
.bc-sep,.breadcrumb-sep{margin:0 5px;color:#757575}
.bc-current,.breadcrumb-current{color:#495057;font-weight:500}
#content h1,#content h2,#content h3,#content h4{font-family:'IBM Plex Serif',Georgia,'Times New Roman',serif}
#content h1{font-weight:700;font-size:2.1em;line-height:1.2;margin:0 0 0.4em 0;letter-spacing:-0.01em;color:#0d1117}
#content h2{font-weight:600;font-size:1.65em;line-height:1.25;margin:2.5em 0 0.6em 0;color:#0d1117;padding-top:0.8em;padding-bottom:6px;border-top:1px solid #d8dce2}
#content h2:first-of-type{border-top:none;margin-top:1.5em}
#content p{line-height:1.75;margin-bottom:1.15em;color:#0d1117}
p.lead{font-size:1.1em;line-height:1.75;color:#4a5160;font-weight:400;border-left:3px solid #1d3158;padding-left:1em;margin:-4px 0 1.15em 0}
.site-masthead{position:sticky;top:0;z-index:30;background:rgba(250,251,252,0.92);backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid transparent;margin:0 -15px 24px;transition:border-color 0.2s}
.site-masthead.scrolled{border-bottom-color:#d8dce2}
.site-masthead-inner{max-width:1170px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;gap:24px}
.masthead-menu-btn{display:none;background:none;border:1px solid #d8dce2;border-radius:6px;padding:4px 8px;font-size:18px;line-height:1;color:#4a5160;cursor:pointer}
.masthead-wordmark{display:inline-flex;align-items:center;gap:10px;font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:15px;color:#0d1117;text-decoration:none;white-space:nowrap}
.masthead-mark{position:relative;width:32px;height:32px;border-radius:6px;background:#1d3158;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-family:'IBM Plex Serif',Georgia,serif;font-style:italic;font-weight:700;font-size:19px;line-height:1;letter-spacing:-0.04em;padding-right:1px;box-shadow:0 1px 2px rgba(13,17,23,0.08),inset 0 1px 0 rgba(255,255,255,0.12)}
.masthead-mark::after{content:'';position:absolute;right:5px;bottom:5px;width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,0.85)}
.masthead-tld{color:#757a87}
.masthead-nav{display:flex;gap:4px;flex:1;margin-left:8px}
.masthead-nav-link{font-family:'IBM Plex Sans',sans-serif;color:#4a5160;font-size:14px;font-weight:500;padding:6px 12px;border-radius:6px;text-decoration:none;transition:all 0.15s}
.masthead-nav-link:hover{background:#f1f3f6;color:#0d1117;text-decoration:none}
.masthead-nav-link.active{background:#f1f3f6;color:#0d1117}
.masthead-tools{display:flex;align-items:center;gap:10px;flex-shrink:0}
.masthead-search{margin:0;display:flex;align-items:center}
.masthead-search input{height:32px;padding:6px 12px;font-size:13px;border:1px solid #d8dce2;border-radius:6px;background:#fff;color:#0d1117;width:160px;font-family:'IBM Plex Sans',sans-serif;transition:border-color 0.15s,box-shadow 0.15s}
.masthead-search input:focus{outline:none;border-color:#1d3158;box-shadow:0 0 0 3px rgba(29,49,88,0.10)}
.masthead-icon-btn{background:none;border:1px solid transparent;border-radius:6px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;color:#4a5160;cursor:pointer;transition:all 0.15s}
.masthead-icon-btn:hover{background:#f1f3f6;color:#0d1117}
html.dark .site-masthead{background:rgba(12,13,16,0.85)}
html.dark .site-masthead.scrolled{border-bottom-color:#262a31}
html.dark .masthead-wordmark{color:#e8eaee}
html.dark .masthead-tld{color:#6e7382}
html.dark .masthead-mark{background:#92a4d8}
html.dark .masthead-nav-link{color:#b0b5bf}
html.dark .masthead-nav-link:hover,html.dark .masthead-nav-link.active{background:#1a1d22;color:#e8eaee}
.nav-dropdown{position:relative;display:inline-block}
.nav-dropdown-trigger{cursor:pointer}
.nav-dropdown-trigger::after{content:' \25BE';font-size:10px;color:#8a8f99}
.nav-dropdown-panel{display:none;position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:14px 0;box-shadow:0 8px 24px rgba(13,17,23,0.10);min-width:260px;z-index:40;flex-direction:column}
.nav-dropdown:hover .nav-dropdown-panel,.nav-dropdown.open .nav-dropdown-panel{display:flex}
.nav-cat{position:relative;display:flex;align-items:center;justify-content:space-between;padding:7px 18px;font-family:'IBM Plex Sans',sans-serif;font-size:13px;font-weight:500;color:#3a3f4a;cursor:pointer;transition:background 0.1s}
.nav-cat:hover{background:#f1f3f6;color:#0d1117}
.nav-cat::after{content:' \25B8';font-size:10px;color:#8a8f99;margin-left:8px}
.nav-sub{display:none;position:absolute;top:0;left:100%;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:14px 18px;box-shadow:0 8px 24px rgba(13,17,23,0.10);min-width:230px;z-index:50}
.nav-cat:hover .nav-sub{display:block}
.nav-sub a{display:block;padding:5px 0;font-size:13px;color:#3a3f4a;text-decoration:none;font-weight:400;line-height:1.4}
.nav-sub a:hover{color:#1d3158;text-decoration:underline}
.nav-sub h6{margin:10px 0 4px;font-family:'IBM Plex Sans',sans-serif;font-size:10px;font-weight:600;color:#8a8f99;text-transform:uppercase;letter-spacing:0.06em}
.nav-sub h6:first-child{margin-top:0}
html.dark .nav-dropdown-panel,html.dark .nav-sub{background:#161a1f;border-color:#2a2e35;box-shadow:0 8px 24px rgba(0,0,0,0.45)}
html.dark .nav-cat{color:#c5cad3}
html.dark .nav-cat:hover{background:#1a1d22;color:#fff}
html.dark .nav-sub a{color:#c5cad3}
html.dark .nav-sub a:hover{color:#fff}
html.dark .nav-sub h6{color:#7a808c}
@media (max-width: 768px){.nav-dropdown-panel{min-width:220px;left:auto;right:0}.nav-sub{position:static;border:none;box-shadow:none;padding:6px 0 6px 16px}.nav-cat::after{content:''}}
html.dark .masthead-search input{background:#14161a;border-color:#262a31;color:#e8eaee}
html.dark .masthead-search input:focus{border-color:#92a4d8;box-shadow:0 0 0 3px rgba(146,164,216,0.15)}
html.dark .masthead-icon-btn{color:#b0b5bf}
html.dark .masthead-icon-btn:hover{background:#1a1d22;color:#e8eaee}
hr{height:0;box-sizing:content-box;border:0;border-top:1px solid #eee}
.img-zoomable{cursor:zoom-in;transition:opacity .15s}
.img-lightbox{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:10001;background:rgba(0,0,0,.85);cursor:zoom-out;align-items:center;justify-content:center}
.img-lightbox.open{display:flex}
.img-lightbox img{max-width:95vw;max-height:95vh;border-radius:4px;box-shadow:0 4px 24px rgba(0,0,0,.4)}
/* CLS prevention: sidebar component styles (match main.css final state) */
.sidebar-menu{margin:0;padding:0}
.sidebar-tabs{display:flex;gap:0;margin:4px 0 0;border-bottom:1px solid #d8dce2}
.sidebar-tab{flex:1;padding:9px 12px 8px;border:none;background:transparent;font:600 13px 'IBM Plex Sans',sans-serif;color:#757a87;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color 0.15s,border-color 0.15s}
.sidebar-tab.active{color:#1d3158;border-bottom-color:#1d3158}
.sidebar-panel{display:none;padding-top:10px}
.sidebar-panel.active{display:block}
.sidebar-tools-list{margin:0;padding:0;list-style:none}
.sidebar-tools-list li a{display:block;padding:5px 10px 5px 24px;font-size:14px;color:#495057;text-decoration:none;border-left:2px solid transparent;border-radius:0 4px 4px 0}
.sidebar-section-header{padding:7px 12px;font-size:15px;font-weight:700;color:#212529;cursor:pointer;border-radius:4px}
.sidebar-chevron{display:inline-block;font-size:10px;margin-right:4px;color:#757575}
.sidebar-section-items{display:none;padding-left:0;margin:2px 0 6px}
.sidebar-section.expanded .sidebar-section-items{display:block}
.sidebar-section-items li{line-height:1.5}
.sidebar-section-items li a{display:block;padding:4px 10px 4px 32px;font-size:14px;color:#495057;text-decoration:none;border-left:2px solid transparent;border-radius:0 4px 4px 0}
.sidebar-divider{margin:12px 0 2px;padding:0 12px 4px 24px;font-size:11px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:#9ca3af;border-bottom:1px solid #f0f2f5;list-style:none}
.sidebar-divider:first-child{margin-top:4px}
.progress-dot{display:inline-block;width:10px;height:10px;border-radius:50%;border:1.5px solid #d1d5db;margin-right:7px;vertical-align:middle;flex-shrink:0;position:relative}
/* CLS prevention: TOC sidebar matches main.css final state */
#toc-wrapper{position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto;padding-left:14px;border-left:1px solid #e9ecef}
.toc-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.8px;color:#6c757d;margin-bottom:10px;padding-bottom:0}
#toc{margin:0;padding:0}
#toc li{line-height:1.45;margin-bottom:1px}
#toc li a{font-size:13.5px;color:#6c757d;text-decoration:none;display:block;padding:3px 0;border-left:2px solid transparent;padding-left:8px;margin-left:-15px}
#toc li a.toc-active{color:#1d3158;font-weight:600;border-left-color:#1d3158}
/* CLS prevention: engagement strip layout (matches engagement.css) */
.engagement-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:12px;color:#64748b;letter-spacing:0.01em;margin:0.4em 0 1em;min-height:22px}
.engagement-header:empty{display:none}
/* CLS prevention: progress bar space (matches engagement.css) */
.engagement-progress{min-height:32px;margin:1.2em 0 1.6em}
/* CLS prevention: WebR editor min-height so the static→textarea swap doesn't shift layout */
.webr-editor{min-height:60px}
/* CLS prevention: images in content always reserve aspect ratio */
#content img{max-width:100%;height:auto}
</style>
<!-- Full Bootstrap deferred (non-render-blocking) -->
<link href="www/bootstrap.min.css?h=dae0a568" rel="stylesheet" media="print" onload="this.media='all'">
<noscript><link href="www/bootstrap.min.css?h=dae0a568" rel="stylesheet"></noscript>
<link href="www/highlight.min.css?h=f103014a" rel="stylesheet" media="print" onload="this.media='all'">
<link href="css/main.min.css?h=58574f81" rel="stylesheet" media="print" onload="this.media='all'">
<noscript><link href="css/main.min.css?h=58574f81" rel="stylesheet"></noscript>
<style>
a{color:#1d3158}a:hover{text-decoration:underline}
li{line-height:1.65}
.MathJax_Display{margin:0}
blockquote p{line-height:1.75;color:#717171}
@media(min-width:1200px){.container{width:1170px}}
#nav,#content,#toc-sidebar{box-sizing:border-box}
#content{padding-left:15px;padding-right:15px;overflow-wrap:break-word;word-wrap:break-word;overflow-x:clip}
@media(max-width:767px){#nav{display:none}.masthead-menu-btn{display:inline-flex!important}.masthead-nav{display:none}.masthead-search{display:none}.site-masthead-inner{padding:10px 16px;gap:12px}}
@media(max-width:400px){.masthead-name{font-size:13px}}
.mobile-sidebar-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;background:rgba(0,0,0,0.4)}
.mobile-sidebar-overlay.open{display:block}
.mobile-sidebar-panel{position:fixed;top:0;left:0;bottom:0;width:280px;background:#fff;z-index:10000;overflow-y:auto;padding:16px;box-shadow:2px 0 16px rgba(0,0,0,0.15);transform:translateX(-100%);transition:transform 0.25s ease}
.mobile-sidebar-overlay.open .mobile-sidebar-panel{transform:translateX(0)}
.mobile-sidebar-close{position:absolute;top:10px;right:12px;background:none;border:none;font-size:22px;cursor:pointer;color:#666}
/* Mobile top-nav drawer section */
.mnav-section{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid #e5e7eb}
.mnav-section:last-child{border-bottom:none}
.mnav-title{font-family:'IBM Plex Sans',sans-serif;font-size:11px;font-weight:600;color:#8a8f99;text-transform:uppercase;letter-spacing:0.06em;margin:0 0 8px}
.mnav-link{display:block;padding:9px 10px;color:#3a3f4a;text-decoration:none;font-size:15px;border-radius:6px;font-family:'IBM Plex Sans',sans-serif}
.mnav-link:hover,.mnav-link:active{background:#f1f3f6;color:#0d1117;text-decoration:none}
.mnav-accordion{padding:0}
.mnav-accordion>summary{padding:9px 10px;cursor:pointer;font-size:15px;font-weight:500;color:#3a3f4a;list-style:none;border-radius:6px;font-family:'IBM Plex Sans',sans-serif;display:flex;align-items:center;justify-content:space-between}
.mnav-accordion>summary::-webkit-details-marker{display:none}
.mnav-accordion>summary::after{content:'\25BE';font-size:11px;color:#8a8f99;transition:transform 0.15s}
.mnav-accordion[open]>summary::after{transform:rotate(180deg)}
.mnav-accordion>summary:hover{background:#f1f3f6}
.mnav-accordion-body{padding:4px 6px 8px 10px}
.mnav-accordion-body .mnav-link{padding:7px 8px;font-size:14px;color:#4a5160}
.mnav-accordion-body h6{margin:10px 0 4px 8px;font-family:'IBM Plex Sans',sans-serif;font-size:10px;font-weight:600;color:#8a8f99;text-transform:uppercase;letter-spacing:0.06em}
html.dark .mobile-sidebar-panel{background:#1e293b}
html.dark .mobile-sidebar-overlay{background:rgba(0,0,0,0.6)}
html.dark .mobile-sidebar-close{color:#94a3b8}
html.dark .mnav-section{border-bottom-color:#334155}
html.dark .mnav-title{color:#7a808c}
html.dark .mnav-link,html.dark .mnav-accordion>summary{color:#c5cad3}
html.dark .mnav-link:hover,html.dark .mnav-link:active,html.dark .mnav-accordion>summary:hover{background:#1a1d22;color:#fff}
html.dark .mnav-accordion-body .mnav-link{color:#b0b5bf}
html.dark .mnav-accordion-body h6{color:#7a808c}
</style>
<!-- Open Graph -->
<meta property="og:title" content="Copulas in R: Model Multivariate Dependence Beyond Correlation">
<meta property="og:description" content="Master copulas in R: model multivariate dependence beyond correlation with Gaussian, Clayton, Gumbel, and Frank copulas, fitting, GoF tests, and code.">
<meta property="og:type" content="article">
<meta property="og:url" content="https://r-statistics.co/Copulas-in-R.html">
<meta property="og:site_name" content="r-statistics.co">
<meta property="og:image" content="https://r-statistics.co/screenshots/og/Copulas-in-R.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Copulas in R: Model Multivariate Dependence Beyond Correlation">
<meta name="twitter:description" content="Master copulas in R: model multivariate dependence beyond correlation with Gaussian, Clayton, Gumbel, and Frank copulas, fitting, GoF tests, and code.">
<meta name="twitter:image" content="https://r-statistics.co/screenshots/og/Copulas-in-R.png">
<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": ["TechArticle", "LearningResource"],
"headline": "Copulas in R: Model Multivariate Dependence Beyond Correlation",
"description": "Master copulas in R: model multivariate dependence beyond correlation with Gaussian, Clayton, Gumbel, and Frank copulas, fitting, GoF tests, and code.",
"author": {"@type": "Person", "name": "Selva Prabhakaran", "url": "https://r-statistics.co/about/", "jobTitle": "Data Scientist"},
"publisher": {"@type": "Organization", "name": "r-statistics.co", "url": "https://r-statistics.co/", "logo": {"@type": "ImageObject", "url": "https://r-statistics.co/screenshots/og-default.png"}},
"url": "https://r-statistics.co/Copulas-in-R.html",
"datePublished": "2026-05-12",
"dateModified": "2026-05-12",
"inLanguage": "en",
"educationalLevel": "Intermediate",
"programmingLanguage": "R",
"speakable": {"@type": "SpeakableSpecification", "cssSelector": [".lead", "#content h1"]}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://r-statistics.co/"},
{"@type": "ListItem", "position": 2, "name": "Copulas in R: Model Multivariate Dependence Beyond Correlation", "item": "https://r-statistics.co/Copulas-in-R.html"}
]
}
</script>
<link rel="stylesheet" href="www/webr.min.css?h=23e578a3">
<link rel="stylesheet" href="www/engagement.min.css?h=6cdbfd3e" media="print" onload="this.media='all'">
<noscript><link rel="stylesheet" href="www/engagement.min.css?h=6cdbfd3e"></noscript>
</head>
<body>
<!-- Mobile sidebar overlay -->
<div class="mobile-sidebar-overlay" id="mobile-sidebar">
<div class="mobile-sidebar-panel">
<button class="mobile-sidebar-close" id="mobile-sidebar-close">×</button>
<!-- Top nav (mobile only) -->
<div class="mnav-section">
<h6 class="mnav-title">Navigate</h6>
<a class="mnav-link" href="/">Home</a>
<a class="mnav-link" href="/posts/">Compendium</a>
<details class="mnav-accordion">
<summary>Exercises</summary>
<div class="mnav-accordion-body">
<h6>Tidyverse packages</h6>
<a class="mnav-link" href="/dplyr-Exercises-in-R.html">dplyr</a>
<a class="mnav-link" href="/ggplot2-Exercises-in-R.html">ggplot2</a>
<a class="mnav-link" href="/tidyr-Exercises-in-R.html">tidyr</a>
<a class="mnav-link" href="/stringr-Exercises-in-R.html">stringr</a>
<a class="mnav-link" href="/lubridate-Exercises-in-R.html">lubridate</a>
<a class="mnav-link" href="/purrr-Exercises-in-R.html">purrr</a>
<a class="mnav-link" href="/forcats-Exercises-in-R.html">forcats</a>
<a class="mnav-link" href="/readr-Exercises-in-R.html">readr</a>
<a class="mnav-link" href="/broom-Exercises-in-R.html">broom</a>
<a class="mnav-link" href="/tidyverse-Exercises-in-R.html">Tidyverse</a>
<a class="mnav-link" href="/R-for-Data-Science-Exercises.html">R for Data Science</a>
<h6>Deep dives</h6>
<a class="mnav-link" href="/dplyr-Joins-Exercises-in-R.html">dplyr Joins</a>
<a class="mnav-link" href="/dplyr-Window-Functions-Exercises-in-R.html">dplyr Window Functions</a>
<a class="mnav-link" href="/dplyr-Group-By-Exercises-in-R.html">dplyr group_by</a>
<a class="mnav-link" href="/ggplot2-Themes-Exercises-in-R.html">ggplot2 Themes</a>
<a class="mnav-link" href="/ggplot2-Facets-Exercises-in-R.html">ggplot2 Facets</a>
<a class="mnav-link" href="/ggplot2-Color-Scales-Exercises-in-R.html">ggplot2 Color Scales</a>
<a class="mnav-link" href="/ggplot2-Bar-Chart-Exercises-in-R.html">ggplot2 Bar Charts</a>
<a class="mnav-link" href="/ggplot2-Heatmap-Exercises-in-R.html">ggplot2 Heatmaps</a>
<a class="mnav-link" href="/tidyr-Pivot-Exercises-in-R.html">tidyr Pivot</a>
<a class="mnav-link" href="/tidyr-Nest-Unnest-Exercises-in-R.html">tidyr Nest/Unnest</a>
<a class="mnav-link" href="/Regex-Exercises-in-R.html">Regex</a>
<h6>Wrangling & EDA</h6>
<a class="mnav-link" href="/Data-Wrangling-Exercises-in-R.html">Data Wrangling</a>
<a class="mnav-link" href="/Data-Cleaning-Exercises-in-R.html">Data Cleaning</a>
<a class="mnav-link" href="/EDA-Exercises-in-R.html">EDA</a>
<a class="mnav-link" href="/Data-Visualization-Exercises-in-R.html">Data Visualization</a>
<a class="mnav-link" href="/data.table-Exercises-in-R.html">data.table</a>
<a class="mnav-link" href="/dbplyr-SQL-Exercises-in-R.html">dbplyr / SQL</a>
<a class="mnav-link" href="/Web-Scraping-Exercises-in-R.html">Web Scraping</a>
<a class="mnav-link" href="/API-Calls-Exercises-in-R.html">API Calls</a>
<h6>Statistics</h6>
<a class="mnav-link" href="/Hypothesis-Testing-Exercises-in-R.html">Hypothesis Testing</a>
<a class="mnav-link" href="/Linear-Regression-Exercises-in-R.html">Linear Regression</a>
<a class="mnav-link" href="/Logistic-Regression-Exercises-in-R.html">Logistic Regression</a>
<a class="mnav-link" href="/Correlation-Exercises-in-R.html">Correlation</a>
<a class="mnav-link" href="/Probability-Distributions-Exercises-in-R.html">Probability Distributions</a>
<h6>Machine Learning</h6>
<a class="mnav-link" href="/Machine-Learning-Exercises-in-R.html">Machine Learning</a>
<a class="mnav-link" href="/tidymodels-Exercises-in-R.html">tidymodels</a>
<a class="mnav-link" href="/Random-Forest-Exercises-in-R.html">Random Forest</a>
<a class="mnav-link" href="/XGBoost-Exercises-in-R.html">XGBoost</a>
<a class="mnav-link" href="/Clustering-Exercises-in-R.html">Clustering</a>
<a class="mnav-link" href="/PCA-Exercises-in-R.html">PCA</a>
<a class="mnav-link" href="/Cross-Validation-Exercises-in-R.html">Cross-Validation</a>
<h6>Time Series</h6>
<a class="mnav-link" href="/Time-Series-Exercises-in-R.html">Time Series</a>
<a class="mnav-link" href="/ARIMA-Exercises-in-R.html">ARIMA</a>
<h6>By Industry</h6>
<a class="mnav-link" href="/R-for-Finance-Exercises.html">Finance</a>
<a class="mnav-link" href="/R-for-Marketing-Analytics-Exercises.html">Marketing Analytics</a>
<a class="mnav-link" href="/R-for-Healthcare-Exercises.html">Healthcare</a>
<a class="mnav-link" href="/R-for-Biostatistics-Exercises.html">Biostatistics</a>
<a class="mnav-link" href="/R-for-Genomics-Exercises.html">Genomics</a>
<a class="mnav-link" href="/R-for-Sports-Analytics-Exercises.html">Sports Analytics</a>
<a class="mnav-link" href="/A-B-Testing-Exercises-in-R.html">A/B Testing</a>
<h6>Reporting & Apps</h6>
<a class="mnav-link" href="/Shiny-Exercises-in-R.html">Shiny</a>
<a class="mnav-link" href="/R-Markdown-Exercises.html">R Markdown</a>
<h6>Levels</h6>
<a class="mnav-link" href="/R-Beginner-Exercises.html">R for Beginners</a>
<a class="mnav-link" href="/R-Interview-Questions.html">R Interview Questions</a>
</div>
</details>
</div>
<div id="mobile-sidebar-content">
<!-- Populated by toc.js (curriculum nav) -->
</div>
</div>
</div>
<div class="container">
<header class="site-masthead">
<div class="site-masthead-inner">
<button id="mobile-menu-btn" class="masthead-menu-btn" aria-label="Menu">☰</button>
<a class="masthead-wordmark" href="/">
<span class="masthead-mark">R</span>
<span class="masthead-name">r‑statistics<span class="masthead-tld">.co</span></span>
</a>
<nav class="masthead-nav">
<a class="masthead-nav-link" href="/">Home</a>
<a class="masthead-nav-link" href="/posts/">Compendium</a>
<span class="nav-dropdown">
<a class="masthead-nav-link nav-dropdown-trigger" href="javascript:void(0)" onclick="this.parentNode.classList.toggle('open')">Exercises</a>
<div class="nav-dropdown-panel">
<div class="nav-cat">Tidyverse
<div class="nav-sub">
<h6>Packages</h6>
<a href="/dplyr-Exercises-in-R.html">dplyr</a>
<a href="/ggplot2-Exercises-in-R.html">ggplot2</a>
<a href="/tidyr-Exercises-in-R.html">tidyr</a>
<a href="/stringr-Exercises-in-R.html">stringr</a>
<a href="/lubridate-Exercises-in-R.html">lubridate</a>
<a href="/purrr-Exercises-in-R.html">purrr</a>
<a href="/forcats-Exercises-in-R.html">forcats</a>
<a href="/readr-Exercises-in-R.html">readr</a>
<a href="/broom-Exercises-in-R.html">broom</a>
<h6>Cross-package</h6>
<a href="/tidyverse-Exercises-in-R.html">Tidyverse</a>
<a href="/R-for-Data-Science-Exercises.html">R for Data Science</a>
</div>
</div>
<div class="nav-cat">dplyr deep dives
<div class="nav-sub">
<a href="/dplyr-Joins-Exercises-in-R.html">Joins</a>
<a href="/dplyr-Window-Functions-Exercises-in-R.html">Window Functions</a>
<a href="/dplyr-Group-By-Exercises-in-R.html">group_by</a>
</div>
</div>
<div class="nav-cat">ggplot2 deep dives
<div class="nav-sub">
<a href="/ggplot2-Themes-Exercises-in-R.html">Themes</a>
<a href="/ggplot2-Facets-Exercises-in-R.html">Facets</a>
<a href="/ggplot2-Color-Scales-Exercises-in-R.html">Color Scales</a>
<a href="/ggplot2-Bar-Chart-Exercises-in-R.html">Bar Charts</a>
<a href="/ggplot2-Heatmap-Exercises-in-R.html">Heatmaps</a>
<a href="/Data-Visualization-Exercises-in-R.html">Data Visualization (general)</a>
<a href="/plotly-Exercises-in-R.html">plotly (interactive)</a>
<a href="/leaflet-Exercises-in-R.html">leaflet (maps)</a>
<a href="/gt-Tables-Exercises-in-R.html">gt Tables</a>
</div>
</div>
<div class="nav-cat">tidyr deep dives
<div class="nav-sub">
<a href="/tidyr-Pivot-Exercises-in-R.html">Pivot</a>
<a href="/tidyr-Nest-Unnest-Exercises-in-R.html">Nest/Unnest</a>
<a href="/Regex-Exercises-in-R.html">Regex in R</a>
</div>
</div>
<div class="nav-cat">Data Wrangling
<div class="nav-sub">
<a href="/Data-Wrangling-Exercises-in-R.html">Data Wrangling</a>
<a href="/Data-Cleaning-Exercises-in-R.html">Data Cleaning</a>
<a href="/EDA-Exercises-in-R.html">EDA</a>
<a href="/data.table-Exercises-in-R.html">data.table</a>
<a href="/dbplyr-SQL-Exercises-in-R.html">dbplyr / SQL</a>
<a href="/Web-Scraping-Exercises-in-R.html">Web Scraping</a>
<a href="/API-Calls-Exercises-in-R.html">API Calls</a>
</div>
</div>
<div class="nav-cat">Statistics
<div class="nav-sub">
<h6>Tests</h6>
<a href="/Hypothesis-Testing-Exercises-in-R.html">Hypothesis Testing</a>
<a href="/t-Test-Exercises-in-R.html">t-Test</a>
<a href="/ANOVA-Exercises-in-R.html">ANOVA</a>
<a href="/Chi-Square-Test-Exercises-in-R.html">Chi-Square</a>
<a href="/Correlation-Exercises-in-R.html">Correlation</a>
<h6>Regression</h6>
<a href="/Linear-Regression-Exercises-in-R.html">Linear Regression</a>
<a href="/Logistic-Regression-Exercises-in-R.html">Logistic Regression</a>
<h6>Probability & Sampling</h6>
<a href="/Probability-Distributions-Exercises-in-R.html">Probability Distributions</a>
<a href="/Sampling-Methods-Exercises-in-R.html">Sampling Methods</a>
<a href="/Survey-Analysis-in-R-Exercises.html">Survey Analysis</a>
</div>
</div>
<div class="nav-cat">Machine Learning
<div class="nav-sub">
<h6>Workflow</h6>
<a href="/Machine-Learning-Exercises-in-R.html">Machine Learning</a>
<a href="/tidymodels-Exercises-in-R.html">tidymodels</a>
<a href="/Cross-Validation-Exercises-in-R.html">Cross-Validation</a>
<h6>Algorithms</h6>
<a href="/Random-Forest-Exercises-in-R.html">Random Forest</a>
<a href="/XGBoost-Exercises-in-R.html">XGBoost</a>
<a href="/Clustering-Exercises-in-R.html">Clustering</a>
<a href="/PCA-Exercises-in-R.html">PCA</a>
</div>
</div>
<div class="nav-cat">Time Series
<div class="nav-sub">
<a href="/Time-Series-Exercises-in-R.html">Time Series</a>
<a href="/ARIMA-Exercises-in-R.html">ARIMA</a>
</div>
</div>
<div class="nav-cat">By Industry
<div class="nav-sub">
<a href="/R-for-Finance-Exercises.html">Finance</a>
<a href="/R-for-Marketing-Analytics-Exercises.html">Marketing Analytics</a>
<a href="/R-for-Healthcare-Exercises.html">Healthcare</a>
<a href="/R-for-Biostatistics-Exercises.html">Biostatistics</a>
<a href="/R-for-Genomics-Exercises.html">Genomics</a>
<a href="/R-for-Sports-Analytics-Exercises.html">Sports Analytics</a>
<a href="/A-B-Testing-Exercises-in-R.html">A/B Testing</a>
</div>
</div>
<div class="nav-cat">Reporting & Apps
<div class="nav-sub">
<a href="/Shiny-Exercises-in-R.html">Shiny</a>
<a href="/R-Markdown-Exercises.html">R Markdown</a>
</div>
</div>
<div class="nav-cat">Performance
<div class="nav-sub">
<a href="/R-Performance-Optimization-Exercises.html">Performance Optimization</a>
<a href="/Parallel-Computing-in-R-Exercises.html">Parallel Computing</a>
</div>
</div>
<div class="nav-cat">By Level
<div class="nav-sub">
<a href="/R-Beginner-Exercises.html">R for Beginners</a>
<a href="/R-Interview-Questions.html">R Interview Questions</a>
</div>
</div>
</div>
</span>
</nav>
<div class="masthead-tools">
<form onsubmit="my_search_google(); return false;" class="masthead-search">
<input type="text" id="my-google-search" placeholder="Search…" aria-label="Search r-statistics.co">
</form>
<button id="dark-mode-toggle" class="masthead-icon-btn" aria-label="Toggle dark mode" title="Toggle dark mode">☽</button>
</div>
</div>
</header>
<div class="row">
<div class="col-xs-12 col-sm-3" id="nav">
<div id="sidebar-nav"><div class="continue-chip" data-continue-chip><span class="chip-label">Continue reading</span><a href="#" data-continue-link></a></div><div class="sidebar-tabs" role="tablist"><button class="sidebar-tab active" data-tab="posts" type="button" role="tab" onclick="var n=this.dataset.tab;document.querySelectorAll('.sidebar-tab').forEach(function(x){x.classList.toggle('active',x.dataset.tab===n)});document.querySelectorAll('.sidebar-panel').forEach(function(p){p.classList.toggle('active',p.dataset.panel===n)});try{localStorage.setItem('rstat_sidebar_tab',n)}catch(e){}">Posts</button><button class="sidebar-tab" data-tab="tools" type="button" role="tab" onclick="var n=this.dataset.tab;document.querySelectorAll('.sidebar-tab').forEach(function(x){x.classList.toggle('active',x.dataset.tab===n)});document.querySelectorAll('.sidebar-panel').forEach(function(p){p.classList.toggle('active',p.dataset.panel===n)});try{localStorage.setItem('rstat_sidebar_tab',n)}catch(e){}">Tools</button></div><div class="sidebar-panel active" data-panel="posts"><ul class="sidebar-menu list-unstyled"><li class="sidebar-section expanded"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Learn R<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec0sub1" data-collapsed="false"><span class="subsec-chevron">▼</span> Getting Started</li><li data-subkey="sec0sub1"><a href="/Is-R-Worth-Learning-in-2026.html"><span class="progress-dot"></span>Is R Worth Learning?</a></li><li data-subkey="sec0sub1"><a href="/Install-R-and-RStudio-2026.html"><span class="progress-dot"></span>Install R & RStudio</a></li><li data-subkey="sec0sub1"><a href="/RStudio-IDE-Tour.html"><span class="progress-dot"></span>RStudio IDE Tour</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec0sub2" data-collapsed="false"><span class="subsec-chevron">▼</span> R Fundamentals</li><li data-subkey="sec0sub2"><a href="/R-Syntax-101.html"><span class="progress-dot"></span>R Syntax 101</a></li><li data-subkey="sec0sub2"><a href="/R-Data-Types.html"><span class="progress-dot"></span>R Data Types</a></li><li data-subkey="sec0sub2"><a href="/R-Vectors.html"><span class="progress-dot"></span>R Vectors</a></li><li data-subkey="sec0sub2"><a href="/R-Matrices.html"><span class="progress-dot"></span>R Matrices</a></li><li data-subkey="sec0sub2"><a href="/R-Factors.html"><span class="progress-dot"></span>R Factors</a></li><li data-subkey="sec0sub2"><a href="/R-Data-Frames.html"><span class="progress-dot"></span>R Data Frames</a></li><li data-subkey="sec0sub2"><a href="/R-Lists.html"><span class="progress-dot"></span>R Lists</a></li><li data-subkey="sec0sub2"><a href="/R-Control-Flow.html"><span class="progress-dot"></span>R Control Flow</a></li><li data-subkey="sec0sub2"><a href="/R-Special-Values.html"><span class="progress-dot"></span>R Special Values</a></li><li data-subkey="sec0sub2"><a href="/R-Type-Coercion.html"><span class="progress-dot"></span>R Type Coercion</a></li><li data-subkey="sec0sub2"><a href="/R-Functions.html"><span class="progress-dot"></span>Writing R Functions</a></li><li data-subkey="sec0sub2"><a href="/R-Beginner-Exercises-quiz.html"><span class="progress-dot"></span>R Fundamentals Quiz</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec0sub3" data-collapsed="false"><span class="subsec-chevron">▼</span> Working Effectively</li><li data-subkey="sec0sub3"><a href="/R-Subsetting.html"><span class="progress-dot"></span>R Subsetting</a></li><li data-subkey="sec0sub3"><a href="/Getting-Help-in-R.html"><span class="progress-dot"></span>Getting Help in R</a></li><li data-subkey="sec0sub3"><a href="/R-Project-Structure.html"><span class="progress-dot"></span>R Project Structure</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec0sub4" data-collapsed="false"><span class="subsec-chevron">▼</span> R Career & Resources</li><li data-subkey="sec0sub4"><a href="/R-vs-Python.html"><span class="progress-dot"></span>R vs Python</a></li><li data-subkey="sec0sub4"><a href="/How-to-Learn-R.html"><span class="progress-dot"></span>How to Learn R</a></li><li data-subkey="sec0sub4"><a href="/R-for-Excel-Users.html"><span class="progress-dot"></span>R for Excel Users</a></li><li data-subkey="sec0sub4"><a href="/R-Interview-Questions.html"><span class="progress-dot"></span>R Interview Questions</a></li><li data-subkey="sec0sub4"><a href="/R-Interview-Questions-quiz.html"><span class="progress-dot"></span>R Interview Readiness Quiz</a></li><li data-subkey="sec0sub4"><a href="/R-Cheat-Sheet.html"><span class="progress-dot"></span>R Cheat Sheet</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec0sub5" data-collapsed="false"><span class="subsec-chevron">▼</span> Professional R</li><li data-subkey="sec0sub5"><a href="/Data-Ethics-in-R.html"><span class="progress-dot"></span>Data Ethics</a></li><li data-subkey="sec0sub5"><a href="/Bias-in-Data-and-Models.html"><span class="progress-dot"></span>Bias in Data & Models</a></li><li data-subkey="sec0sub5"><a href="/Reproducibility-Crisis.html"><span class="progress-dot"></span>Reproducibility</a></li><li data-subkey="sec0sub5"><a href="/Data-Privacy-in-R.html"><span class="progress-dot"></span>Data Privacy</a></li><li data-subkey="sec0sub5"><a href="/Communicating-Uncertainty.html"><span class="progress-dot"></span>Communicating Uncertainty</a></li></ul></li><li class="sidebar-section"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Data Wrangling<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec1sub1" data-collapsed="false"><span class="subsec-chevron">▼</span> Import & Setup</li><li data-subkey="sec1sub1"><a href="/Importing-Data-in-R.html"><span class="progress-dot"></span>Importing Data</a></li><li data-subkey="sec1sub1"><a href="/R-Pipe-Operator.html"><span class="progress-dot"></span>Pipe Operator</a></li><li data-subkey="sec1sub1"><a href="/Tidy-Data-in-R.html"><span class="progress-dot"></span>Tidy Data</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec1sub2" data-collapsed="false"><span class="subsec-chevron">▼</span> dplyr Essentials</li><li data-subkey="sec1sub2"><a href="/dplyr-filter-select.html"><span class="progress-dot"></span>dplyr filter & select</a></li><li data-subkey="sec1sub2"><a href="/dplyr-mutate-rename.html"><span class="progress-dot"></span>dplyr mutate & rename</a></li><li data-subkey="sec1sub2"><a href="/dplyr-group-by-summarise.html"><span class="progress-dot"></span>dplyr group_by & summarise</a></li><li data-subkey="sec1sub2"><a href="/dplyr-arrange-slice.html"><span class="progress-dot"></span>dplyr arrange & slice</a></li><li data-subkey="sec1sub2"><a href="/dplyr-across.html"><span class="progress-dot"></span>dplyr across()</a></li><li data-subkey="sec1sub2"><a href="/dplyr-case-when.html"><span class="progress-dot"></span>dplyr case_when()</a></li><li data-subkey="sec1sub2"><a href="/dplyr-Exercises-in-R-quiz.html"><span class="progress-dot"></span>dplyr Quiz</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec1sub3" data-collapsed="false"><span class="subsec-chevron">▼</span> Join & Reshape</li><li data-subkey="sec1sub3"><a href="/R-Joins.html"><span class="progress-dot"></span>R Joins</a></li><li data-subkey="sec1sub3"><a href="/pivot_longer-pivot_wider-Reshape-Data-in-R.html"><span class="progress-dot"></span>pivot_longer & pivot_wider</a></li><li data-subkey="sec1sub3"><a href="/tidyr-separate-unite-Split-Combine-Columns-in-R.html"><span class="progress-dot"></span>separate() & unite()</a></li><li data-subkey="sec1sub3"><a href="/tidyr-Exercises-in-R-quiz.html"><span class="progress-dot"></span>tidyr Quiz</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec1sub4" data-collapsed="false"><span class="subsec-chevron">▼</span> Clean & Quality</li><li data-subkey="sec1sub4"><a href="/Missing-Values-in-R-Detect-Count-Remove-Impute-NA.html"><span class="progress-dot"></span>Missing Values (NA)</a></li><li data-subkey="sec1sub4"><a href="/Data-Quality-Checking-in-R.html"><span class="progress-dot"></span>Data Quality Checking</a></li><li data-subkey="sec1sub4"><a href="/janitor-Package-in-R.html"><span class="progress-dot"></span>janitor Package</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec1sub5" data-collapsed="false"><span class="subsec-chevron">▼</span> Strings & Dates</li><li data-subkey="sec1sub5"><a href="/stringr-in-R.html"><span class="progress-dot"></span>stringr</a></li><li data-subkey="sec1sub5"><a href="/R-Regex-stringr-Pattern-Matching.html"><span class="progress-dot"></span>Regex Patterns</a></li><li data-subkey="sec1sub5"><a href="/lubridate-in-R.html"><span class="progress-dot"></span>lubridate</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec1sub6" data-collapsed="false"><span class="subsec-chevron">▼</span> Scale & Connect</li><li data-subkey="sec1sub6"><a href="/DBI-in-R.html"><span class="progress-dot"></span>DBI & Databases</a></li><li data-subkey="sec1sub6"><a href="/DuckDB-in-R.html"><span class="progress-dot"></span>DuckDB & duckplyr</a></li><li data-subkey="sec1sub6"><a href="/Web-Scraping-in-R-with-rvest.html"><span class="progress-dot"></span>Web Scraping (rvest)</a></li><li data-subkey="sec1sub6"><a href="/REST-APIs-in-R-with-httr2.html"><span class="progress-dot"></span>REST APIs (httr2)</a></li></ul></li><li class="sidebar-section"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Visualization<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub1" data-collapsed="false"><span class="subsec-chevron">▼</span> ggplot2 Foundations</li><li data-subkey="sec2sub1"><a href="/ggplot2-Grammar-of-Graphics.html"><span class="progress-dot"></span>Grammar of Graphics</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Getting-Started.html"><span class="progress-dot"></span>ggplot2 Getting Started</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Aesthetics-aes-Map-Data.html"><span class="progress-dot"></span>ggplot2 Aesthetics (aes)</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Colours.html"><span class="progress-dot"></span>ggplot2 Colours</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Scales.html"><span class="progress-dot"></span>ggplot2 Scales</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Themes-in-R.html"><span class="progress-dot"></span>ggplot2 Themes</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Labels-and-Annotations.html"><span class="progress-dot"></span>Labels & Annotations</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Facets.html"><span class="progress-dot"></span>ggplot2 Facets</a></li><li data-subkey="sec2sub1"><a href="/ggplot2-Exercises-in-R-quiz.html"><span class="progress-dot"></span>ggplot2 Quiz</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub2" data-collapsed="false"><span class="subsec-chevron">▼</span> Core Charts</li><li data-subkey="sec2sub2"><a href="/ggplot2-Scatter-Plots.html"><span class="progress-dot"></span>Scatter Plots</a></li><li data-subkey="sec2sub2"><a href="/ggplot2-Line-Charts.html"><span class="progress-dot"></span>Line Charts</a></li><li data-subkey="sec2sub2"><a href="/ggplot2-Bar-Charts.html"><span class="progress-dot"></span>Bar Charts</a></li><li data-subkey="sec2sub2"><a href="/ggplot2-Distribution-Charts.html"><span class="progress-dot"></span>Distribution Charts</a></li><li data-subkey="sec2sub2"><a href="/Error-Bars-in-R.html"><span class="progress-dot"></span>Error Bars</a></li><li data-subkey="sec2sub2"><a href="/geom_smooth-in-R.html"><span class="progress-dot"></span>geom_smooth()</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub3" data-collapsed="false"><span class="subsec-chevron">▼</span> Distributions & Groups</li><li data-subkey="sec2sub3"><a href="/Violin-Plot-in-R.html"><span class="progress-dot"></span>Violin Plot</a></li><li data-subkey="sec2sub3"><a href="/Ridgeline-Plot-in-R.html"><span class="progress-dot"></span>Ridgeline Plot</a></li><li data-subkey="sec2sub3"><a href="/Lollipop-Chart-in-R.html"><span class="progress-dot"></span>Lollipop Chart</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub4" data-collapsed="false"><span class="subsec-chevron">▼</span> Relationships</li><li data-subkey="sec2sub4"><a href="/Bubble-Chart-in-R.html"><span class="progress-dot"></span>Bubble Chart</a></li><li data-subkey="sec2sub4"><a href="/Heatmap-in-R.html"><span class="progress-dot"></span>Heatmap in R</a></li><li data-subkey="sec2sub4"><a href="/Correlation-Matrix-Plot-in-R.html"><span class="progress-dot"></span>Correlation Matrix</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub5" data-collapsed="false"><span class="subsec-chevron">▼</span> Advanced Charts</li><li data-subkey="sec2sub5"><a href="/Pie-Donut-Chart-in-R.html"><span class="progress-dot"></span>Pie & Donut Chart</a></li><li data-subkey="sec2sub5"><a href="/Treemap-in-R.html"><span class="progress-dot"></span>Treemap</a></li><li data-subkey="sec2sub5"><a href="/Waffle-Chart-in-R.html"><span class="progress-dot"></span>Waffle Chart</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub6" data-collapsed="false"><span class="subsec-chevron">▼</span> Exploratory Analysis</li><li data-subkey="sec2sub6"><a href="/Exploratory-Data-Analysis-in-R.html"><span class="progress-dot"></span>EDA (7-Step Framework)</a></li><li data-subkey="sec2sub6"><a href="/Univariate-EDA-in-R.html"><span class="progress-dot"></span>Univariate EDA</a></li><li data-subkey="sec2sub6"><a href="/Bivariate-EDA-in-R.html"><span class="progress-dot"></span>Bivariate EDA</a></li><li data-subkey="sec2sub6"><a href="/Descriptive-Statistics-in-R.html"><span class="progress-dot"></span>Descriptive Statistics</a></li><li data-subkey="sec2sub6"><a href="/Correlation-Analysis-in-R.html"><span class="progress-dot"></span>Correlation Analysis</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub7" data-collapsed="false"><span class="subsec-chevron">▼</span> Interactive & Maps</li><li data-subkey="sec2sub7"><a href="/Combining-ggplot2-with-plotly.html"><span class="progress-dot"></span>ggplot2 + plotly Interactive</a></li><li data-subkey="sec2sub7"><a href="/Interactive-Maps-in-R-with-leaflet.html"><span class="progress-dot"></span>Leaflet Interactive Maps</a></li><li data-subkey="sec2sub7"><a href="/Spatial-Data-in-R-with-sf.html"><span class="progress-dot"></span>Spatial Data (sf)</a></li><li data-subkey="sec2sub7"><a href="/Choropleth-Maps-in-R.html"><span class="progress-dot"></span>Choropleth Maps (sf)</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec2sub8" data-collapsed="false"><span class="subsec-chevron">▼</span> Customization & Reference</li><li data-subkey="sec2sub8"><a href="/ggplot2-Legends-in-R.html"><span class="progress-dot"></span>ggplot2 Legends</a></li><li data-subkey="sec2sub8"><a href="/ggplot2-Secondary-Axis.html"><span class="progress-dot"></span>Secondary Axis</a></li><li data-subkey="sec2sub8"><a href="/ggplot2-Log-Scale.html"><span class="progress-dot"></span>Log Scale</a></li><li data-subkey="sec2sub8"><a href="/patchwork-Package.html"><span class="progress-dot"></span>patchwork (Combine Plots)</a></li><li data-subkey="sec2sub8"><a href="/Publication-Quality-Figures-in-R.html"><span class="progress-dot"></span>Publication-Ready Figures</a></li><li data-subkey="sec2sub8"><a href="/ggplot2-cheatsheet.html"><span class="progress-dot"></span>ggplot2 Quickref</a></li></ul></li><li class="sidebar-section"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Statistics<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec3sub1" data-collapsed="false"><span class="subsec-chevron">▼</span> EDA & Data Quality</li><li data-subkey="sec3sub1"><a href="/Automated-EDA-in-R.html"><span class="progress-dot"></span>Automated EDA</a></li><li data-subkey="sec3sub1"><a href="/Missing-Data-Visualization-in-R-naniar.html"><span class="progress-dot"></span>Missing Data Viz (naniar)</a></li><li data-subkey="sec3sub1"><a href="/Outlier-Detection-in-R.html"><span class="progress-dot"></span>Outlier Detection</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec3sub2" data-collapsed="false"><span class="subsec-chevron">▼</span> Probability</li><li data-subkey="sec3sub2"><a href="/Sample-Spaces-Events-and-Probability-Axioms-in-R-With-Monte-Carlo-Proof.html"><span class="progress-dot"></span>Probability Axioms</a></li><li data-subkey="sec3sub2"><a href="/Conditional-Probability-in-R.html"><span class="progress-dot"></span>Conditional Probability</a></li><li data-subkey="sec3sub2"><a href="/Random-Variables-in-R.html"><span class="progress-dot"></span>Random Variables</a></li><li data-subkey="sec3sub2"><a href="/Binomial-and-Poisson-Distributions-in-R.html"><span class="progress-dot"></span>Binomial vs Poisson</a></li><li data-subkey="sec3sub2"><a href="/Normal-t-F-and-Chi-Squared-Distributions-in-R.html"><span class="progress-dot"></span>Normal, t, F, Chi-Squared</a></li><li data-subkey="sec3sub2"><a href="/Central-Limit-Theorem-in-R.html"><span class="progress-dot"></span>Central Limit Theorem</a></li><li data-subkey="sec3sub2"><a href="/Sampling-Distributions-in-R.html"><span class="progress-dot"></span>Sampling Distributions</a></li><li data-subkey="sec3sub2"><a href="/Law-of-Large-Numbers-vs-CLT-in-R.html"><span class="progress-dot"></span>LLN vs CLT</a></li><li data-subkey="sec3sub2"><a href="/What-Is-Probability-Simulation-First-Intuition-in-R-Before-the-Formulas.html"><span class="progress-dot"></span>Probability (Simulation-First)</a></li><li data-subkey="sec3sub2"><a href="/Expected-Value-and-Variance-in-R.html"><span class="progress-dot"></span>Expected Value and Variance</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec3sub3" data-collapsed="false"><span class="subsec-chevron">▼</span> Inference & Estimation</li><li data-subkey="sec3sub3"><a href="/Maximum-Likelihood-Estimation-in-R.html"><span class="progress-dot"></span>Maximum Likelihood Estimation</a></li><li data-subkey="sec3sub3"><a href="/Hypothesis-Testing-in-R.html"><span class="progress-dot"></span>Hypothesis Testing</a></li><li data-subkey="sec3sub3"><a href="/Sample-Size-Planning-in-R.html"><span class="progress-dot"></span>Sample Size Planning</a></li><li data-subkey="sec3sub3"><a href="/Which-Statistical-Test-in-R.html"><span class="progress-dot"></span>Choosing the Right Test</a></li><li data-subkey="sec3sub3"><a href="/Statistical-Tests-in-R.html"><span class="progress-dot"></span>Statistical Tests</a></li><li data-subkey="sec3sub3"><a href="/Measures-of-Association-in-R.html"><span class="progress-dot"></span>Measures of Association</a></li><li data-subkey="sec3sub3"><a href="/Point-Estimation-in-R.html"><span class="progress-dot"></span>Point Estimation</a></li><li data-subkey="sec3sub3"><a href="/Confidence-Intervals-in-R.html"><span class="progress-dot"></span>Confidence Intervals</a></li><li data-subkey="sec3sub3"><a href="/Type-I-and-Type-II-Errors-in-R.html"><span class="progress-dot"></span>Type I and II Errors</a></li><li data-subkey="sec3sub3"><a href="/Statistical-Power-Analysis-in-R.html"><span class="progress-dot"></span>Power Analysis</a></li><li data-subkey="sec3sub3"><a href="/Effect-Size-in-R.html"><span class="progress-dot"></span>Effect Size</a></li><li data-subkey="sec3sub3"><a href="/t-Tests-in-R.html"><span class="progress-dot"></span>t-Tests</a></li><li data-subkey="sec3sub3"><a href="/Proportion-Tests-in-R.html"><span class="progress-dot"></span>Proportion Tests</a></li><li data-subkey="sec3sub3"><a href="/Normality-and-Variance-Tests-in-R.html"><span class="progress-dot"></span>Normality & Variance Tests</a></li><li data-subkey="sec3sub3"><a href="/Chi-Square-Tests-in-R.html"><span class="progress-dot"></span>Chi-Square Tests</a></li><li data-subkey="sec3sub3"><a href="/Wilcoxon-Mann-Whitney-and-Kruskal-Wallis-in-R.html"><span class="progress-dot"></span>Wilcoxon, Mann-Whitney & Kruskal-Wallis</a></li><li data-subkey="sec3sub3"><a href="/Multiple-Comparisons-in-R.html"><span class="progress-dot"></span>Multiple Testing Correction</a></li><li data-subkey="sec3sub3"><a href="/Hypothesis-Testing-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Hypothesis Testing Quiz</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec3sub4" data-collapsed="false"><span class="subsec-chevron">▼</span> Regression</li><li data-subkey="sec3sub4"><a href="/Linear-Regression.html"><span class="progress-dot"></span>Linear Regression</a></li><li data-subkey="sec3sub4"><a href="/Logistic-Regression-With-R.html"><span class="progress-dot"></span>Logistic Regression</a></li><li data-subkey="sec3sub4"><a href="/Variable-Selection-and-Importance-With-R.html"><span class="progress-dot"></span>Feature Selection</a></li><li data-subkey="sec3sub4"><a href="/Model-Selection-in-R.html"><span class="progress-dot"></span>Model Selection</a></li><li data-subkey="sec3sub4"><a href="/Missing-Value-Treatment-With-R.html"><span class="progress-dot"></span>Missing Value Treatment</a></li><li data-subkey="sec3sub4"><a href="/Outlier-Treatment-With-R.html"><span class="progress-dot"></span>Outlier Analysis</a></li><li data-subkey="sec3sub4"><a href="/adv-regression-models.html"><span class="progress-dot"></span>Advanced Regression Models</a></li><li data-subkey="sec3sub4"><a href="/Linear-Regression-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Linear Regression Quiz</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec3sub5" data-collapsed="false"><span class="subsec-chevron">▼</span> Reporting</li><li data-subkey="sec3sub5"><a href="/Statistical-Consulting-in-R.html"><span class="progress-dot"></span>Statistical Consulting</a></li><li data-subkey="sec3sub5"><a href="/Statistical-Report-Writing-in-R.html"><span class="progress-dot"></span>Statistical Report Writing</a></li><li data-subkey="sec3sub5"><a href="/Bootstrap-Confidence-Intervals-in-R.html"><span class="progress-dot"></span>Bootstrap Confidence Intervals</a></li><li data-subkey="sec3sub5"><a href="/Reporting-Statistics-in-R.html"><span class="progress-dot"></span>Reporting Statistics</a></li><li data-subkey="sec3sub5"><a href="/Correlation-in-R.html"><span class="progress-dot"></span>Correlation (Pearson, Spearman, Kendall)</a></li><li data-subkey="sec3sub5"><a href="/Linear-Regression-Assumptions-in-R.html"><span class="progress-dot"></span>Linear Regression Assumptions</a></li><li data-subkey="sec3sub5"><a href="/Dummy-Variables-in-R.html"><span class="progress-dot"></span>Dummy Variables in R</a></li><li data-subkey="sec3sub5"><a href="/Interaction-Effects-in-R.html"><span class="progress-dot"></span>Interaction Effects</a></li><li data-subkey="sec3sub5"><a href="/Regression-Diagnostics-in-R.html"><span class="progress-dot"></span>Regression Diagnostics</a></li><li data-subkey="sec3sub5"><a href="/Logistic-Regression-in-R.html"><span class="progress-dot"></span>Logistic Regression (glm + ROC)</a></li><li data-subkey="sec3sub5"><a href="/Variable-Selection-in-R.html"><span class="progress-dot"></span>Variable Selection</a></li><li data-subkey="sec3sub5"><a href="/Poisson-Regression-in-R.html"><span class="progress-dot"></span>Poisson Regression</a></li><li data-subkey="sec3sub5"><a href="/Ridge-and-Lasso-Regression-in-R.html"><span class="progress-dot"></span>Ridge & Lasso Regression</a></li><li data-subkey="sec3sub5"><a href="/Polynomial-and-Spline-Regression-in-R.html"><span class="progress-dot"></span>Polynomial & Splines</a></li><li data-subkey="sec3sub5"><a href="/Regression-Tables-in-R.html"><span class="progress-dot"></span>Regression Tables (3 packages)</a></li><li data-subkey="sec3sub5"><a href="/One-Way-ANOVA-in-R.html"><span class="progress-dot"></span>One-Way ANOVA</a></li><li data-subkey="sec3sub5"><a href="/Post-Hoc-Tests-After-ANOVA.html"><span class="progress-dot"></span>Post-Hoc Tests After ANOVA</a></li><li data-subkey="sec3sub5"><a href="/Two-Way-ANOVA-in-R.html"><span class="progress-dot"></span>Two-Way ANOVA</a></li><li data-subkey="sec3sub5"><a href="/Repeated-Measures-ANOVA-in-R.html"><span class="progress-dot"></span>Repeated Measures ANOVA</a></li><li data-subkey="sec3sub5"><a href="/ANCOVA-in-R.html"><span class="progress-dot"></span>ANCOVA</a></li><li data-subkey="sec3sub5"><a href="/Experimental-Design-Principles-in-R.html"><span class="progress-dot"></span>Experimental Design in R</a></li><li data-subkey="sec3sub5"><a href="/Factorial-Experiments-in-R.html"><span class="progress-dot"></span>Factorial Designs (2^k)</a></li><li data-subkey="sec3sub5"><a href="/AB-Testing-in-R.html"><span class="progress-dot"></span>A/B Testing</a></li><li data-subkey="sec3sub5"><a href="/MANOVA-in-R.html"><span class="progress-dot"></span>MANOVA</a></li><li data-subkey="sec3sub5"><a href="/Mixed-ANOVA-in-R.html"><span class="progress-dot"></span>Mixed ANOVA</a></li><li data-subkey="sec3sub5"><a href="/Multivariate-Statistics-in-R.html"><span class="progress-dot"></span>Multivariate Distances & Hotelling's T²</a></li><li data-subkey="sec3sub5"><a href="/PCA-in-R.html"><span class="progress-dot"></span>PCA with prcomp()</a></li><li data-subkey="sec3sub5"><a href="/Interpreting-PCA-Results-in-R.html"><span class="progress-dot"></span>Interpreting PCA Output</a></li><li data-subkey="sec3sub5"><a href="/Exploratory-Factor-Analysis-in-R.html"><span class="progress-dot"></span>Exploratory Factor Analysis</a></li><li data-subkey="sec3sub5"><a href="/CFA-and-Structural-Equation-Modeling-in-R.html"><span class="progress-dot"></span>SEM and CFA (lavaan)</a></li><li data-subkey="sec3sub5"><a href="/Linear-Discriminant-Analysis-in-R.html"><span class="progress-dot"></span>LDA (Linear Discriminant Analysis)</a></li><li data-subkey="sec3sub5"><a href="/Cluster-Analysis-in-R.html"><span class="progress-dot"></span>Clustering (k-Means / HC / DBSCAN)</a></li><li data-subkey="sec3sub5"><a href="/Correspondence-Analysis-in-R.html"><span class="progress-dot"></span>Correspondence Analysis</a></li><li data-subkey="sec3sub5"><a href="/t-SNE-and-UMAP-in-R.html"><span class="progress-dot"></span>t-SNE and UMAP</a></li><li data-subkey="sec3sub5"><a href="/Simple-Linear-Regression-in-R.html"><span class="progress-dot"></span>Simple Linear Regression</a></li><li data-subkey="sec3sub5"><a href="/Multiple-Regression-in-R.html"><span class="progress-dot"></span>Multiple Regression</a></li><li data-subkey="sec3sub5"><a href="/Robust-Regression-in-R.html"><span class="progress-dot"></span>Robust Regression (rlm)</a></li><li data-subkey="sec3sub5"><a href="/factoextra-and-FactoMineR.html"><span class="progress-dot"></span>factoextra (PCA + Clusters)</a></li><li data-subkey="sec3sub5"><a href="/Categorical-Data-in-R.html"><span class="progress-dot"></span>Categorical Data (Tables & Mosaic)</a></li><li data-subkey="sec3sub5"><a href="/Chi-Square-Test-of-Independence-in-R.html"><span class="progress-dot"></span>Chi-Square Test of Independence</a></li><li data-subkey="sec3sub5"><a href="/Chi-Square-Goodness-of-Fit-Test-in-R.html"><span class="progress-dot"></span>Chi-Square Goodness-of-Fit</a></li><li data-subkey="sec3sub5"><a href="/Fishers-Exact-Test-in-R.html"><span class="progress-dot"></span>Fisher's Exact Test</a></li><li data-subkey="sec3sub5"><a href="/Odds-Ratios-and-Relative-Risk-in-R.html"><span class="progress-dot"></span>Odds Ratios & Relative Risk</a></li><li data-subkey="sec3sub5"><a href="/Logistic-Regression-in-R-2.html"><span class="progress-dot"></span>Logistic Regression (Diagnostics)</a></li><li data-subkey="sec3sub5"><a href="/Poisson-and-Negative-Binomial-Regression.html"><span class="progress-dot"></span>Poisson & Negative Binomial Regression</a></li><li data-subkey="sec3sub5"><a href="/Multinomial-and-Ordinal-Logistic-Regression-in-R.html"><span class="progress-dot"></span>Multinomial & Ordinal Logistic Regression</a></li><li data-subkey="sec3sub5"><a href="/When-to-Use-Nonparametric-Tests-in-R.html"><span class="progress-dot"></span>When to Use Nonparametric Tests</a></li><li data-subkey="sec3sub5"><a href="/Wilcoxon-Signed-Rank-Test-in-R.html"><span class="progress-dot"></span>Wilcoxon Signed-Rank Test</a></li><li data-subkey="sec3sub5"><a href="/Mann-Whitney-U-Test-in-R.html"><span class="progress-dot"></span>Mann-Whitney U Test</a></li><li data-subkey="sec3sub5"><a href="/Kruskal-Wallis-Test-in-R-2.html"><span class="progress-dot"></span>Kruskal-Wallis Test</a></li><li data-subkey="sec3sub5"><a href="/Friedman-Test-in-R.html"><span class="progress-dot"></span>Friedman Test</a></li><li data-subkey="sec3sub5"><a href="/Spearman-and-Kendall-Correlation-in-R.html"><span class="progress-dot"></span>Spearman & Kendall Correlation</a></li><li data-subkey="sec3sub5"><a href="/Bootstrap-in-R.html"><span class="progress-dot"></span>Bootstrap (boot package)</a></li><li data-subkey="sec3sub5"><a href="/Quantile-Regression-in-R-2.html"><span class="progress-dot"></span>Quantile Regression</a></li><li data-subkey="sec3sub5"><a href="/Matrix-Operations-in-R.html"><span class="progress-dot"></span>Matrix Operations in R</a></li><li data-subkey="sec3sub5"><a href="/Solving-Linear-Systems-in-R.html"><span class="progress-dot"></span>Solving Linear Systems in R</a></li><li data-subkey="sec3sub5"><a href="/Eigenvalues-and-Eigenvectors-in-R.html"><span class="progress-dot"></span>Eigenvalues & Eigenvectors in R</a></li><li data-subkey="sec3sub5"><a href="/Singular-Value-Decomposition-in-R.html"><span class="progress-dot"></span>Singular Value Decomposition in R</a></li><li data-subkey="sec3sub5"><a href="/Projections-and-the-Hat-Matrix-in-R.html"><span class="progress-dot"></span>Projections & the Hat Matrix</a></li><li data-subkey="sec3sub5"><a href="/QR-Decomposition-in-R.html"><span class="progress-dot"></span>QR Decomposition in R</a></li><li data-subkey="sec3sub5"><a href="/Quadratic-Forms-in-R.html"><span class="progress-dot"></span>Quadratic Forms</a></li><li data-subkey="sec3sub5"><a href="/Matrix-Derivatives-and-the-Hessian-in-R.html"><span class="progress-dot"></span>Matrix Derivatives & Hessian</a></li><li data-subkey="sec3sub5"><a href="/Exponential-Family-Distributions-in-R.html"><span class="progress-dot"></span>Exponential Family Distributions</a></li><li data-subkey="sec3sub5"><a href="/Sufficient-Statistics-in-R.html"><span class="progress-dot"></span>Sufficient Statistics</a></li><li data-subkey="sec3sub5"><a href="/Complete-and-Ancillary-Statistics-in-R.html"><span class="progress-dot"></span>Complete & Ancillary Statistics</a></li><li data-subkey="sec3sub5"><a href="/UMVUE-in-R-2.html"><span class="progress-dot"></span>UMVUE (Rao-Blackwell & Lehmann-Scheffé)</a></li><li data-subkey="sec3sub5"><a href="/Cramer-Rao-Lower-Bound-in-R-2.html"><span class="progress-dot"></span>Cramér-Rao Lower Bound</a></li><li data-subkey="sec3sub5"><a href="/Asymptotic-Theory-in-R-2.html"><span class="progress-dot"></span>Asymptotic Theory</a></li><li data-subkey="sec3sub5"><a href="/Neyman-Pearson-Lemma-in-R-2.html"><span class="progress-dot"></span>Neyman-Pearson Lemma</a></li><li data-subkey="sec3sub5"><a href="/Likelihood-Ratio-Tests-and-Pivotal-Methods.html"><span class="progress-dot"></span>Likelihood Ratio & Pivotal Methods</a></li><li data-subkey="sec3sub5"><a href="/Decision-Theory-in-R.html"><span class="progress-dot"></span>Decision Theory</a></li><li data-subkey="sec3sub5"><a href="/Asymptotic-Relative-Efficiency-in-R.html"><span class="progress-dot"></span>Asymptotic Relative Efficiency</a></li><li data-subkey="sec3sub5"><a href="/Bayes-Theorem-in-R.html"><span class="progress-dot"></span>Bayes' Theorem</a></li><li data-subkey="sec3sub5"><a href="/Bayesian-Statistics-in-R.html"><span class="progress-dot"></span>Bayesian Statistics</a></li><li data-subkey="sec3sub5"><a href="/Conjugate-Priors-in-R.html"><span class="progress-dot"></span>Conjugate Priors</a></li><li data-subkey="sec3sub5"><a href="/Grid-Approximation-in-R.html"><span class="progress-dot"></span>Grid Approximation</a></li><li data-subkey="sec3sub5"><a href="/MCMC-in-R.html"><span class="progress-dot"></span>MCMC in R</a></li><li data-subkey="sec3sub5"><a href="/Gibbs-Sampling-in-R.html"><span class="progress-dot"></span>Gibbs Sampling</a></li><li data-subkey="sec3sub5"><a href="/Hamiltonian-Monte-Carlo-in-R.html"><span class="progress-dot"></span>Hamiltonian Monte Carlo</a></li><li data-subkey="sec3sub5"><a href="/Stan-in-R.html"><span class="progress-dot"></span>Stan</a></li><li data-subkey="sec3sub5"><a href="/brms-in-R.html"><span class="progress-dot"></span>brms</a></li><li data-subkey="sec3sub5"><a href="/Choosing-Priors-in-R.html"><span class="progress-dot"></span>Choosing Priors</a></li><li data-subkey="sec3sub5"><a href="/Prior-Predictive-Checks-in-R.html"><span class="progress-dot"></span>Prior Predictive Checks</a></li><li data-subkey="sec3sub5"><a href="/Compare-Bayesian-Models-in-R.html"><span class="progress-dot"></span>Compare Bayesian Models</a></li><li data-subkey="sec3sub5"><a href="/Posterior-Predictive-Checks-in-R.html"><span class="progress-dot"></span>Posterior Predictive Checks</a></li><li data-subkey="sec3sub5"><a href="/Bayesian-Linear-Regression-in-R.html"><span class="progress-dot"></span>Bayesian Linear Regression</a></li><li data-subkey="sec3sub5"><a href="/Bayesian-Logistic-Regression-in-R.html"><span class="progress-dot"></span>Bayesian Logistic Regression</a></li><li data-subkey="sec3sub5"><a href="/Bayesian-Hierarchical-Models-in-R.html"><span class="progress-dot"></span>Bayesian Hierarchical Models</a></li><li data-subkey="sec3sub5"><a href="/Multilevel-Models-in-R.html"><span class="progress-dot"></span>Multilevel Models</a></li><li data-subkey="sec3sub5"><a href="/Bayesian-ANOVA-in-R.html"><span class="progress-dot"></span>Bayesian ANOVA</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec3sub6" data-collapsed="false"><span class="subsec-chevron">▼</span> Machine Learning</li><li data-subkey="sec3sub6"><a href="/Machine-Learning-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Machine Learning Quiz</a></li></ul></li><li class="sidebar-section"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Time Series<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li data-subkey="sec4sub0"><a href="/Time-Series-Analysis-With-R.html"><span class="progress-dot"></span>Time Series Analysis</a></li><li data-subkey="sec4sub0"><a href="/Time-Series-Forecasting-With-R.html"><span class="progress-dot"></span>Time Series Forecasting</a></li><li data-subkey="sec4sub0"><a href="/Time-Series-Forecasting-With-R-part2.html"><span class="progress-dot"></span>More Time Series Forecasting</a></li><li data-subkey="sec4sub0"><a href="/Time-Series-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Time Series Quiz</a></li></ul></li><li class="sidebar-section"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Advanced R<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec5sub1" data-collapsed="false"><span class="subsec-chevron">▼</span> Functional Programming</li><li data-subkey="sec5sub1"><a href="/Functional-Programming-in-R.html"><span class="progress-dot"></span>Functional Programming</a></li><li data-subkey="sec5sub1"><a href="/R-Functional-Programming-Exercises-quiz.html"><span class="progress-dot"></span>Functional Programming Quiz</a></li><li data-subkey="sec5sub1"><a href="/purrr-map-Variants.html"><span class="progress-dot"></span>purrr map() Variants</a></li><li data-subkey="sec5sub1"><a href="/R-Anonymous-Functions.html"><span class="progress-dot"></span>R Anonymous Functions</a></li><li data-subkey="sec5sub1"><a href="/R-Function-Factories.html"><span class="progress-dot"></span>R Function Factories</a></li><li data-subkey="sec5sub1"><a href="/R-Function-Operators.html"><span class="progress-dot"></span>R Function Operators</a></li><li data-subkey="sec5sub1"><a href="/Reduce-Filter-Map-in-R.html"><span class="progress-dot"></span>Reduce, Filter, Map</a></li><li data-subkey="sec5sub1"><a href="/Memoization-in-R.html"><span class="progress-dot"></span>Memoization in R</a></li><li data-subkey="sec5sub1"><a href="/Writing-Composable-R-Code.html"><span class="progress-dot"></span>Composable R Code</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec5sub2" data-collapsed="false"><span class="subsec-chevron">▼</span> OOP in R</li><li data-subkey="sec5sub2"><a href="/OOP-in-R.html"><span class="progress-dot"></span>OOP in R: S3/S4/R6</a></li><li data-subkey="sec5sub2"><a href="/S3-Classes-in-R.html"><span class="progress-dot"></span>S3 Classes</a></li><li data-subkey="sec5sub2"><a href="/S3-Method-Dispatch-in-R.html"><span class="progress-dot"></span>S3 Method Dispatch</a></li><li data-subkey="sec5sub2"><a href="/S4-Classes-in-R.html"><span class="progress-dot"></span>S4 Classes</a></li><li data-subkey="sec5sub2"><a href="/S4-Methods-in-R.html"><span class="progress-dot"></span>S4 Methods & Dispatch</a></li><li data-subkey="sec5sub2"><a href="/R6-Classes-in-R.html"><span class="progress-dot"></span>R6 Classes</a></li><li data-subkey="sec5sub2"><a href="/R6-Advanced.html"><span class="progress-dot"></span>R6 Advanced</a></li><li data-subkey="sec5sub2"><a href="/Operator-Overloading-in-R.html"><span class="progress-dot"></span>Operator Overloading</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec5sub3" data-collapsed="false"><span class="subsec-chevron">▼</span> How R Works</li><li data-subkey="sec5sub3"><a href="/R-Names-and-Values.html"><span class="progress-dot"></span>R Names & Values</a></li><li data-subkey="sec5sub3"><a href="/R-Assignment-Deep-Dive.html"><span class="progress-dot"></span>R Assignment Deep Dive</a></li><li data-subkey="sec5sub3"><a href="/R-Memory-lobstr.html"><span class="progress-dot"></span>R Memory & lobstr</a></li><li data-subkey="sec5sub3"><a href="/R-Environments.html"><span class="progress-dot"></span>R Environments</a></li><li data-subkey="sec5sub3"><a href="/R-Lexical-Scoping.html"><span class="progress-dot"></span>Lexical Scoping</a></li><li data-subkey="sec5sub3"><a href="/R-Closures.html"><span class="progress-dot"></span>R Closures</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec5sub4" data-collapsed="false"><span class="subsec-chevron">▼</span> Debugging & Performance</li><li data-subkey="sec5sub4"><a href="/R-Conditions-System.html"><span class="progress-dot"></span>Conditions System</a></li><li data-subkey="sec5sub4"><a href="/R-Debugging.html"><span class="progress-dot"></span>Debugging R Code</a></li><li data-subkey="sec5sub4"><a href="/R-Common-Errors.html"><span class="progress-dot"></span>50 Common R Errors</a></li><li data-subkey="sec5sub4"><a href="/Parallel-Computing-With-R.html"><span class="progress-dot"></span>Parallel Computing</a></li><li data-subkey="sec5sub4"><a href="/Strategies-To-Improve-And-Speedup-R-Code.html"><span class="progress-dot"></span>Speedup R Code</a></li><li data-subkey="sec5sub4"><a href="/Shiny-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Shiny Quiz</a></li></ul></li><li class="sidebar-section"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Classic Tutorials<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li data-subkey="sec6sub0"><a href="/R-Tutorial.html"><span class="progress-dot"></span>R Tutorial (Classic)</a></li><li data-subkey="sec6sub0"><a href="/ggplot2-Tutorial-With-R.html"><span class="progress-dot"></span>ggplot2 Short Tutorial</a></li><li data-subkey="sec6sub0"><a href="/Complete-Ggplot2-Tutorial-Part1-With-R-Code.html"><span class="progress-dot"></span>ggplot2 Tutorial 1 - Intro</a></li><li data-subkey="sec6sub0"><a href="/Complete-Ggplot2-Tutorial-Part2-Customizing-Theme-With-R-Code.html"><span class="progress-dot"></span>ggplot2 Tutorial 2 - Theme</a></li><li data-subkey="sec6sub0"><a href="/Top50-Ggplot2-Visualizations-MasterList-R-Code.html"><span class="progress-dot"></span>ggplot2 Tutorial 3 - Masterlist</a></li><li data-subkey="sec6sub0"><a href="/Association-Mining-With-R.html"><span class="progress-dot"></span>Association Mining</a></li><li data-subkey="sec6sub0"><a href="/Multi-Dimensional-Scaling-With-R.html"><span class="progress-dot"></span>Multi Dimensional Scaling</a></li><li data-subkey="sec6sub0"><a href="/Optimization-With-R.html"><span class="progress-dot"></span>Optimization</a></li><li data-subkey="sec6sub0"><a href="/Information-Value-With-R.html"><span class="progress-dot"></span>InformationValue Package</a></li></ul></li><li class="sidebar-section"><div class="sidebar-section-header"><span class="sidebar-chevron">▸</span> Practice Exercises<span class="section-meta" data-section-meta></span></div><ul class="sidebar-section-items list-unstyled"><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec7sub1" data-collapsed="false"><span class="subsec-chevron">▼</span> Mastery Quizzes (Certificate)</li><li data-subkey="sec7sub1"><a href="/R-Beginner-Exercises-quiz.html"><span class="progress-dot"></span>R Fundamentals Quiz</a></li><li data-subkey="sec7sub1"><a href="/dplyr-Exercises-in-R-quiz.html"><span class="progress-dot"></span>dplyr Quiz</a></li><li data-subkey="sec7sub1"><a href="/ggplot2-Exercises-in-R-quiz.html"><span class="progress-dot"></span>ggplot2 Quiz</a></li><li data-subkey="sec7sub1"><a href="/Hypothesis-Testing-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Hypothesis Testing Quiz</a></li><li data-subkey="sec7sub1"><a href="/Linear-Regression-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Linear Regression Quiz</a></li><li data-subkey="sec7sub1"><a href="/Machine-Learning-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Machine Learning Quiz</a></li><li data-subkey="sec7sub1"><a href="/tidyr-Exercises-in-R-quiz.html"><span class="progress-dot"></span>tidyr Quiz</a></li><li data-subkey="sec7sub1"><a href="/Time-Series-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Time Series Quiz</a></li><li data-subkey="sec7sub1"><a href="/Shiny-Exercises-in-R-quiz.html"><span class="progress-dot"></span>Shiny Quiz</a></li><li data-subkey="sec7sub1"><a href="/R-Interview-Questions-quiz.html"><span class="progress-dot"></span>R Interview Readiness Quiz</a></li><li data-subkey="sec7sub1"><a href="/R-Functional-Programming-Exercises-quiz.html"><span class="progress-dot"></span>Functional Programming Quiz</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec7sub2" data-collapsed="false"><span class="subsec-chevron">▼</span> R Fundamentals</li><li data-subkey="sec7sub2"><a href="/R-Basics-Exercises.html"><span class="progress-dot"></span>R Basics (15 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Vectors-Exercises.html"><span class="progress-dot"></span>R Vectors (12 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Data-Frames-Exercises.html"><span class="progress-dot"></span>R Data Frames (15 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Lists-Exercises.html"><span class="progress-dot"></span>R Lists (10 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Control-Flow-Exercises.html"><span class="progress-dot"></span>R Control Flow (12 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Functions-Exercises.html"><span class="progress-dot"></span>R Functions (10 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-String-Exercises.html"><span class="progress-dot"></span>R Strings (10 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Date-Time-Exercises.html"><span class="progress-dot"></span>R Date & Time (10 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Apply-Exercises.html"><span class="progress-dot"></span>R apply Family (12 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Subsetting-Exercises.html"><span class="progress-dot"></span>R Subsetting (10 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-Functional-Programming-Exercises.html"><span class="progress-dot"></span>Functional Programming (10 problems)</a></li><li data-subkey="sec7sub2"><a href="/R-OOP-Exercises.html"><span class="progress-dot"></span>OOP in R (8 problems)</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec7sub3" data-collapsed="false"><span class="subsec-chevron">▼</span> Data Wrangling</li><li data-subkey="sec7sub3"><a href="/R-Data-Import-Exercises.html"><span class="progress-dot"></span>Data Import (10 problems)</a></li><li data-subkey="sec7sub3"><a href="/dplyr-Exercises.html"><span class="progress-dot"></span>dplyr (15 problems)</a></li><li data-subkey="sec7sub3"><a href="/dplyr-filter-select-Exercises.html"><span class="progress-dot"></span>dplyr filter() & select() (12 problems)</a></li><li data-subkey="sec7sub3"><a href="/dplyr-group-by-summarise-Exercises.html"><span class="progress-dot"></span>dplyr group_by() & summarise() (10 problems)</a></li><li data-subkey="sec7sub3"><a href="/dplyr-Join-Exercises.html"><span class="progress-dot"></span>dplyr Joins (10 problems)</a></li><li data-subkey="sec7sub3"><a href="/data-table-Exercises.html"><span class="progress-dot"></span>data.table (12 problems)</a></li><li data-subkey="sec7sub3"><a href="/purrr-Exercises.html"><span class="progress-dot"></span>purrr (10 problems)</a></li><li data-subkey="sec7sub3"><a href="/tidyr-Reshaping-Exercises.html"><span class="progress-dot"></span>tidyr Reshaping (10 problems)</a></li><li data-subkey="sec7sub3"><a href="/Missing-Data-in-R-Exercises.html"><span class="progress-dot"></span>Missing Data in R (10 problems)</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec7sub4" data-collapsed="false"><span class="subsec-chevron">▼</span> Visualization</li><li data-subkey="sec7sub4"><a href="/ggplot2-Exercises.html"><span class="progress-dot"></span>ggplot2 (15 problems)</a></li><li data-subkey="sec7sub4"><a href="/ggplot2-Geom-Exercises.html"><span class="progress-dot"></span>ggplot2 Geoms (12 problems)</a></li><li data-subkey="sec7sub4"><a href="/ggplot2-Aesthetics-Exercises.html"><span class="progress-dot"></span>ggplot2 Aesthetics (10 problems)</a></li><li data-subkey="sec7sub4"><a href="/ggplot2-Customization-Exercises.html"><span class="progress-dot"></span>ggplot2 Customization (10 problems)</a></li><li data-subkey="sec7sub4"><a href="/ggplot2-Facet-Exercises.html"><span class="progress-dot"></span>ggplot2 Facets (8 problems)</a></li><li data-subkey="sec7sub4"><a href="/R-Visualization-Project.html"><span class="progress-dot"></span>R Visualization Project (5 charts)</a></li><li class="sidebar-divider sidebar-subsection-toggle" data-subkey="sec7sub5" data-collapsed="false"><span class="subsec-chevron">▼</span> Statistics</li><li data-subkey="sec7sub5"><a href="/Probability-in-R-Exercises.html"><span class="progress-dot"></span>Probability in R Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-Probability-Distributions-Exercises.html"><span class="progress-dot"></span>R Probability Distributions (12 problems)</a></li><li data-subkey="sec7sub5"><a href="/Binomial-Distribution-Exercises-in-R.html"><span class="progress-dot"></span>Binomial Distribution Exercises</a></li><li data-subkey="sec7sub5"><a href="/Poisson-Distribution-Exercises-in-R.html"><span class="progress-dot"></span>Poisson Distribution Exercises</a></li><li data-subkey="sec7sub5"><a href="/Central-Limit-Theorem-Exercises-in-R.html"><span class="progress-dot"></span>Central Limit Theorem Exercises</a></li><li data-subkey="sec7sub5"><a href="/Hypothesis-Testing-Exercises-in-R.html"><span class="progress-dot"></span>Hypothesis Testing Exercises</a></li><li data-subkey="sec7sub5"><a href="/t-Test-Exercises-in-R.html"><span class="progress-dot"></span>t-Test Exercises (12 problems)</a></li><li data-subkey="sec7sub5"><a href="/Chi-Square-Test-Exercises-in-R.html"><span class="progress-dot"></span>Chi-Square Exercises (10 problems)</a></li><li data-subkey="sec7sub5"><a href="/Confidence-Interval-Exercises-in-R.html"><span class="progress-dot"></span>Confidence Interval (10 problems)</a></li><li data-subkey="sec7sub5"><a href="/Power-Analysis-Exercises-in-R.html"><span class="progress-dot"></span>Power Analysis Exercises (8 problems)</a></li><li data-subkey="sec7sub5"><a href="/Nonparametric-Tests-Exercises-in-R.html"><span class="progress-dot"></span>Nonparametric Exercises (10 problems)</a></li><li data-subkey="sec7sub5"><a href="/Multiple-Testing-Exercises-in-R.html"><span class="progress-dot"></span>Multiple Testing (8 problems)</a></li><li data-subkey="sec7sub5"><a href="/Multiple-Regression-Exercises-in-R.html"><span class="progress-dot"></span>Multiple Regression Exercises</a></li><li data-subkey="sec7sub5"><a href="/Logistic-Regression-Exercises-in-R.html"><span class="progress-dot"></span>Logistic Regression Exercises (10 problems)</a></li><li data-subkey="sec7sub5"><a href="/Regression-Diagnostics-Exercises-in-R.html"><span class="progress-dot"></span>Regression Diagnostics Exercises</a></li><li data-subkey="sec7sub5"><a href="/Ridge-and-Lasso-Exercises-in-R.html"><span class="progress-dot"></span>Ridge & Lasso Exercises</a></li><li data-subkey="sec7sub5"><a href="/GLM-Exercises-in-R.html"><span class="progress-dot"></span>GLM Exercises (10 problems)</a></li><li data-subkey="sec7sub5"><a href="/ANOVA-Exercises-in-R.html"><span class="progress-dot"></span>ANOVA Exercises (15 problems)</a></li><li data-subkey="sec7sub5"><a href="/Post-Hoc-Tests-Exercises-in-R.html"><span class="progress-dot"></span>Post-Hoc Tests Exercises (8 problems)</a></li><li data-subkey="sec7sub5"><a href="/Repeated-Measures-Exercises-in-R.html"><span class="progress-dot"></span>Repeated Measures (8 problems)</a></li><li data-subkey="sec7sub5"><a href="/Experimental-Design-Exercises-in-R.html"><span class="progress-dot"></span>Experimental Design Exercises (8 problems)</a></li><li data-subkey="sec7sub5"><a href="/AB-Testing-Exercises-in-R.html"><span class="progress-dot"></span>A/B Testing Exercises (8 problems)</a></li><li data-subkey="sec7sub5"><a href="/Linear-Regression-Exercises-in-R.html"><span class="progress-dot"></span>Linear Regression (15 problems)</a></li><li data-subkey="sec7sub5"><a href="/PCA-Exercises-in-R.html"><span class="progress-dot"></span>PCA Exercises (10 problems)</a></li><li data-subkey="sec7sub5"><a href="/Cluster-Analysis-Exercises-in-R.html"><span class="progress-dot"></span>Clustering Exercises (10 problems)</a></li><li data-subkey="sec7sub5"><a href="/SEM-Exercises-in-R.html"><span class="progress-dot"></span>SEM Exercises (8 problems)</a></li><li data-subkey="sec7sub5"><a href="/A-B-Testing-Exercises-in-R.html"><span class="progress-dot"></span>A/B Testing Exercises</a></li><li data-subkey="sec7sub5"><a href="/API-Calls-Exercises-in-R.html"><span class="progress-dot"></span>API Calls Exercises</a></li><li data-subkey="sec7sub5"><a href="/ARIMA-Exercises-in-R.html"><span class="progress-dot"></span>ARIMA Exercises</a></li><li data-subkey="sec7sub5"><a href="/Apply-Family-Exercises-in-R.html"><span class="progress-dot"></span>Apply Family Exercises</a></li><li data-subkey="sec7sub5"><a href="/Bayesian-Statistics-Exercises-in-R.html"><span class="progress-dot"></span>Bayesian Statistics Exercises</a></li><li data-subkey="sec7sub5"><a href="/Clustering-Exercises-in-R.html"><span class="progress-dot"></span>Clustering Exercises</a></li><li data-subkey="sec7sub5"><a href="/Correlation-Exercises-in-R.html"><span class="progress-dot"></span>Correlation Exercises</a></li><li data-subkey="sec7sub5"><a href="/Cross-Validation-Exercises-in-R.html"><span class="progress-dot"></span>Cross Validation Exercises</a></li><li data-subkey="sec7sub5"><a href="/Data-Cleaning-Exercises-in-R.html"><span class="progress-dot"></span>Data Cleaning Exercises</a></li><li data-subkey="sec7sub5"><a href="/Data-Visualization-Exercises-in-R.html"><span class="progress-dot"></span>Data Viz Exercises</a></li><li data-subkey="sec7sub5"><a href="/Data-Wrangling-Exercises-in-R.html"><span class="progress-dot"></span>Data Wrangling Exercises</a></li><li data-subkey="sec7sub5"><a href="/Decision-Tree-Exercises-in-R.html"><span class="progress-dot"></span>Decision Tree Exercises</a></li><li data-subkey="sec7sub5"><a href="/EDA-Exercises-in-R.html"><span class="progress-dot"></span>EDA Exercises</a></li><li data-subkey="sec7sub5"><a href="/GAM-Exercises-in-R.html"><span class="progress-dot"></span>GAM Exercises</a></li><li data-subkey="sec7sub5"><a href="/Machine-Learning-Exercises-in-R.html"><span class="progress-dot"></span>Machine Learning Exercises</a></li><li data-subkey="sec7sub5"><a href="/Mixed-Effects-Models-Exercises-in-R.html"><span class="progress-dot"></span>Mixed Effects Exercises</a></li><li data-subkey="sec7sub5"><a href="/Network-Analysis-Exercises-in-R.html"><span class="progress-dot"></span>Network Analysis Exercises</a></li><li data-subkey="sec7sub5"><a href="/Parallel-Computing-in-R-Exercises.html"><span class="progress-dot"></span>Parallel Computing Exercises</a></li><li data-subkey="sec7sub5"><a href="/Poisson-Regression-Exercises-in-R.html"><span class="progress-dot"></span>Poisson Regression</a></li><li data-subkey="sec7sub5"><a href="/Probability-Distributions-Exercises-in-R.html"><span class="progress-dot"></span>Probability Distributions</a></li><li data-subkey="sec7sub5"><a href="/R-Beginner-Exercises.html"><span class="progress-dot"></span>R Beginner Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-Debugging-Exercises.html"><span class="progress-dot"></span>R Debugging Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-Markdown-Exercises.html"><span class="progress-dot"></span>R Markdown Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-Package-Development-Exercises.html"><span class="progress-dot"></span>R Package Development</a></li><li data-subkey="sec7sub5"><a href="/R-Performance-Optimization-Exercises.html"><span class="progress-dot"></span>R Performance Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-for-Biostatistics-Exercises.html"><span class="progress-dot"></span>R for Biostatistics</a></li><li data-subkey="sec7sub5"><a href="/R-for-Data-Science-Exercises.html"><span class="progress-dot"></span>R for Data Science Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-for-Finance-Exercises.html"><span class="progress-dot"></span>R for Finance Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-for-Genomics-Exercises.html"><span class="progress-dot"></span>R for Genomics</a></li><li data-subkey="sec7sub5"><a href="/R-for-Healthcare-Exercises.html"><span class="progress-dot"></span>R for Healthcare Exercises</a></li><li data-subkey="sec7sub5"><a href="/R-for-Marketing-Analytics-Exercises.html"><span class="progress-dot"></span>R for Marketing Analytics</a></li><li data-subkey="sec7sub5"><a href="/R-for-Sports-Analytics-Exercises.html"><span class="progress-dot"></span>R for Sports Analytics</a></li><li data-subkey="sec7sub5"><a href="/Random-Forest-Exercises-in-R.html"><span class="progress-dot"></span>Random Forest Exercises</a></li><li data-subkey="sec7sub5"><a href="/Regex-Exercises-in-R.html"><span class="progress-dot"></span>Regex Exercises</a></li><li data-subkey="sec7sub5"><a href="/Sampling-Methods-Exercises-in-R.html"><span class="progress-dot"></span>Sampling Methods Exercises</a></li><li data-subkey="sec7sub5"><a href="/Shiny-Exercises-in-R.html"><span class="progress-dot"></span>Shiny Exercises</a></li><li data-subkey="sec7sub5"><a href="/Spatial-Analysis-Exercises-in-R.html"><span class="progress-dot"></span>Spatial Analysis Exercises</a></li><li data-subkey="sec7sub5"><a href="/Survey-Analysis-in-R-Exercises.html"><span class="progress-dot"></span>Survey Analysis Exercises</a></li><li data-subkey="sec7sub5"><a href="/Survival-Analysis-Exercises-in-R.html"><span class="progress-dot"></span>Survival Analysis Exercises</a></li><li data-subkey="sec7sub5"><a href="/Text-Mining-Exercises-in-R.html"><span class="progress-dot"></span>Text Mining Exercises</a></li><li data-subkey="sec7sub5"><a href="/Time-Series-Exercises-in-R.html"><span class="progress-dot"></span>Time Series Exercises</a></li><li data-subkey="sec7sub5"><a href="/Web-Scraping-Exercises-in-R.html"><span class="progress-dot"></span>Web Scraping Exercises</a></li><li data-subkey="sec7sub5"><a href="/XGBoost-Exercises-in-R.html"><span class="progress-dot"></span>XGBoost Exercises</a></li><li data-subkey="sec7sub5"><a href="/broom-Exercises-in-R.html"><span class="progress-dot"></span>broom Exercises</a></li><li data-subkey="sec7sub5"><a href="/caret-Exercises-in-R.html"><span class="progress-dot"></span>caret Exercises</a></li><li data-subkey="sec7sub5"><a href="/data.table-Exercises-in-R.html"><span class="progress-dot"></span>data.table Exercises</a></li><li data-subkey="sec7sub5"><a href="/dbplyr-SQL-Exercises-in-R.html"><span class="progress-dot"></span>dbplyr / SQL Exercises</a></li><li data-subkey="sec7sub5"><a href="/dplyr-Exercises-in-R.html"><span class="progress-dot"></span>dplyr Exercises</a></li><li data-subkey="sec7sub5"><a href="/dplyr-Group-By-Exercises-in-R.html"><span class="progress-dot"></span>dplyr group_by Exercises</a></li><li data-subkey="sec7sub5"><a href="/dplyr-Joins-Exercises-in-R.html"><span class="progress-dot"></span>dplyr Joins Exercises</a></li><li data-subkey="sec7sub5"><a href="/dplyr-Window-Functions-Exercises-in-R.html"><span class="progress-dot"></span>dplyr Window Functions Exercises</a></li><li data-subkey="sec7sub5"><a href="/forcats-Exercises-in-R.html"><span class="progress-dot"></span>forcats Exercises</a></li><li data-subkey="sec7sub5"><a href="/ggplot2-Bar-Chart-Exercises-in-R.html"><span class="progress-dot"></span>ggplot2 Bar Chart Exercises</a></li><li data-subkey="sec7sub5"><a href="/ggplot2-Color-Scales-Exercises-in-R.html"><span class="progress-dot"></span>ggplot2 Color Scales Exercises</a></li><li data-subkey="sec7sub5"><a href="/ggplot2-Exercises-in-R.html"><span class="progress-dot"></span>ggplot2 Exercises</a></li><li data-subkey="sec7sub5"><a href="/ggplot2-Facets-Exercises-in-R.html"><span class="progress-dot"></span>ggplot2 Facets Exercises</a></li><li data-subkey="sec7sub5"><a href="/ggplot2-Heatmap-Exercises-in-R.html"><span class="progress-dot"></span>ggplot2 Heatmap Exercises</a></li><li data-subkey="sec7sub5"><a href="/ggplot2-Themes-Exercises-in-R.html"><span class="progress-dot"></span>ggplot2 Themes Exercises</a></li><li data-subkey="sec7sub5"><a href="/gt-Tables-Exercises-in-R.html"><span class="progress-dot"></span>gt Tables Exercises</a></li><li data-subkey="sec7sub5"><a href="/leaflet-Exercises-in-R.html"><span class="progress-dot"></span>leaflet Exercises</a></li><li data-subkey="sec7sub5"><a href="/lubridate-Exercises-in-R.html"><span class="progress-dot"></span>lubridate Exercises</a></li><li data-subkey="sec7sub5"><a href="/plotly-Exercises-in-R.html"><span class="progress-dot"></span>plotly Exercises</a></li><li data-subkey="sec7sub5"><a href="/purrr-Exercises-in-R.html"><span class="progress-dot"></span>purrr Exercises</a></li><li data-subkey="sec7sub5"><a href="/readr-Exercises-in-R.html"><span class="progress-dot"></span>readr Exercises</a></li><li data-subkey="sec7sub5"><a href="/stringr-Exercises-in-R.html"><span class="progress-dot"></span>stringr Exercises</a></li><li data-subkey="sec7sub5"><a href="/testthat-Exercises-in-R.html"><span class="progress-dot"></span>testthat Exercises</a></li><li data-subkey="sec7sub5"><a href="/tidymodels-Exercises-in-R.html"><span class="progress-dot"></span>tidymodels Exercises</a></li><li data-subkey="sec7sub5"><a href="/tidyr-Exercises-in-R.html"><span class="progress-dot"></span>tidyr Exercises</a></li><li data-subkey="sec7sub5"><a href="/tidyr-Nest-Unnest-Exercises-in-R.html"><span class="progress-dot"></span>tidyr Nest/Unnest Exercises</a></li><li data-subkey="sec7sub5"><a href="/tidyr-Pivot-Exercises-in-R.html"><span class="progress-dot"></span>tidyr Pivot Exercises</a></li><li data-subkey="sec7sub5"><a href="/tidyverse-Exercises-in-R.html"><span class="progress-dot"></span>Tidyverse Exercises</a></li><li data-subkey="sec7sub5"><a href="/Date-Time-Manipulation-Exercises-in-R.html"><span class="progress-dot"></span>Date-Time Manipulation Exercises</a></li><li data-subkey="sec7sub5"><a href="/Loops-vs-Vectorization-Exercises-in-R.html"><span class="progress-dot"></span>Loops vs Vectorization Exercises</a></li></ul></li></ul><div class="sidebar-subscribe"><p>Stay up-to-date. <a href="https://docs.google.com/forms/d/1xkMYkLNFU9U39Dd8S_2JC0p8B5t6_Yq6zUQjanQQJpY/viewform">Subscribe!</a></p><p><a href="https://docs.google.com/forms/d/13GrkCFcNa-TOIllQghsz2SIEbc-YqY9eJX02B19l5Ow/viewform">Chat!</a></p></div></div><div class="sidebar-panel" data-panel="tools"><ul class="sidebar-tools-list list-unstyled"><li class="sidebar-divider"><span class="subsec-chevron">▼</span> Calculators</li><li><a href="/tools/ab-test-calculator.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2.5" y="3.5" width="4" height="9" rx="0.5"/><rect x="9.5" y="3.5" width="4" height="9" rx="0.5"/></svg></span><span class="tool-label">A/B Test Calculator</span></a></li><li><a href="/tools/t-test-calculator.html"><span class="tool-icon"></span><span class="tool-label">t-Test Calculator</span></a></li><li><a href="/tools/chi-square-calculator.html"><span class="tool-icon"></span><span class="tool-label">Chi-Square Test</span></a></li><li><a href="/tools/confidence-interval-calculator.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3.5 4v8M3.5 4H5M3.5 12H5"/><circle cx="8" cy="8" r="1.4" fill="currentColor" stroke="none"/><path d="M12.5 4v8M12.5 4H11M12.5 12H11"/></svg></span><span class="tool-label">Confidence Interval</span></a></li><li><a href="/tools/bootstrap-ci-calculator.html"><span class="tool-icon"></span><span class="tool-label">Bootstrap CI</span></a></li><li><a href="/tools/effect-size-converter.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 5.5h11M11 3l2.5 2.5L11 8"/><path d="M13.5 10.5h-11M5 8l-2.5 2.5L5 13"/></svg></span><span class="tool-label">Effect Size Converter</span></a></li><li><a href="/tools/power-analysis.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 2L4 9h3.5L7 14l5-7H8.5z"/></svg></span><span class="tool-label">Power Analysis</span></a></li><li><a href="/tools/survival-power-calculator.html"><span class="tool-icon"></span><span class="tool-label">Survival Power</span></a></li><li><a href="/tools/type-i-ii-error-visualizer.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 12c1.5 0 2-2 3.5-2S7 12 8 12s2-8 3.5-8S13 12 14.5 12"/><line x1="8" y1="2" x2="8" y2="14" stroke-dasharray="2 2"/></svg></span><span class="tool-label">Type I / II Error</span></a></li><li><a href="/tools/z-score-percentile.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 13c2 0 3-1 4-3s1.5-6 2-6 .5 6 2 6 2.5 0 4 0"/><path d="M2 13.5h12"/></svg></span><span class="tool-label">Z-Score & Percentile</span></a></li><li><a href="/tools/equivalence-noninferiority-calculator.html"><span class="tool-icon"></span><span class="tool-label">Equivalence / NI</span></a></li><li><a href="/tools/outlier-detection-calculator.html"><span class="tool-icon"></span><span class="tool-label">Outlier Detection</span></a></li><li><a href="/tools/roc-auc-calculator.html"><span class="tool-icon"></span><span class="tool-label">ROC / AUC</span></a></li><li class="sidebar-divider"><span class="subsec-chevron">▼</span> Bayesian</li><li><a href="/tools/bayes-theorem-calculator.html"><span class="tool-icon"></span><span class="tool-label">Bayes Theorem</span></a></li><li><a href="/tools/bayes-factor-calculator.html"><span class="tool-icon"></span><span class="tool-label">Bayes Factor</span></a></li><li class="sidebar-divider"><span class="subsec-chevron">▼</span> Interpreters</li><li><a href="/tools/lm-output-interpreter.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 13.5L14 3"/><circle cx="4" cy="11.5" r="1" fill="currentColor" stroke="none"/><circle cx="7.5" cy="9" r="1" fill="currentColor" stroke="none"/><circle cx="11" cy="6.5" r="1" fill="currentColor" stroke="none"/></svg></span><span class="tool-label">lm() Output</span></a></li><li><a href="/tools/glm-output-interpreter.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 13C5 13 5 3 8 3s3 10 6 10"/><path d="M2 13.5h12"/></svg></span><span class="tool-label">glm() Output</span></a></li><li><a href="/tools/anova-output-interpreter.html"><span class="tool-icon"></span><span class="tool-label">ANOVA Output</span></a></li><li><a href="/tools/vif-interpreter.html"><span class="tool-icon"></span><span class="tool-label">VIF / Multicollinearity</span></a></li><li><a href="/tools/confusion-matrix-interpreter.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2.5" y="2.5" width="4.5" height="4.5"/><rect x="9" y="2.5" width="4.5" height="4.5"/><rect x="2.5" y="9" width="4.5" height="4.5"/><rect x="9" y="9" width="4.5" height="4.5"/></svg></span><span class="tool-label">Confusion Matrix</span></a></li><li><a href="/tools/diagnostic-plot-interpreter.html"><span class="tool-icon"></span><span class="tool-label">Diagnostic Plots</span></a></li><li class="sidebar-divider"><span class="subsec-chevron">▼</span> Pickers</li><li><a href="/tools/normality-test-picker.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 13c2 0 3-1 4-3s1.5-6 2-6 .5 6 2 6 2.5 0 4 0"/><circle cx="13" cy="4" r="1.6" fill="currentColor" stroke="none"/></svg></span><span class="tool-label">Normality Test</span></a></li><li><a href="/tools/nonparametric-test-picker.html"><span class="tool-icon"></span><span class="tool-label">Non-Parametric Test</span></a></li><li><a href="/tools/multiple-testing-correction.html"><span class="tool-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 4l2 2 3-3M2.5 8l2 2 3-3M2.5 12l2 2 3-3"/><path d="M10.5 4h3M10.5 8h3M10.5 12h3"/></svg></span><span class="tool-label">Multiple Testing</span></a></li><li class="sidebar-divider"><span class="subsec-chevron">▼</span> Time series</li><li><a href="/tools/ts-stationarity-calculator.html"><span class="tool-icon"></span><span class="tool-label">TS Stationarity</span></a></li><li class="sidebar-divider"><span class="subsec-chevron">▼</span> Utilities</li><li><a href="/tools/dag-confounder-picker.html"><span class="tool-icon"></span><span class="tool-label">DAG Confounder Picker</span></a></li><li><a href="/tools/reprex-builder.html"><span class="tool-icon"></span><span class="tool-label">Reprex Builder</span></a></li></ul></div></div>
</div>
<main id="content" class="col-xs-12 col-sm-7">
<nav class="breadcrumb-nav" aria-label="Breadcrumb"><a href="/">Home</a> <span class="breadcrumb-sep">›</span> <span class="breadcrumb-current">Copulas in R: Model Multivariate Dependence Beyond Correlation</span></nav>
<!-- md2html:generated -->
<h1>Copulas in R: Model Multivariate Dependence Beyond Correlation</h1>
<p class="lead">A copula is a function that joins one-variable distributions into a multivariate one while preserving the dependence structure. In R, the <code>copula</code> package lets you model that dependence flexibly, capturing tails, asymmetries, and patterns that a single correlation number misses entirely.</p>
<div class="post-byline" style="color:#6b7280;font-size:14px;margin:2px 0 18px 0;line-height:1.5;">By <strong>Selva Prabhakaran</strong> · Published May 12, 2026 · Last updated May 12, 2026</div>
<div class="engagement-header" data-difficulty="Advanced" data-time="30" data-exercises="7" data-xp="105"></div>
<h2>What does a copula actually do?</h2>
<p>Correlation collapses the relationship between two variables to one number. That works when both variables are jointly Gaussian and falls apart everywhere else. A copula keeps each variable's own distribution (its marginal) separate from how the variables move together (the dependence), so you can stitch together a Gamma loss, a Beta utilisation, and a t-distributed return into one realistic joint model. Let's see this with a payoff example before any theory.</p>
<div class="webr-container" data-block-title="Mix a Gamma and a Beta with a Gaussian copula">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Mix a Gamma and a Beta with a Gaussian copula</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">library</span>(copula)</span>
<span class="cl"><span class="nf">set.seed</span>(<span class="m">2026</span>)</span>
<span class="cl"></span>
<span class="cl"><span class="c1"># Gaussian copula in 2D with rho = 0.7</span></span>
<span class="cl">norm_cop <span class="o"><-</span> <span class="nf">normalCopula</span>(<span class="m">0.7</span>, dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl"></span>
<span class="cl"><span class="c1"># Sample 1000 uniform pairs that share that dependence</span></span>
<span class="cl">U_sim <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">1000</span>, norm_cop)</span>
<span class="cl"></span>
<span class="cl"><span class="c1"># Push them through inverse CDFs of any marginals you like</span></span>
<span class="cl">X_sim <span class="o"><-</span> <span class="nf">cbind</span>(</span>
<span class="cl"> <span class="nf">qgamma</span>(U_sim[, <span class="m">1</span>], shape <span class="o">=</span> <span class="m">2</span>, rate <span class="o">=</span> <span class="m">1</span>),</span>
<span class="cl"> <span class="nf">qbeta </span>(U_sim[, <span class="m">2</span>], shape1 <span class="o">=</span> <span class="m">2</span>, shape2 <span class="o">=</span> <span class="m">5</span>)</span>
<span class="cl">)</span>
<span class="cl"><span class="nf">colnames</span>(X_sim) <span class="o"><-</span> <span class="nf">c</span>(<span class="s">"loss_gamma"</span>, <span class="s">"rate_beta"</span>)</span>
<span class="cl"></span>
<span class="cl"><span class="nf">head</span>(X_sim, <span class="m">4</span>)</span>
<span class="cl"><span class="c1">#> loss_gamma rate_beta</span></span>
<span class="cl"><span class="c1">#> [1,] 1.733 0.3611</span></span>
<span class="cl"><span class="c1">#> [2,] 3.145 0.6092</span></span>
<span class="cl"><span class="c1">#> [3,] 0.984 0.1428</span></span>
<span class="cl"><span class="c1">#> [4,] 2.792 0.4877</span></span>
<span class="cl"></span>
<span class="cl"><span class="nf">cor</span>(X_sim, method <span class="o">=</span> <span class="s">"kendall"</span>)</span>
<span class="cl"><span class="c1">#> loss_gamma rate_beta</span></span>
<span class="cl"><span class="c1">#> loss_gamma 1.0000 0.4986</span></span>
<span class="cl"><span class="c1">#> rate_beta 0.4986 1.0000</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p>The two columns have wildly different shapes (Gamma is right-skewed and unbounded, Beta sits between 0 and 1), but <a class="auto-link" href="Correlation-in-R.html" title="Correlation in R: Choose Between Pearson, Spearman, and Kendall, With Tests">Kendall's tau</a> lands near <code>0.5</code>, the value implied by <code>rho = 0.7</code> for a Gaussian copula. The marginals were chosen freely, the dependence was specified separately, and the copula glued them together.</p>
<p>That separation is the whole point. Sklar's theorem (1959) says any continuous joint distribution $H(x, y)$ can be written as</p>
<p>$$H(x, y) = C\bigl(F_X(x),\, F_Y(y)\bigr)$$</p>
<p>Where:</p>
<ul>
<li>$F_X, F_Y$ are the marginal <a class="auto-link" href="dplyr-cume_dist-in-R.html" title="dplyr cume_dist() in R: Empirical Cumulative Distribution">cumulative distribution</a> functions</li>
<li>$C$ is a copula, a joint distribution on $[0,1]^2$ with uniform marginals</li>
</ul>
<p>In words, every multivariate distribution splits into one piece per variable plus one piece for dependence, and you can swap each piece independently.</p>
<p><img src="screenshots/Copulas-in-R-sklar-decomposition.webp" alt="Sklar's theorem decomposition" class="img-responsive img-zoomable" loading="lazy" width="1756" height="986" /></p>
<p><em>Figure 1: Sklar's theorem: every joint distribution decomposes into marginals plus a copula, and the pieces recombine freely.</em></p>
<div class="callout callout-insight"><div class="callout-label">Key Insight</div><div class="callout-body"><strong>A copula is the dependence stripped of the marginals.</strong> Two datasets can share the same copula while looking nothing alike on a scatter plot, because their marginals were stretched differently. Modelling the copula directly means you study dependence without the units, scale, or shape of the variables getting in the way.</div></div>
<div class="callout callout-note"><div class="callout-label">Note</div><div class="callout-body"><strong>The copula package may take a few seconds to load on first use.</strong> It pulls in compiled routines for elliptical and Archimedean families. Subsequent blocks reuse the loaded package, so the wait is one-time per session.</div></div>
<section class="tryit-block">
<p><strong>Try it:</strong> Re-run the same simulation but flip the dependence to negative by setting <code>rho = -0.5</code>. Check that Kendall's tau in the resulting <code>X_sim</code> becomes negative.</p>
<div class="webr-container" data-block-title="Your turn: negative-dependence copula">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Your turn: negative-dependence copula</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">ex_cop <span class="o"><-</span> <span class="nf">normalCopula</span>(___, dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl">ex_U <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">1000</span>, ex_cop)</span>
<span class="cl">ex_X <span class="o"><-</span> <span class="nf">cbind</span>(<span class="nf">qgamma</span>(ex_U[, <span class="m">1</span>], <span class="m">2</span>, <span class="m">1</span>), <span class="nf">qbeta</span>(ex_U[, <span class="m">2</span>], <span class="m">2</span>, <span class="m">5</span>))</span>
<span class="cl"><span class="nf">cor</span>(ex_X, method <span class="o">=</span> <span class="s">"kendall"</span>)</span>
<span class="cl"><span class="c1">#> Expected: off-diagonal entries near -0.33</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<details>
<summary>Click to reveal solution</summary>
<div class="webr-container" data-block-title="Negative-dependence solution">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Negative-dependence solution</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">ex_cop <span class="o"><-</span> <span class="nf">normalCopula</span>(<span class="m">-0.5</span>, dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl">ex_U <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">1000</span>, ex_cop)</span>
<span class="cl">ex_X <span class="o"><-</span> <span class="nf">cbind</span>(<span class="nf">qgamma</span>(ex_U[, <span class="m">1</span>], <span class="m">2</span>, <span class="m">1</span>), <span class="nf">qbeta</span>(ex_U[, <span class="m">2</span>], <span class="m">2</span>, <span class="m">5</span>))</span>
<span class="cl"><span class="nf">cor</span>(ex_X, method <span class="o">=</span> <span class="s">"kendall"</span>)</span>
<span class="cl"><span class="c1">#> [,1] [,2]</span></span>
<span class="cl"><span class="c1">#> [1,] 1.0000 -0.3346</span></span>
<span class="cl"><span class="c1">#> [2,] -0.3346 1.0000</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p><strong>Explanation:</strong> Setting <code>rho = -0.5</code> in a Gaussian copula produces Kendall's tau near <code>-0.33</code>, since $\tau = (2/\pi) \arcsin(\rho)$. The marginals stay Gamma and Beta, only the dependence flips sign.</p>
</details>
</section>
<h2>Which copula family fits which dependence?</h2>
<p>Different copulas describe different <em>shapes</em> of dependence. The Gaussian copula has zero tail dependence, meaning extreme co-movements vanish at the corners. Real loss data, equity returns during a crash, or rainfall in storms tend to cluster in one or both tails. Picking the right family is half the job.</p>
<p>The two big families are <strong>elliptical</strong> (Gaussian, Student-t) and <strong>Archimedean</strong> (Clayton, Gumbel, Frank, Joe). Each Archimedean family has a distinctive tail signature.</p>
<p><img src="screenshots/Copulas-in-R-family-selection.webp" alt="Copula family decision tree" class="img-responsive img-zoomable" loading="lazy" width="1578" height="1026" /></p>
<p><em>Figure 2: Pick a copula family by the tail behaviour your data shows.</em></p>
<p>Let's simulate from four families calibrated to the same Kendall's tau and count how often both variables land in the upper tail (above the 95th percentile of uniforms) versus the lower tail.</p>
<div class="webr-container" data-block-title="Compare tail co-occurrence across families">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Compare tail co-occurrence across families</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">set.seed</span>(<span class="m">11</span>)</span>
<span class="cl">n <span class="o"><-</span> <span class="m">5000</span></span>
<span class="cl">target_tau <span class="o"><-</span> <span class="m">0.5</span></span>
<span class="cl"></span>
<span class="cl"><span class="c1"># Convert tau to each family's parameter via iTau()</span></span>
<span class="cl">clay_cop <span class="o"><-</span> <span class="nf">claytonCopula</span>(<span class="nf">iTau</span>(<span class="nf">claytonCopula</span>(), target_tau), dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl">gumb_cop <span class="o"><-</span> <span class="nf">gumbelCopula </span>(<span class="nf">iTau</span>(<span class="nf">gumbelCopula</span>(), target_tau), dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl">frank_cop <span class="o"><-</span> <span class="nf">frankCopula </span>(<span class="nf">iTau</span>(<span class="nf">frankCopula</span>(), target_tau), dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl">gauss_cop <span class="o"><-</span> <span class="nf">normalCopula </span>(<span class="nf">iTau</span>(<span class="nf">normalCopula</span>(), target_tau), dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl"></span>
<span class="cl">samples <span class="o"><-</span> <span class="nf">list</span>(</span>
<span class="cl"> Clayton <span class="o">=</span> <span class="nf">rCopula</span>(n, clay_cop),</span>
<span class="cl"> Gumbel <span class="o">=</span> <span class="nf">rCopula</span>(n, gumb_cop),</span>
<span class="cl"> Frank <span class="o">=</span> <span class="nf">rCopula</span>(n, frank_cop),</span>
<span class="cl"> Gaussian <span class="o">=</span> <span class="nf">rCopula</span>(n, gauss_cop)</span>
<span class="cl">)</span>
<span class="cl"></span>
<span class="cl">tail_share <span class="o"><-</span> <span class="kr">function</span>(u, lo <span class="o">=</span> <span class="m">0.05</span>, hi <span class="o">=</span> <span class="m">0.95</span>) {</span>
<span class="cl"> <span class="nf">c</span>(lower <span class="o">=</span> <span class="nf">mean</span>(u[, <span class="m">1</span>] <span class="o"><</span> lo <span class="o">&</span> u[, <span class="m">2</span>] <span class="o"><</span> lo),</span>
<span class="cl"> upper <span class="o">=</span> <span class="nf">mean</span>(u[, <span class="m">1</span>] <span class="o">></span> hi <span class="o">&</span> u[, <span class="m">2</span>] <span class="o">></span> hi))</span>
<span class="cl">}</span>
<span class="cl"></span>
<span class="cl"><span class="nf">round</span>(<span class="nf">sapply</span>(samples, tail_share), <span class="m">4</span>)</span>
<span class="cl"><span class="c1">#> Clayton Gumbel Frank Gaussian</span></span>
<span class="cl"><span class="c1">#> lower 0.0292 0.0084 0.0072 0.0094</span></span>
<span class="cl"><span class="c1">#> upper 0.0086 0.0298 0.0070 0.0092</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p>Read the row labelled <code>lower</code>: Clayton clusters in the lower-left corner about three times as often as the other three families. Read the <code>upper</code> row: Gumbel mirrors that behaviour in the upper-right corner. Frank and Gaussian split extremes symmetrically and roughly at the chance rate of <code>0.05 * 0.05 = 0.0025</code>, scaled up only by the moderate overall dependence. Same Kendall's tau, very different tail risk.</p>
<div class="callout callout-tip"><div class="callout-label">Tip</div><div class="callout-body"><strong>Use the t-copula when tails are heavy but symmetric.</strong> The Student-t copula adds a degrees-of-freedom parameter on top of Gaussian. Low df gives strong tail dependence in both corners at once. Build it with <code>tCopula(rho, df = 4, dim = 2)</code>.</div></div>
<div class="callout callout-warning"><div class="callout-label">Warning</div><div class="callout-body"><strong>Same correlation does not mean same risk.</strong> If you fit a Gaussian copula to data that really follows a Clayton, your model will systematically underestimate joint downside events. The 2008 mortgage crisis is the textbook case of this misspecification at scale.</div></div>
<section class="tryit-block">
<p><strong>Try it:</strong> Build a Clayton copula calibrated to Kendall's tau of <code>0.6</code>, draw 2000 samples, and report the share landing in the lower tail (both coordinates below <code>0.05</code>).</p>
<div class="webr-container" data-block-title="Your turn: count Clayton lower-tail extremes">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Your turn: count Clayton lower-tail extremes</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">set.seed</span>(<span class="m">7</span>)</span>
<span class="cl">ex_clay <span class="o"><-</span> <span class="nf">claytonCopula</span>(<span class="nf">iTau</span>(<span class="nf">claytonCopula</span>(), ___), dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl">ex_u <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">2000</span>, ex_clay)</span>
<span class="cl"><span class="nf">mean</span>(ex_u[, <span class="m">1</span>] <span class="o"><</span> <span class="m">0.05</span> <span class="o">&</span> ex_u[, <span class="m">2</span>] <span class="o"><</span> <span class="m">0.05</span>)</span>
<span class="cl"><span class="c1">#> Expected: a number around 0.04 to 0.05</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<details>
<summary>Click to reveal solution</summary>
<div class="webr-container" data-block-title="Clayton lower-tail solution">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Clayton lower-tail solution</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">set.seed</span>(<span class="m">7</span>)</span>
<span class="cl">ex_clay <span class="o"><-</span> <span class="nf">claytonCopula</span>(<span class="nf">iTau</span>(<span class="nf">claytonCopula</span>(), <span class="m">0.6</span>), dim <span class="o">=</span> <span class="m">2</span>)</span>
<span class="cl">ex_u <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">2000</span>, ex_clay)</span>
<span class="cl"><span class="nf">mean</span>(ex_u[, <span class="m">1</span>] <span class="o"><</span> <span class="m">0.05</span> <span class="o">&</span> ex_u[, <span class="m">2</span>] <span class="o"><</span> <span class="m">0.05</span>)</span>
<span class="cl"><span class="c1">#> [1] 0.0455</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p><strong>Explanation:</strong> Clayton's lower-tail dependence coefficient is $\lambda_L = 2^{-1/\theta}$. At $\tau = 0.6$ that gives $\theta = 3$ and $\lambda_L \approx 0.79$, far above the Gaussian baseline.</p>
</details>
</section>
<h2>How do you fit a copula to real data?</h2>
<p>Fitting is a two-stage process: first turn each column into pseudo-observations on $[0,1]$, then maximise the copula likelihood on those uniforms. The first stage uses <code>pobs()</code>, which ranks each column and divides by <code>n + 1</code>. That step removes the marginals from the picture so that whatever you fit afterwards is genuinely about dependence.</p>
<p>We will use <code>mtcars</code>. The variables <code>mpg</code> (fuel economy) and <code>wt</code> (weight) are well known to move together in a non-linear way, with very economical light cars cluster on one end and heavy gas-guzzlers on the other.</p>
<div class="webr-container" data-block-title="Fit a Gaussian copula to mtcars[, c('mpg','wt')]">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Fit a Gaussian copula to mtcars[, c('mpg','wt')]</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">u_mtcars <span class="o"><-</span> <span class="nf">pobs</span>(<span class="nf">as.matrix</span>(mtcars[, <span class="nf">c</span>(<span class="s">"mpg"</span>, <span class="s">"wt"</span>)]))</span>
<span class="cl"></span>
<span class="cl"><span class="nf">head</span>(u_mtcars, <span class="m">4</span>)</span>
<span class="cl"><span class="c1">#> mpg wt</span></span>
<span class="cl"><span class="c1">#> Mazda RX4 0.7273 0.4242</span></span>
<span class="cl"><span class="c1">#> Mazda RX4 Wag 0.7273 0.5152</span></span>
<span class="cl"><span class="c1">#> Datsun 710 0.8485 0.2424</span></span>
<span class="cl"><span class="c1">#> Hornet 4 Drive 0.6364 0.5758</span></span>
<span class="cl"></span>
<span class="cl">fit_gauss <span class="o"><-</span> <span class="nf">fitCopula</span>(<span class="nf">normalCopula</span>(dim <span class="o">=</span> <span class="m">2</span>), u_mtcars, method <span class="o">=</span> <span class="s">"ml"</span>)</span>
<span class="cl">fit_gauss</span>
<span class="cl"><span class="c1">#> Call: fitCopula(copula = normalCopula(dim = 2), data = u_mtcars, ... )</span></span>
<span class="cl"><span class="c1">#> Fit based on "maximum likelihood" and 32 2-dimensional observations.</span></span>
<span class="cl"><span class="c1">#> Copula: normalCopula</span></span>
<span class="cl"><span class="c1">#> rho.1</span></span>
<span class="cl"><span class="c1">#> -0.8651</span></span>
<span class="cl"><span class="c1">#> The maximized loglikelihood is 14.62</span></span>
<span class="cl"><span class="c1">#> Optimization converged</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p>The fitted Gaussian copula correlation parameter is about <code>-0.87</code>. It is negative because higher <code>mpg</code> corresponds to lower <code>wt</code>. The pseudo-observations show that ranks, not raw units, drive the fit, so the result is invariant to any monotonic transform of the inputs (you would get the same <code>rho</code> if you fit on <code>log(mpg)</code> and <code>wt^2</code>).</p>
<div class="callout callout-warning"><div class="callout-label">Warning</div><div class="callout-body"><strong>Never feed raw data to fitCopula().</strong> It expects pseudo-observations on $[0,1]$. If you skip <code>pobs()</code>, the optimiser silently fits a meaningless model. The function does not warn you because raw data on $\mathbb{R}$ technically has a CDF; the result is just nonsense.</div></div>
<p>You can pull the parameter, log-likelihood, and standard error out of the fitted object with the usual extractors.</p>
<div class="webr-container" data-block-title="Inspect the fitted copula object">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Inspect the fitted copula object</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">coef</span>(fit_gauss)</span>
<span class="cl"><span class="c1">#> rho.1</span></span>
<span class="cl"><span class="c1">#> -0.8651</span></span>
<span class="cl"></span>
<span class="cl"><span class="nf">logLik</span>(fit_gauss)</span>
<span class="cl"><span class="c1">#> 'log Lik.' 14.622 (df=1)</span></span>
<span class="cl"></span>
<span class="cl"><span class="nf">summary</span>(fit_gauss)<span class="o">$</span>coefficients</span>
<span class="cl"><span class="c1">#> Estimate Std. Error z value Pr(>|z|)</span></span>
<span class="cl"><span class="c1">#> rho.1 -0.8651 0.04069 -21.260 0.000e+00</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p>The standard error of <code>rho</code> is about <code>0.04</code>, so the parameter is far from zero, and the likelihood-ratio against independence (<code>rho = 0</code>) would crush any reasonable threshold. With only 32 observations, that strong of a fit is suspicious; we will sanity-check by comparing against alternative families next.</p>
<section class="tryit-block">
<p><strong>Try it:</strong> Fit a Clayton copula to the same <code>u_mtcars</code> pseudo-observations and report its parameter <code>theta</code>. Hint: <code>mtcars</code> shows lower <code>mpg</code> paired with higher <code>wt</code>, so you may want to flip one column (<code>1 - u_mtcars[, 2]</code>) before fitting Clayton, which only handles positive dependence.</p>
<div class="webr-container" data-block-title="Your turn: fit a Clayton copula to mtcars">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Your turn: fit a Clayton copula to mtcars</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">ex_u <span class="o"><-</span> <span class="nf">cbind</span>(u_mtcars[, <span class="m">1</span>], <span class="m">1</span> <span class="o">-</span> u_mtcars[, <span class="m">2</span>])</span>
<span class="cl">ex_fit <span class="o"><-</span> <span class="nf">fitCopula</span>(<span class="nf">claytonCopula</span>(dim <span class="o">=</span> <span class="m">2</span>), ___, method <span class="o">=</span> <span class="s">"ml"</span>)</span>
<span class="cl"><span class="nf">coef</span>(ex_fit)</span>
<span class="cl"><span class="c1">#> Expected: alpha around 2 to 4</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<details>
<summary>Click to reveal solution</summary>
<div class="webr-container" data-block-title="Clayton on flipped mtcars solution">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Clayton on flipped mtcars solution</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">ex_u <span class="o"><-</span> <span class="nf">cbind</span>(u_mtcars[, <span class="m">1</span>], <span class="m">1</span> <span class="o">-</span> u_mtcars[, <span class="m">2</span>])</span>
<span class="cl">ex_fit <span class="o"><-</span> <span class="nf">fitCopula</span>(<span class="nf">claytonCopula</span>(dim <span class="o">=</span> <span class="m">2</span>), ex_u, method <span class="o">=</span> <span class="s">"ml"</span>)</span>
<span class="cl"><span class="nf">coef</span>(ex_fit)</span>
<span class="cl"><span class="c1">#> alpha</span></span>
<span class="cl"><span class="c1">#> 2.844</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p><strong>Explanation:</strong> Clayton requires positive dependence on its arguments, so we flipped the <code>wt</code> column to mpg-vs-(1 minus wt-rank). The fitted theta of about <code>2.8</code> corresponds to Kendall's tau near <code>0.58</code>, broadly consistent with the strong negative association in the original variables.</p>
</details>
</section>
<h2>How do you choose between copula families?</h2>
<p>Once you can fit one family, fit several and compare. The fast tool is information criteria, AIC and BIC. Both penalise log-likelihood for the number of parameters, and the family with the lowest value wins. AIC weighs predictive accuracy, BIC penalises complexity more heavily.</p>
<p>We refit Gaussian, Clayton (on flipped data), Gumbel (also flipped), and Frank.</p>
<div class="webr-container" data-block-title="Compare four families by AIC">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Compare four families by AIC</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">u_flip <span class="o"><-</span> <span class="nf">cbind</span>(u_mtcars[, <span class="m">1</span>], <span class="m">1</span> <span class="o">-</span> u_mtcars[, <span class="m">2</span>])</span>
<span class="cl"></span>
<span class="cl">fit_gauss_f <span class="o"><-</span> <span class="nf">fitCopula</span>(<span class="nf">normalCopula </span>(dim <span class="o">=</span> <span class="m">2</span>), u_flip, method <span class="o">=</span> <span class="s">"ml"</span>)</span>
<span class="cl">fit_clay <span class="o"><-</span> <span class="nf">fitCopula</span>(<span class="nf">claytonCopula</span>(dim <span class="o">=</span> <span class="m">2</span>), u_flip, method <span class="o">=</span> <span class="s">"ml"</span>)</span>
<span class="cl">fit_gumb <span class="o"><-</span> <span class="nf">fitCopula</span>(<span class="nf">gumbelCopula </span>(dim <span class="o">=</span> <span class="m">2</span>), u_flip, method <span class="o">=</span> <span class="s">"ml"</span>)</span>
<span class="cl">fit_frank <span class="o"><-</span> <span class="nf">fitCopula</span>(<span class="nf">frankCopula </span>(dim <span class="o">=</span> <span class="m">2</span>), u_flip, method <span class="o">=</span> <span class="s">"ml"</span>)</span>
<span class="cl"></span>
<span class="cl">aic_table <span class="o"><-</span> <span class="nf">data.frame</span>(</span>
<span class="cl"> family <span class="o">=</span> <span class="nf">c</span>(<span class="s">"Gaussian"</span>, <span class="s">"Clayton"</span>, <span class="s">"Gumbel"</span>, <span class="s">"Frank"</span>),</span>
<span class="cl"> logLik <span class="o">=</span> <span class="nf">c</span>(<span class="nf">logLik</span>(fit_gauss_f), <span class="nf">logLik</span>(fit_clay),</span>
<span class="cl"> <span class="nf">logLik</span>(fit_gumb), <span class="nf">logLik</span>(fit_frank)),</span>
<span class="cl"> AIC <span class="o">=</span> <span class="nf">c</span>(<span class="nf">AIC</span>(fit_gauss_f), <span class="nf">AIC</span>(fit_clay),</span>
<span class="cl"> <span class="nf">AIC</span>(fit_gumb), <span class="nf">AIC</span>(fit_frank))</span>
<span class="cl">)</span>
<span class="cl">aic_table[<span class="nf">order</span>(aic_table<span class="o">$</span>AIC), ]</span>
<span class="cl"><span class="c1">#> family logLik AIC</span></span>
<span class="cl"><span class="c1">#> 1 Gaussian 14.622 -27.244</span></span>
<span class="cl"><span class="c1">#> 3 Gumbel 13.480 -24.960</span></span>
<span class="cl"><span class="c1">#> 2 Clayton 11.390 -20.781</span></span>
<span class="cl"><span class="c1">#> 4 Frank 12.107 -22.213</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p>Gaussian wins on this dataset, with Gumbel a close second. Clayton trails, which fits the story: <code>mpg</code> and <code>wt</code> have a strong, fairly symmetric negative association, not a one-sided tail <a class="auto-link" href="Clustering-with-R.html" title="Clustering with R">clustering</a>. Were the data centred on a few extreme heavy-and-thirsty trucks, Gumbel-on-flipped-data would likely overtake.</p>
<div class="callout callout-note"><div class="callout-label">Note</div><div class="callout-body"><strong>AIC differences smaller than 2 are not decisive.</strong> The rule of thumb in <a class="auto-link" href="Model-Selection-in-R.html" title="Model Selection in R">model selection</a> is that families separated by less than two AIC points are statistically indistinguishable on the data at hand. Above ten points you can speak with confidence. Use a goodness-of-fit test to back up borderline picks.</div></div>
<p>A formal test is <code>gofCopula()</code>, which compares the empirical copula to the parametric one via a Cramer-von Mises statistic and a parametric bootstrap. On a slow machine or in the browser, keep the bootstrap small for demonstrations.</p>
<div class="webr-container" data-block-title="Goodness-of-fit on the winning Gaussian fit">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Goodness-of-fit on the winning Gaussian fit</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">set.seed</span>(<span class="m">99</span>)</span>
<span class="cl">gof_gauss <span class="o"><-</span> <span class="nf">gofCopula</span>(<span class="nf">normalCopula</span>(dim <span class="o">=</span> <span class="m">2</span>), u_mtcars,</span>
<span class="cl"> N <span class="o">=</span> <span class="m">200</span>, method <span class="o">=</span> <span class="s">"Sn"</span>)</span>
<span class="cl">gof_gauss</span>
<span class="cl"><span class="c1">#> Parametric bootstrap-based goodness-of-fit test</span></span>
<span class="cl"><span class="c1">#> data: x</span></span>
<span class="cl"><span class="c1">#> statistic = 0.0287, parameter = -0.866, p-value = 0.4129</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p>A <a class="auto-link" href="Statistical-Tests-in-R.html" title="Statistical Tests in R">p-value</a> of <code>0.41</code> means the data does not contradict the Gaussian copula, so we keep it. A p-value below <code>0.05</code> would push us toward another family or a richer model such as the t-copula. With only 32 observations the test is underpowered, but it is enough to validate the AIC ranking.</p>
<section class="tryit-block">
<p><strong>Try it:</strong> Compute BIC for the four fitted copulas above and pick the family BIC favours.</p>
<div class="webr-container" data-block-title="Your turn: compare by BIC">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Your turn: compare by BIC</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">ex_bic <span class="o"><-</span> <span class="nf">c</span>(<span class="nf">BIC</span>(___), <span class="nf">BIC</span>(___), <span class="nf">BIC</span>(___), <span class="nf">BIC</span>(___))</span>
<span class="cl"><span class="nf">names</span>(ex_bic) <span class="o"><-</span> <span class="nf">c</span>(<span class="s">"Gaussian"</span>, <span class="s">"Clayton"</span>, <span class="s">"Gumbel"</span>, <span class="s">"Frank"</span>)</span>
<span class="cl"><span class="nf">sort</span>(ex_bic)</span>
<span class="cl"><span class="c1">#> Expected: smallest BIC value first</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<details>
<summary>Click to reveal solution</summary>
<div class="webr-container" data-block-title="BIC comparison solution">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">BIC comparison solution</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl">ex_bic <span class="o"><-</span> <span class="nf">c</span>(<span class="nf">BIC</span>(fit_gauss_f), <span class="nf">BIC</span>(fit_clay),</span>
<span class="cl"> <span class="nf">BIC</span>(fit_gumb), <span class="nf">BIC</span>(fit_frank))</span>
<span class="cl"><span class="nf">names</span>(ex_bic) <span class="o"><-</span> <span class="nf">c</span>(<span class="s">"Gaussian"</span>, <span class="s">"Clayton"</span>, <span class="s">"Gumbel"</span>, <span class="s">"Frank"</span>)</span>
<span class="cl"><span class="nf">sort</span>(ex_bic)</span>
<span class="cl"><span class="c1">#> Gaussian Gumbel Frank Clayton</span></span>
<span class="cl"><span class="c1">#> -25.78 -23.49 -20.75 -19.32</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p><strong>Explanation:</strong> BIC and AIC agree on the ranking here. The difference is the penalty: BIC uses $\ln(n)$ per parameter (about <code>3.5</code> for <code>n = 32</code>), AIC uses <code>2</code>. With one parameter per family the penalties shift everyone by the same amount, so the ordering is identical.</p>
</details>
</section>
<h2>How do you simulate from a fitted copula and back to original units?</h2>
<p>Once you trust a fitted copula, simulation is a one-liner: <code>rCopula(n, fitted@copula)</code> returns uniforms with the right dependence. To get scenarios on the original scale of the data, you push the uniforms through inverse marginals. The simplest choice is the <a class="auto-link" href="Order-Statistics-in-R.html" title="Order Statistics in R: Min, Max, Sample Quantiles — Theory & Simulation">empirical quantile</a>, which makes the simulated values share the exact distribution of your sample.</p>
<div class="webr-container" data-block-title="Simulate 500 mpg/wt scenarios from the fitted copula">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Simulate 500 mpg/wt scenarios from the fitted copula</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">set.seed</span>(<span class="m">2026</span>)</span>
<span class="cl">u_new <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">500</span>, fit_gauss<span class="o">@</span>copula)</span>
<span class="cl"></span>
<span class="cl"><span class="c1"># Empirical quantile transform back to mpg and wt scale</span></span>
<span class="cl">mpg_new <span class="o"><-</span> <span class="nf">quantile</span>(mtcars<span class="o">$</span>mpg, probs <span class="o">=</span> u_new[, <span class="m">1</span>], type <span class="o">=</span> <span class="m">7</span>)</span>
<span class="cl">wt_new <span class="o"><-</span> <span class="nf">quantile</span>(mtcars<span class="o">$</span>wt, probs <span class="o">=</span> u_new[, <span class="m">2</span>], type <span class="o">=</span> <span class="m">7</span>)</span>
<span class="cl"></span>
<span class="cl">simdf <span class="o"><-</span> <span class="nf">data.frame</span>(mpg <span class="o">=</span> mpg_new, wt <span class="o">=</span> wt_new)</span>
<span class="cl"><span class="nf">head</span>(simdf, <span class="m">4</span>)</span>
<span class="cl"><span class="c1">#> mpg wt</span></span>
<span class="cl"><span class="c1">#> 1 18.74 3.215</span></span>
<span class="cl"><span class="c1">#> 2 14.42 4.087</span></span>
<span class="cl"><span class="c1">#> 3 25.91 2.310</span></span>
<span class="cl"><span class="c1">#> 4 22.18 2.873</span></span>
<span class="cl"></span>
<span class="cl"><span class="nf">cor</span>(simdf, method <span class="o">=</span> <span class="s">"kendall"</span>)</span>
<span class="cl"><span class="c1">#> mpg wt</span></span>
<span class="cl"><span class="c1">#> mpg 1.0000 -0.654</span></span>
<span class="cl"><span class="c1">#> wt -0.6540 1.0000</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<p>The simulated <code>mpg</code> values land in the same range as <code>mtcars$mpg</code>, the simulated <code>wt</code> values likewise, and Kendall's tau between the two stays close to the empirical value. You now have a generator that respects both each variable's distribution and the joint structure between them, suitable for stress tests, Monte Carlo pricing, or any scenario where you need realistic correlated draws.</p>
<div class="callout callout-insight"><div class="callout-label">Key Insight</div><div class="callout-body"><strong>Copulas turn dependence into a swappable component.</strong> Want to keep the same dependence but change the marginals to something stress-test-worthy, such as fatter-tailed mpg or right-shifted weight? Replace <code>quantile(mtcars$mpg, ...)</code> with <code>qnorm(u_new[, 1], mean = 18, sd = 5)</code> or any other inverse CDF. The copula handles the joint behaviour, you handle the per-variable shape.</div></div>
<section class="tryit-block">
<p><strong>Try it:</strong> Simulate 500 observations from the fitted Clayton copula on flipped mtcars data (<code>fit_clay</code> from earlier), then transform back to mpg and wt using empirical quantiles. Remember to flip the wt column back.</p>
<div class="webr-container" data-block-title="Your turn: simulate from the fitted Clayton">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Your turn: simulate from the fitted Clayton</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">set.seed</span>(<span class="m">13</span>)</span>
<span class="cl">ex_u_new <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">500</span>, fit_clay<span class="o">@</span>copula)</span>
<span class="cl">ex_mpg <span class="o"><-</span> <span class="nf">quantile</span>(mtcars<span class="o">$</span>mpg, probs <span class="o">=</span> ex_u_new[, <span class="m">1</span>], type <span class="o">=</span> <span class="m">7</span>)</span>
<span class="cl">ex_wt <span class="o"><-</span> <span class="nf">quantile</span>(mtcars<span class="o">$</span>wt, probs <span class="o">=</span> <span class="m">1</span> <span class="o">-</span> ___, type <span class="o">=</span> <span class="m">7</span>)</span>
<span class="cl"><span class="nf">cor</span>(<span class="nf">cbind</span>(ex_mpg, ex_wt), method <span class="o">=</span> <span class="s">"kendall"</span>)</span>
<span class="cl"><span class="c1">#> Expected: tau near -0.4 to -0.6</span></span></div>
<div class="webr-buttons">
<button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run</button>
<button class="btn btn-sm btn-default webr-reset-btn" onclick="resetWebR(this)">↺ Reset</button>
</div>
<pre class="webr-output"></pre>
</div>
<div class="webr-plot-output"></div>
</div>
<details>
<summary>Click to reveal solution</summary>
<div class="webr-container" data-block-title="Clayton simulation solution">
<div class="webr-code-block">
<div class="webr-header"><div class="webr-header-left"><span class="webr-header-badge">R</span><span class="webr-header-label">Clayton simulation solution</span></div><div class="webr-header-right"><button type="button" class="webr-copy-btn" aria-label="Copy code" title="Copy code"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button><button class="btn btn-sm btn-primary webr-run-btn" onclick="runWebR(this)">▶ Run <span class="webr-run-shortcut">Ctrl+Enter</span></button></div></div>
<div class="webr-editor" data-language="r"><span class="cl"><span class="nf">set.seed</span>(<span class="m">13</span>)</span>
<span class="cl">ex_u_new <span class="o"><-</span> <span class="nf">rCopula</span>(<span class="m">500</span>, fit_clay<span class="o">@</span>copula)</span>
<span class="cl">ex_mpg <span class="o"><-</span> <span class="nf">quantile</span>(mtcars<span class="o">$</span>mpg, probs <span class="o">=</span> ex_u_new[, <span class="m">1</span>], type <span class="o">=</span> <span class="m">7</span>)</span>
<span class="cl">ex_wt <span class="o"><-</span> <span class="nf">quantile</span>(mtcars<span class="o">$</span>wt, probs <span class="o">=</span> <span class="m">1</span> <span class="o">-</span> ex_u_new[, <span class="m">2</span>], type <span class="o">=</span> <span class="m">7</span>)</span>
<span class="cl"><span class="nf">cor</span>(<span class="nf">cbind</span>(ex_mpg, ex_wt), method <span class="o">=</span> <span class="s">"kendall"</span>)</span>
<span class="cl"><span class="c1">#> ex_mpg ex_wt</span></span>