Sample dataset: Back pain clinical trial
We'll load and examine a sample dataset. This dataset is from:
Ashar et al. 2022, JAMA Psychiatry
This study is a randomized clinical trial (RCT) of patients with chronic back pain (>= 4/10 pain for at least 3 months, average duration ~10 years). The trial compares Pain Reprocessing Therapy, Placebo (a single injection into the skin of the back), and Usual Care treatments, with pre-treatment and post-treatment (1 month after treatment initiation), and follow-up to 1 year.
Prep and Examine the dataset
Dependencies and setup
Do you have the relevant files on your Matlab path?
which Ashar2022_outcomes_demographics.csv
/Users/f003vz1/Dropbox (Dartmouth College)/COURSES/Courses_Dartmouth/2023_Fall_Computational_Foundations/Datasets/Ashar_2022_PRT_backpain/Ashar2022_outcomes_demographics.csv
If you get an error, you don't!
You also need the Statistics and Machine Learning Toolbox in Matlab. Try this to check:
if isempty(ver('stats')), warning('You do not have the statistics toolbox on your Matlab path. You may/will get errors'); end
Load the dataset
We'll read the dataset from a Comma Separated Value (csv) file into a table object. Table is a Matlab class that is very convenient, as it:
(1) stores metadata like table names and descriptions, and
(2) has associated methods for manipulating the dataset (e.g. selecting cases, etc.)
In addition, some statistics functions (like fitlme, for mixed effect models) can take table objects directly, allowing you to reference variables by name
backpain_all = readtable('Ashar2022_outcomes_demographics.csv');
backpain_all % print (some of) the table to screen
backpain_all = 341×35 table
| id | time | group | pain_avg | bpi_intensity | bpi_interference | odi | promis_dep | promis_anger | promis_anxiety | promis_sleep | panas_pa | panas_na | pcs | tsk11 | sopa_emo | pgic | tx_satisfaction | alcohol | opioid | cannabis | education | ethnicity | hispanic | employment_status | exercise | handedness | sses | married_or_living_as_marri | age | 31 | 32 | 33 | 34 | 35 |
---|
1 | 12 | 1 | 3 | 2 | 2.5000 | 1 | 12 | 20 | 13 | 24 | 17 | 11 | 14 | 13 | 17 | 8 | NaN | NaN | 0 | 0 | 2 | 2 | 4 | 0 | 1 | 3 | 1 | 4 | 0 | 21 | 115 | 1 | NaN | 3 | 1 |
---|
2 | 12 | 2 | 3 | 3 | 2.7500 | 2.1429 | 12 | 22 | 18 | 28 | 25 | 10 | 16 | 11 | 22 | 8 | 1 | 52 | 0 | 0 | 0 | 2 | 4 | 0 | 1 | 3 | 1 | 4 | 0 | 21 | 115 | 1 | NaN | 3 | 1 |
---|
3 | 14 | 1 | 3 | 2 | 2.5000 | 1.1429 | 26 | 8 | 5 | 9 | 11 | 20 | 5 | 11 | 15 | 4 | NaN | NaN | 23 | 0 | 3.5000 | 3 | 4 | 0 | 3 | 4 | 1 | 9 | 0 | 66 | 120 | 2 | NaN | 35 | 1 |
---|
4 | 14 | 2 | 3 | 3 | 2 | 1.2857 | 20 | 10 | 5 | 12 | 11 | 20 | 9 | 9 | 22 | 6 | 1 | 30.5000 | 21 | 0 | 3.5000 | 3 | 4 | 0 | 3 | 4 | 1 | 9 | 0 | 66 | 120 | 2 | NaN | 35 | 1 |
---|
5 | 15 | 1 | 3 | 2 | 2.2500 | 1 | 10 | 10 | 9 | 8 | 19 | 11 | 7 | 2 | 21 | 6 | NaN | NaN | 15 | 0 | 0 | 2 | 5 | 0 | 1 | 3 | 1 | 6 | 1 | 41 | 185 | 1 | NaN | 10 | 1 |
---|
6 | 15 | 2 | 3 | 3 | 2.7500 | 1.8571 | 12 | 9 | 7 | 8 | 22 | 13 | 7 | 1 | 19 | 4 | 1 | 50.5000 | 29 | 0 | 0 | 2 | 5 | 0 | 1 | 3 | 1 | 6 | 1 | 41 | 185 | 1 | NaN | 10 | 1 |
---|
7 | 18 | 1 | 2 | 5 | 4.5000 | 3.7143 | 18 | 9 | 13 | 9 | 28 | 15 | 8 | 4 | 27 | 8 | NaN | NaN | 0 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 1 | 5 | 1 | 36 | 200 | 1 | NaN | 5 | 1 |
---|
8 | 18 | 2 | 2 | 2 | 2.2500 | 1.5714 | 16 | 11 | 8 | 11 | 28 | 10 | 7 | 6 | 28 | 9 | 5 | 50 | 2 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 1 | 5 | 1 | 36 | 200 | 1 | NaN | 5 | 1 |
---|
9 | 23 | 1 | 2 | 3 | 2.5000 | 1.5714 | 10 | 17 | 9 | 17 | 30 | 19 | 10 | 3 | 20 | 8 | NaN | NaN | 29 | 0 | 0.0150 | 3 | 2 | 0 | 1 | 5 | 1 | 6 | 0 | 25 | 105 | 2 | 2 | 1.5000 | 1 |
---|
10 | 23 | 2 | 2 | 2 | 2.2500 | 1.4286 | 12 | 14 | 10 | 17 | 18 | 17 | 7 | 3 | 19 | 8 | 1 | 17.5000 | 13.5000 | 0 | 0.0250 | 3 | 2 | 0 | 1 | 5 | 1 | 6 | 0 | 25 | 105 | 2 | 2 | 1.5000 | 1 |
---|
11 | 24 | 1 | 1 | 4 | 4.5000 | 3.1429 | 18 | 12 | 16 | 15 | 21 | 23 | 10 | 15 | 28 | 8 | NaN | NaN | 11 | 0 | 10 | 3 | 4 | 0 | 1 | 4 | 1 | 3 | 0 | 28 | 173 | 1 | 2 | 3 | 1 |
---|
12 | 24 | 2 | 1 | 1 | 0.5000 | 0.8571 | 2 | 11 | 8 | 16 | 15 | 20 | 15 | 12 | 21 | 9 | 6 | 81.5000 | 4 | 0 | 17.5000 | 3 | 4 | 0 | 1 | 4 | 1 | 3 | 0 | 28 | 173 | 1 | 2 | 3 | 1 |
---|
13 | 29 | 1 | 1 | 3 | 3.7500 | 2.2857 | 18 | 12 | 10 | 9 | 20 | 19 | 8 | 5 | 22 | 8 | NaN | NaN | 0 | 0 | 0 | 3 | 4 | 0 | 2 | 5 | 1 | 7 | 0 | 23 | 130 | 2 | NaN | 3 | 1 |
---|
14 | 29 | 2 | 1 | 0 | 0.2500 | 0.4286 | 4 | 10 | 7 | 11 | 16 | 18 | 9 | 3 | 12 | 9 | 6 | 100 | 2 | 0 | 0 | 3 | 4 | 0 | 2 | 5 | 1 | 7 | 0 | 23 | 130 | 2 | NaN | 3 | 1 |
---|
15 | 32 | 1 | 1 | 6 | 5.7500 | 4.7143 | 18 | 10 | 12 | 11 | 10 | 18 | 8 | 5 | 27 | 8 | NaN | NaN | 9 | 0 | 143 | 2 | 4 | 0 | 1 | 4 | 3 | 7 | 1 | 28 | 185 | 1 | NaN | 4 | 1 |
---|
16 | 32 | 2 | 1 | 0 | 0.2500 | 0.1429 | 4 | 8 | 7 | 9 | 9 | 18 | 7 | 0 | 13 | 8 | 6 | 93 | 11 | 0 | 160 | 2 | 4 | 0 | 1 | 4 | 3 | 7 | 1 | 28 | 185 | 1 | NaN | 4 | 1 |
---|
17 | 38 | 1 | 1 | 6 | 5.5000 | 1 | 26 | 16 | 14 | 17 | 16 | 16 | 10 | 18 | 19 | 9 | NaN | NaN | 35 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 8 | 1 | 57 | 132 | 2 | NaN | 15 | 1 |
---|
18 | 38 | 2 | 1 | 1 | 1.7500 | 0 | 12 | 10 | 7 | 12 | 21 | 21 | 7 | 0 | 14 | 10 | 7 | 99.5000 | 22.5000 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 8 | 1 | 57 | 132 | 2 | NaN | 15 | 1 |
---|
19 | 51 | 1 | 2 | 4 | 4 | 1.4286 | 16 | 8 | 5 | 8 | 11 | 19 | 5 | 6 | 13 | 7 | NaN | NaN | 1 | 0 | 0 | 3 | 2 | 0 | 3 | 2 | 1 | 3 | 0 | 25 | 175 | 1 | 2 | 1.2500 | 1 |
---|
20 | 51 | 2 | 2 | 5 | 3.7500 | 0.7143 | 14 | 13 | 6 | 9 | 15 | 7 | 8 | 0 | 13 | 6 | 5 | 80 | 4 | 0 | 0 | 3 | 2 | 0 | 3 | 2 | 1 | 3 | 0 | 25 | 175 | 1 | 2 | 1.2500 | 1 |
---|
21 | 61 | 1 | 2 | 5 | 4.5000 | 3.7143 | 14 | 11 | 12 | 12 | 23 | 9 | 8 | 16 | 24 | 7 | NaN | NaN | 3 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 2 | 6 | 0 | 24 | 154 | 2 | 2 | 5 | 1 |
---|
22 | 61 | 2 | 2 | 1 | 1.2500 | 1.1429 | 16 | 10 | 8 | 11 | 23 | 8 | 8 | 12 | 24 | 5 | 6 | 91.5000 | 20 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 2 | 6 | 0 | 24 | 154 | 2 | 2 | 5 | 1 |
---|
23 | 67 | 1 | 1 | 6 | 5.2500 | 2 | 16 | 8 | 8 | 9 | 16 | 18 | 5 | 4 | 13 | 8 | NaN | NaN | 14 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 1 | 7 | 0 | 29 | 120 | 2 | 2 | 5 | 1 |
---|
24 | 69 | 1 | 2 | 1 | 1.2500 | 1.4286 | 8 | 8 | 10 | 8 | 27 | 19 | 5 | 0 | 11 | 4 | NaN | NaN | 0 | 0 | 0 | 2 | 4 | 1 | 1 | 4 | 1 | 4 | 1 | 39 | 175 | 1 | NaN | 15 | 1 |
---|
25 | 69 | 2 | 2 | 0 | 0.5000 | 0.1429 | 2 | 8 | 5 | 8 | 18 | 19 | 5 | 1 | 11 | 6 | 2 | 40 | 0 | 0 | 0 | 2 | 4 | 1 | 1 | 4 | 1 | 4 | 1 | 39 | 175 | 1 | NaN | 15 | 1 |
---|
26 | 72 | 1 | 3 | 4 | 4 | 4.8571 | 32 | 10 | 8 | 8 | 16 | 17 | 6 | 23 | 26 | 7 | NaN | NaN | 29 | 2 | 0 | 3 | 4 | 0 | 1 | 4 | 1 | 7 | 1 | 64 | 180 | 1 | 2 | 1 | 1 |
---|
27 | 72 | 2 | 3 | 5 | 4.5000 | 4.5714 | 32 | 13 | 10 | 8 | 17 | 13 | 7 | 33 | 30 | 7 | 1 | 2 | 46 | 0 | 1 | 3 | 4 | 0 | 1 | 4 | 1 | 7 | 1 | 64 | 180 | 1 | 2 | 1 | 1 |
---|
28 | 79 | 1 | 3 | 4 | 4.5000 | 2.1429 | 20 | 11 | 14 | 11 | 15 | 14 | 7 | 0 | 23 | 8 | NaN | NaN | 1 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 8 | 1 | 46 | 200 | 2 | 2 | 0.7500 | 1 |
---|
29 | 79 | 2 | 3 | 3 | 3.2500 | 1.7143 | 18 | 9 | 9 | 9 | 20 | 18 | 7 | 0 | 14 | 8 | 6 | 50 | 0 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 8 | 1 | 46 | 200 | 2 | 2 | 0.7500 | 1 |
---|
30 | 85 | 1 | 2 | 1 | 1 | 0.4286 | 18 | 8 | 6 | 8 | 9 | 19 | 5 | 1 | 17 | 8 | NaN | NaN | 0 | 0 | 0 | 3 | 4 | 0 | 3 | 4 | 1 | 10 | 1 | 64 | 165 | 1 | 2 | 35 | 1 |
---|
31 | 87 | 1 | 2 | 4 | 4.5000 | 3.2857 | 16 | 15 | 13 | 21 | 18 | 12 | 6 | 12 | 23 | 9 | NaN | NaN | 9 | 0 | 0 | 3 | 3 | 0 | 1 | 2 | 1 | 8 | 1 | 37 | 250 | 2 | 2 | 1 | 1 |
---|
32 | 87 | 2 | 2 | 2 | 2.2500 | 2.7143 | 12 | 15 | 11 | 21 | 17 | 7 | 8 | 5 | 22 | 10 | 4 | 57 | 9 | 0 | 0 | 3 | 3 | 0 | 1 | 2 | 1 | 8 | 1 | 37 | 250 | 2 | 2 | 1 | 1 |
---|
33 | 96 | 1 | 2 | 7 | 6.2500 | 8.1429 | 52 | 20 | 19 | 27 | 20 | 11 | 12 | 15 | 27 | 10 | NaN | NaN | 38 | 0 | 0 | 2 | 4 | 0 | 3 | 3 | 1 | 4 | 1 | 34 | 140 | 2 | 2 | 20 | 1 |
---|
34 | 96 | 2 | 2 | 7 | 6.7500 | 8.2857 | 44 | 25 | 20 | 26 | 31 | 10 | 16 | 17 | 26 | 10 | 4 | 60 | 32 | 0 | 0 | 2 | 4 | 0 | 3 | 3 | 1 | 4 | 1 | 34 | 140 | 2 | 2 | 20 | 1 |
---|
35 | 102 | 1 | 1 | 6 | 5.7500 | 6.8571 | 52 | 15 | 11 | 23 | 25 | 12 | 10 | 19 | 27 | 7 | NaN | NaN | 13 | 0 | 0 | 3 | 4 | 0 | 3 | 4 | 1 | 8 | 1 | 61 | 160 | 1 | 1 | 18 | 1 |
---|
36 | 102 | 2 | 1 | 3 | 3 | 3.8571 | 36 | 11 | 10 | 20 | 27 | 20 | 7 | 9 | 18 | 8 | 6 | 91 | 14 | 4 | 3 | 3 | 4 | 0 | 3 | 4 | 1 | 8 | 1 | 61 | 160 | 1 | 1 | 18 | 1 |
---|
37 | 103 | 1 | 2 | 4 | 3.7500 | 3.1429 | 38 | 23 | 11 | 25 | 28 | 15 | 12 | 13 | 24 | 8 | NaN | NaN | 23 | 14 | 4 | 2 | 4 | 0 | 3 | 4 | 1 | 3 | 0 | 64 | 109 | 2 | 1 | 26 | 1 |
---|
38 | 103 | 2 | 2 | 3 | 2.7500 | 3.1429 | 38 | 18 | 9 | 15 | 28 | 15 | 8 | 5 | 23 | 7 | 3 | 53.5000 | 24 | 14 | 4 | 2 | 4 | 0 | 3 | 4 | 1 | 3 | 0 | 64 | 109 | 2 | 1 | 26 | 1 |
---|
39 | 104 | 1 | 3 | 2 | 2 | 1 | 16 | 17 | 10 | 33 | 16 | 12 | 15 | 9 | 24 | 7 | NaN | NaN | 2 | 0 | 1.5000 | 3 | 4 | 0 | 1 | 4 | 1 | 7 | 1 | 27 | 125 | 2 | 2 | 4 | 1 |
---|
40 | 104 | 2 | 3 | 2 | 1.7500 | 0.5714 | 18 | 16 | 11 | 31 | 18 | 13 | 13 | 9 | 23 | 7 | 1 | 54.5000 | 2 | 0 | 10 | 3 | 4 | 0 | 1 | 4 | 1 | 7 | 1 | 27 | 125 | 2 | 2 | 4 | 1 |
---|
41 | 108 | 1 | 3 | 2 | 2.2500 | 1.1429 | 16 | 8 | 8 | 10 | 19 | 12 | 5 | 1 | 21 | 5 | NaN | NaN | 0 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 7 | 1 | 38 | 210 | 2 | 2 | 6 | 1 |
---|
42 | 108 | 2 | 3 | 2 | 2 | 0.8571 | 18 | 8 | 8 | 9 | 20 | 12 | 6 | 3 | 15 | 3 | 1 | 10.5000 | 3 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 7 | 1 | 38 | 210 | 2 | 2 | 6 | 1 |
---|
43 | 112 | 1 | 1 | 2 | 2 | 2.7143 | 18 | 18 | 15 | 24 | 19 | 18 | 17 | 8 | 20 | 8 | NaN | NaN | 0 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 2 | 6 | 0 | 29 | 220 | 1 | 2 | 10 | 1 |
---|
44 | 112 | 2 | 1 | 1 | 1 | 0.2857 | 2 | 12 | 9 | 18 | 14 | 18 | 10 | 2 | 11 | 10 | 6 | 91 | 7 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 2 | 6 | 0 | 29 | 220 | 1 | 2 | 10 | 1 |
---|
45 | 113 | 1 | 1 | 7 | 5.2500 | 7 | 64 | 18 | 15 | 22 | 24 | 17 | 11 | 24 | 23 | 10 | NaN | NaN | 0 | 28 | 0 | 3 | 4 | 0 | 2 | 3 | 1 | 7 | 1 | 59 | 169 | 2 | 1 | 4 | 1 |
---|
46 | 113 | 2 | 1 | 4 | 3.5000 | 3.8571 | 50 | 12 | 15 | 22 | 23 | 18 | 11 | 8 | 24 | 10 | 6 | 97.5000 | 0 | 24 | 0 | 3 | 4 | 0 | 2 | 3 | 1 | 7 | 1 | 59 | 169 | 2 | 1 | 4 | 1 |
---|
47 | 115 | 1 | 1 | 4 | 3.7500 | 2.2857 | 16 | 16 | 9 | 12 | 18 | 16 | 7 | 10 | 26 | 6 | NaN | NaN | 28 | 0 | 0 | 3 | 4 | 0 | 1 | 1 | 1 | 8 | 1 | 57 | 157 | 2 | 2 | 10 | 1 |
---|
48 | 115 | 2 | 1 | 1 | 0.7500 | 0.2857 | 4 | 18 | 5 | 20 | 16 | 18 | 7 | 4 | 15 | 8 | 6 | 91.5000 | 28 | 0 | 0 | 3 | 4 | 0 | 1 | 1 | 1 | 8 | 1 | 57 | 157 | 2 | 2 | 10 | 1 |
---|
49 | 117 | 1 | 1 | 5 | 5.2500 | 5.1429 | 26 | 22 | 24 | 12 | 19 | 8 | 12 | 9 | 19 | 8 | NaN | NaN | 8 | 0 | 2 | 3 | 4 | 0 | 1 | 3 | 1 | 8 | 1 | 34 | 130 | 2 | 2 | 15 | 1 |
---|
50 | 117 | 2 | 1 | 4 | 4 | 4.1429 | 22 | 16 | 18 | 12 | 28 | 14 | 8 | 2 | 11 | 10 | 5 | 100 | 12 | 0 | 4 | 3 | 4 | 0 | 1 | 3 | 1 | 8 | 1 | 34 | 130 | 2 | 2 | 15 | 1 |
---|
51 | 125 | 1 | 2 | 4 | 3 | 3.2857 | 24 | 23 | 7 | 19 | 23 | 20 | 7 | 6 | 16 | 7 | NaN | NaN | 1 | 0 | 9 | 3 | 4 | 0 | 2 | 4 | 1 | 8 | 1 | 60 | 152 | 2 | 2 | 30 | 1 |
---|
52 | 125 | 2 | 2 | 3 | 2.5000 | 0.8571 | 22 | 19 | 8 | 17 | 17 | 22 | 8 | 6 | 14 | 7 | 1 | 1.5000 | 0 | 0 | 0 | 3 | 4 | 0 | 2 | 4 | 1 | 8 | 1 | 60 | 152 | 2 | 2 | 30 | 1 |
---|
53 | 142 | 1 | 1 | 2 | 2 | 1.7143 | 20 | 10 | 11 | 15 | 12 | 18 | 7 | 8 | 30 | 3 | NaN | NaN | 28 | 0 | 15 | 3 | 4 | 0 | 1 | 3 | 1 | 9 | 1 | 47 | 136 | 1 | 2 | 1.5000 | 1 |
---|
54 | 142 | 2 | 1 | 0 | 0.5000 | 0 | 4 | 9 | 11 | 14 | 8 | 22 | 6 | 8 | 15 | 10 | 7 | 100 | 31 | 0 | 15 | 3 | 4 | 0 | 1 | 3 | 1 | 9 | 1 | 47 | 136 | 1 | 2 | 1.5000 | 1 |
---|
55 | 146 | 1 | 2 | 3 | 3 | 2.5714 | 22 | 14 | 15 | 18 | 29 | 15 | 7 | 9 | 22 | 10 | NaN | NaN | 8 | 0 | 3 | 3 | 4 | 0 | 1 | 3 | 1 | 5 | 1 | 31 | 128 | 2 | 2 | 8 | 1 |
---|
56 | 146 | 2 | 2 | 4 | 3.7500 | 1.7143 | 24 | 14 | 16 | 21 | 26 | 12 | 7 | 10 | 24 | 9 | 1 | 35.5000 | 7 | 0 | 2 | 3 | 4 | 0 | 1 | 3 | 1 | 5 | 1 | 31 | 128 | 2 | 2 | 8 | 1 |
---|
57 | 147 | 1 | 3 | 5 | 4.7500 | 3 | 14 | 8 | 8 | 8 | 13 | 24 | 5 | 0 | 14 | 9 | NaN | NaN | 5 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 1 | 8 | 1 | 35 | 160 | 2 | 2 | 3 | 1 |
---|
58 | 147 | 2 | 3 | 2 | 2 | 1.8571 | 12 | 8 | 7 | 8 | 13 | 23 | 5 | 0 | 12 | 10 | 6 | 78.5000 | 7 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 1 | 8 | 1 | 35 | 160 | 2 | 2 | 3 | 1 |
---|
59 | 148 | 1 | 2 | 3 | 3.5000 | 2.8571 | 20 | 14 | 15 | 15 | 15 | 15 | 8 | 11 | 30 | 9 | NaN | NaN | 15 | 0 | 14 | 2 | 4 | 1 | 1 | 3 | 3 | 4 | 1 | 31 | 150 | 1 | 2 | 2.5000 | 1 |
---|
60 | 148 | 2 | 2 | 2 | 2 | 2 | 16 | 11 | 8 | 11 | 18 | 13 | 5 | 11 | 24 | 8 | 4 | 68.5000 | 11 | 0 | 28 | 2 | 4 | 1 | 1 | 3 | 3 | 4 | 1 | 31 | 150 | 1 | 2 | 2.5000 | 1 |
---|
61 | 165 | 1 | 2 | 4 | 3.7500 | 2.8571 | 18 | 13 | 13 | 12 | 13 | 19 | 8 | 7 | 25 | 7 | NaN | NaN | 13 | 0 | 3 | 3 | 4 | 0 | 1 | 3 | 2 | 3 | 0 | 28 | 185 | 1 | 2 | 2 | 1 |
---|
62 | 172 | 1 | 2 | 3 | 3.7500 | 2.4286 | 12 | 15 | 14 | 21 | 26 | 11 | 10 | 14 | 22 | 9 | NaN | NaN | 28 | 0 | 0 | 2 | 4 | 0 | 2 | 2 | 1 | 8 | 0 | 21 | 185 | 1 | 2 | 6 | 1 |
---|
63 | 172 | 2 | 2 | 5 | 5.5000 | 2.8571 | 16 | 18 | 19 | 22 | 32 | 5 | 9 | 8 | 20 | 10 | 1 | 34.5000 | 19 | 0 | 0 | 2 | 4 | 0 | 2 | 2 | 1 | 8 | 0 | 21 | 185 | 1 | 2 | 6 | 1 |
---|
64 | 192 | 1 | 3 | 5 | 4.7500 | 5.4286 | 36 | 8 | 13 | 11 | 29 | 10 | 6 | 20 | 28 | 7 | NaN | NaN | 9 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 7 | 0 | 24 | 136 | 2 | 2 | 7 | 1 |
---|
65 | 192 | 2 | 3 | 5 | 5 | 5.4286 | 28 | 10 | 10 | 12 | 31 | 9 | 8 | 11 | 25 | 7 | 2 | 49.5000 | 14 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 7 | 0 | 24 | 136 | 2 | 2 | 7 | 1 |
---|
66 | 194 | 1 | 3 | 3 | 3.2500 | 2.1429 | 16 | 10 | 9 | 10 | 21 | 17 | 7 | 4 | 24 | 8 | NaN | NaN | 1 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 2 | 8 | 1 | 31 | 120 | 2 | 2 | 0.7500 | 1 |
---|
67 | 194 | 2 | 3 | 3 | 3 | 2 | 8 | 8 | 9 | 11 | 18 | 18 | 7 | 1 | 16 | 8 | 2 | 52.5000 | 3 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 2 | 8 | 1 | 31 | 120 | 2 | 2 | 0.7500 | 1 |
---|
68 | 195 | 1 | 1 | 3 | 2.7500 | 2.1429 | 16 | 11 | 14 | 22 | 29 | 25 | 10 | 28 | 33 | 7 | NaN | NaN | 15 | 0 | 10 | 3 | 4 | 0 | 2 | 4 | 2 | 9 | 0 | 25 | 130 | 2 | 2 | 15 | 1 |
---|
69 | 195 | 2 | 1 | 0 | 0 | 0 | 0 | 9 | 6 | 14 | 27 | 20 | 6 | 0 | 15 | 10 | 7 | 100 | 9 | 0 | 2 | 3 | 4 | 0 | 2 | 4 | 2 | 9 | 0 | 25 | 130 | 2 | 2 | 15 | 1 |
---|
70 | 219 | 1 | 3 | 5 | 4.5000 | 3.8571 | 28 | 18 | 17 | 18 | 33 | 15 | 10 | 11 | 31 | 7 | NaN | NaN | 9 | 5 | 0 | 3 | 4 | 0 | 1 | 4 | 1 | 8 | 1 | 37 | 164 | 1 | 2 | 15.2500 | 1 |
---|
71 | 221 | 1 | 2 | 1 | 1 | 0.4286 | 10 | 8 | 8 | 8 | 15 | 22 | 5 | 6 | 19 | 3 | NaN | NaN | 45 | 0 | 3 | 3 | 4 | 0 | 1 | 3 | 1 | 8 | 1 | 44 | 215 | 1 | 2 | 10 | 1 |
---|
72 | 221 | 2 | 2 | 1 | 1 | 0.8571 | 10 | 8 | 9 | 9 | 16 | 21 | 6 | 2 | 19 | 3 | 3 | 71.5000 | 50 | 0 | 0 | 3 | 4 | 0 | 1 | 3 | 1 | 8 | 1 | 44 | 215 | 1 | 2 | 10 | 1 |
---|
73 | 228 | 1 | 3 | 2 | 2.5000 | 2.1429 | 20 | 10 | 10 | 8 | 12 | 19 | 7 | 5 | 24 | 7 | NaN | NaN | 52 | 0 | 0 | 2 | 4 | 0 | 2 | 3 | 1 | 4 | 1 | 56 | 165 | 1 | 2 | 20 | 1 |
---|
74 | 228 | 2 | 3 | 1 | 1.2500 | 0.8571 | 20 | 9 | 8 | 8 | 11 | 13 | 6 | 3 | 24 | 7 | 6 | 77.5000 | 36 | 0 | 0 | 2 | 4 | 0 | 2 | 3 | 1 | 4 | 1 | 56 | 165 | 1 | 2 | 20 | 1 |
---|
75 | 248 | 1 | 2 | 5 | 5.2500 | 1.8571 | 10 | 11 | 13 | 11 | 27 | 10 | 8 | 2 | 17 | 7 | NaN | NaN | 22 | 0 | 0 | 2 | 4 | 0 | 1 | 3 | 1 | 5 | 0 | 22 | 255 | 1 | 2 | 4 | 1 |
---|
76 | 248 | 2 | 2 | 5 | 4.5000 | 1.1429 | 12 | 10 | 11 | 11 | 29 | 11 | 8 | 1 | 14 | 8 | 3 | 23.5000 | 12 | 0 | 0 | 2 | 4 | 0 | 1 | 3 | 1 | 5 | 0 | 22 | 255 | 1 | 2 | 4 | 1 |
---|
77 | 262 | 1 | 1 | 4 | 3.2500 | 3 | 20 | 24 | 14 | 22 | 21 | 13 | 15 | 22 | 34 | 8 | NaN | NaN | 5 | 0 | 5 | 3 | 4 | 0 | 1 | 3 | 1 | 3 | 0 | 25 | 115 | 2 | 2 | 3 | 1 |
---|
78 | 262 | 2 | 1 | 1 | 0.7500 | 0.5714 | 4 | 15 | 10 | 14 | 13 | 19 | 8 | 5 | 20 | 10 | 6 | 86.5000 | 3 | 0 | 5 | 3 | 4 | 0 | 1 | 3 | 1 | 3 | 0 | 25 | 115 | 2 | 2 | 3 | 1 |
---|
79 | 295 | 1 | 3 | 3 | 3.2500 | 2 | 18 | 10 | 9 | 13 | 17 | 16 | 10 | 8 | 25 | 8 | NaN | NaN | 11 | 0 | 14 | 3 | 5 | 0 | 2 | 4 | 1 | 7 | 0 | 23 | 160 | 2 | 2 | 13 | 1 |
---|
80 | 295 | 2 | 3 | 4 | 4.2500 | 2.7143 | 20 | 10 | 9 | 13 | 22 | 16 | 10 | 14 | 23 | 8 | 2 | 30 | 4 | 0 | 16 | 3 | 5 | 0 | 2 | 4 | 1 | 7 | 0 | 23 | 160 | 2 | 2 | 13 | 1 |
---|
81 | 312 | 1 | 1 | 3 | 3.2500 | 0.7143 | 20 | 10 | 12 | 19 | 14 | 18 | 9 | 6 | 20 | 6 | NaN | NaN | 11 | 0 | 1.2500 | 2 | 4 | 0 | 3 | 3 | 3 | 7 | 0 | 25 | 235 | 1 | 2 | 9 | 1 |
---|
82 | 312 | 2 | 1 | 1 | 0.7500 | 0.4286 | 4 | 17 | 14 | 19 | 12 | 10 | 13 | 3 | 11 | 10 | 6 | 92.5000 | 23 | 0 | 14 | 2 | 4 | 0 | 3 | 3 | 3 | 7 | 0 | 25 | 235 | 1 | 2 | 9 | 1 |
---|
83 | 319 | 1 | 1 | 6 | 5 | 6.4286 | 30 | 19 | 20 | 14 | 34 | 13 | 10 | 10 | 31 | 10 | NaN | NaN | 6 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 8 | 1 | 48 | 230 | 1 | 2 | 32 | 1 |
---|
84 | 319 | 2 | 1 | 0 | 0.2500 | 0 | 2 | 10 | 8 | 12 | 16 | 23 | 7 | 1 | 14 | 10 | 7 | 100 | 6 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 1 | 8 | 1 | 48 | 230 | 1 | 2 | 32 | 1 |
---|
85 | 324 | 1 | 1 | 6 | 5.5000 | 6.8571 | 46 | 21 | 18 | 26 | 33 | 19 | 15 | 37 | 32 | 9 | NaN | NaN | 39 | 0 | 0 | 3 | 4 | 0 | 1 | 1 | 1 | 7 | 0 | 61 | 190 | 1 | 2 | 8 | 1 |
---|
86 | 324 | 2 | 1 | 1 | 1.7500 | 1.7143 | 18 | 15 | 12 | 21 | 24 | 12 | 7 | 19 | 27 | 10 | 6 | 92 | 30 | 0 | 0 | 3 | 4 | 0 | 1 | 1 | 1 | 7 | 0 | 61 | 190 | 1 | 2 | 8 | 1 |
---|
87 | 330 | 1 | 3 | 4 | 4.5000 | 3.4286 | 14 | 8 | 6 | 8 | 25 | 8 | 6 | 1 | 15 | 7 | NaN | NaN | 8 | 0 | 0 | 3 | 4 | 0 | 1 | 4 | 1 | 6 | 0 | 24 | 170 | 1 | 2 | 4 | 1 |
---|
88 | 330 | 2 | 3 | 2 | 2 | 1.8571 | 10 | 8 | 5 | 9 | 21 | 11 | 6 | 0 | 11 | 3 | 1 | 34.5000 | 6 | 0 | 0 | 3 | 4 | 0 | 1 | 4 | 1 | 6 | 0 | 24 | 170 | 1 | 2 | 4 | 1 |
---|
89 | 339 | 1 | 3 | 4 | 4.5000 | 1.7143 | 30 | 9 | 8 | 13 | 20 | 15 | 6 | 5 | 25 | 10 | NaN | NaN | 3 | 0 | 0 | 3 | 4 | 0 | 1 | 2 | 2 | 7 | 0 | 23 | 140 | 2 | 2 | 10 | 1 |
---|
90 | 341 | 1 | 2 | 4 | 4 | 3.1429 | 16 | 16 | 11 | 19 | 25 | 14 | 8 | 31 | 26 | 8 | NaN | NaN | 17 | 0 | 7 | 2 | 5 | 0 | 3 | 3 | 1 | 2 | 0 | 22 | 170 | 1 | 2 | 4 | 1 |
---|
91 | 341 | 2 | 2 | 2 | 2.5000 | 1.2857 | 10 | 11 | 14 | 13 | 21 | 17 | 9 | 9 | 15 | 7 | 3 | 59 | 14 | 0 | 7 | 2 | 5 | 0 | 3 | 3 | 1 | 2 | 0 | 22 | 170 | 1 | 2 | 4 | 1 |
---|
92 | 348 | 1 | 3 | 3 | 3.5000 | 4 | 30 | 20 | 14 | 25 | 27 | 17 | 9 | 20 | 28 | 9 | NaN | NaN | 3 | 0 | 0 | 3 | 5 | 0 | 1 | 3 | 1 | 8 | 1 | 30 | 120 | 2 | 2 | 5 | 1 |
---|
93 | 348 | 2 | 3 | 2 | 2 | 1.4286 | 16 | 15 | 10 | 17 | 26 | 14 | 11 | 9 | 15 | 10 | 5 | 68 | 2 | 0 | 0 | 3 | 5 | 0 | 1 | 3 | 1 | 8 | 1 | 30 | 120 | 2 | 2 | 5 | 1 |
---|
94 | 352 | 1 | 3 | 6 | 5.2500 | 6.8571 | 28 | 24 | 15 | 23 | 24 | 9 | 12 | 21 | 31 | 10 | NaN | NaN | 42 | 0 | 0 | 3 | 4 | 0 | 1 | 1 | 1 | 7 | 1 | 46 | 156 | 2 | 2 | 14 | 1 |
---|
95 | 364 | 1 | 3 | 4 | 5.5000 | 0.8571 | 18 | 8 | 10 | 8 | 22 | 23 | 7 | 9 | 13 | 2 | NaN | NaN | 1 | 0 | 0.2300 | 3 | 4 | 0 | 3 | 5 | 1 | 7 | 1 | 24 | 120 | 2 | 2 | 7 | 1 |
---|
96 | 364 | 2 | 3 | 2 | 1.7500 | 0.5714 | 14 | 8 | 5 | 10 | 21 | 17 | 6 | 4 | 14 | 2 | 2 | 3 | 0 | 0 | 2.2000 | 3 | 4 | 0 | 3 | 5 | 1 | 7 | 1 | 24 | 120 | 2 | 2 | 7 | 1 |
---|
97 | 378 | 1 | 1 | 3 | 3 | 2.4286 | 18 | 25 | 19 | 30 | 23 | 9 | 14 | 12 | 27 | 7 | NaN | NaN | 0 | 0 | 0 | 2 | 4 | 0 | 2 | 4 | 1 | 4 | 0 | 34 | 215 | 2 | 2 | 7 | 1 |
---|
98 | 378 | 2 | 1 | 1 | 1 | 0.7143 | 8 | 24 | 17 | 26 | 16 | 11 | 10 | 4 | 24 | 10 | 6 | 89 | 0 | 0 | 0 | 2 | 4 | 0 | 2 | 4 | 1 | 4 | 0 | 34 | 215 | 2 | 2 | 7 | 1 |
---|
99 | 389 | 1 | 3 | 3 | 3 | 3 | 22 | 9 | 14 | 23 | 24 | 18 | 10 | 11 | 26 | 7 | NaN | NaN | 3 | 0 | 0 | 3 | 4 | 0 | 2 | 3 | 1 | 6 | 1 | 34 | 178 | 2 | 2 | 11 | 1 |
---|
100 | 389 | 2 | 3 | 4 | 4 | 3.1429 | 26 | 8 | 9 | 15 | 25 | 19 | 8 | 8 | 29 | 6 | 1 | 21 | 8 | 0 | 0 | 3 | 4 | 0 | 2 | 3 | 1 | 6 | 1 | 34 | 178 | 2 | 2 | 11 | 1 |
---|
⋮ |
---|
Examine some of the key variables
It's always critical to look at your data! Check that the distributions and values make sense.
We'll work with a few key variables, though there are many more interesting ones to examine!
backpain_all.id; Subject ID
backpain_all.time; Assessment time (1 = pre-treatment, 2 = post)
backpain_all.group; Treatment group (1 = PRT, 2 = Placebo, 3 = Usual Care,
NaN = Healthy (nonpatient, not randomized)
backpain_all.bpi_intensity; Primary outcome, pain intensity
backpain_all.gender; Sex/gender (not diff here; 1 = male, 2 = fem, 3 = other)
logical(backpain_all.is_patient); 1 = patient, 0 = healthy control (not randomized/treated)
How many subjects?
length(unique(backpain_all.id))
How many patients?
is_patient = logical(backpain_all.is_patient); % 1 = patient, 0 = healthy control (not randomized/treated)
length(unique(backpain_all.id(is_patient)))
Calculate descriptive stats for all variables, and view stats for "group"
descriptive_stats = summary(backpain_all);
descriptive_stats.group
ans =
Size: [341 1]
Type: 'double'
Description: ''
Units: ''
Continuity: []
Min: 1
Median: 2
Max: 3
NumMissing: 55
How many subjects assessed per group and time point?
tab = crosstab(backpain_all.group, backpain_all.time);
% Print the results with labels (and save table object in tab)
tab = table(tab(:, 1), tab(:, 2), 'VariableNames',{'T1' 'T2'}, 'RowNames', {'PRT' 'Placebo' 'Control'})
tab = 3×2 table
| T1 | T2 |
---|
1 PRT | 50 | 44 |
---|
2 Placebo | 51 | 44 |
---|
3 Control | 50 | 47 |
---|
Create a smaller, reduced dataset with only a few variables we need
This is called backpain_stacked because the dataset is "stacked" in "long form", with multiple rows per participant. This is a repeated measures design, and participants thus have a row for each visit ("Time 1" pre-treatment and "Time 2" post-treatment).
Long-format is convenient for storing a dataset in a single frame and for mixed effects models, which keep track of which observations are collected on the same participants (and other dependencies) internally.
This has patients only, because the controls have NaN values for group.
backpain_stacked = backpain_all(:, {'id' 'time' 'group' 'bpi_intensity' 'gender' 'is_patient'})
backpain_stacked = 341×6 table
| id | time | group | bpi_intensity | gender | is_patient |
---|
1 | 12 | 1 | 3 | 2.5000 | 1 | 1 |
---|
2 | 12 | 2 | 3 | 2.7500 | 1 | 1 |
---|
3 | 14 | 1 | 3 | 2.5000 | 2 | 1 |
---|
4 | 14 | 2 | 3 | 2 | 2 | 1 |
---|
5 | 15 | 1 | 3 | 2.2500 | 1 | 1 |
---|
6 | 15 | 2 | 3 | 2.7500 | 1 | 1 |
---|
7 | 18 | 1 | 2 | 4.5000 | 1 | 1 |
---|
8 | 18 | 2 | 2 | 2.2500 | 1 | 1 |
---|
9 | 23 | 1 | 2 | 2.5000 | 2 | 1 |
---|
10 | 23 | 2 | 2 | 2.2500 | 2 | 1 |
---|
11 | 24 | 1 | 1 | 4.5000 | 1 | 1 |
---|
12 | 24 | 2 | 1 | 0.5000 | 1 | 1 |
---|
13 | 29 | 1 | 1 | 3.7500 | 2 | 1 |
---|
14 | 29 | 2 | 1 | 0.2500 | 2 | 1 |
---|
15 | 32 | 1 | 1 | 5.7500 | 1 | 1 |
---|
16 | 32 | 2 | 1 | 0.2500 | 1 | 1 |
---|
17 | 38 | 1 | 1 | 5.5000 | 2 | 1 |
---|
18 | 38 | 2 | 1 | 1.7500 | 2 | 1 |
---|
19 | 51 | 1 | 2 | 4 | 1 | 1 |
---|
20 | 51 | 2 | 2 | 3.7500 | 1 | 1 |
---|
21 | 61 | 1 | 2 | 4.5000 | 2 | 1 |
---|
22 | 61 | 2 | 2 | 1.2500 | 2 | 1 |
---|
23 | 67 | 1 | 1 | 5.2500 | 2 | 1 |
---|
24 | 69 | 1 | 2 | 1.2500 | 1 | 1 |
---|
25 | 69 | 2 | 2 | 0.5000 | 1 | 1 |
---|
26 | 72 | 1 | 3 | 4 | 1 | 1 |
---|
27 | 72 | 2 | 3 | 4.5000 | 1 | 1 |
---|
28 | 79 | 1 | 3 | 4.5000 | 2 | 1 |
---|
29 | 79 | 2 | 3 | 3.2500 | 2 | 1 |
---|
30 | 85 | 1 | 2 | 1 | 1 | 1 |
---|
31 | 87 | 1 | 2 | 4.5000 | 2 | 1 |
---|
32 | 87 | 2 | 2 | 2.2500 | 2 | 1 |
---|
33 | 96 | 1 | 2 | 6.2500 | 2 | 1 |
---|
34 | 96 | 2 | 2 | 6.7500 | 2 | 1 |
---|
35 | 102 | 1 | 1 | 5.7500 | 1 | 1 |
---|
36 | 102 | 2 | 1 | 3 | 1 | 1 |
---|
37 | 103 | 1 | 2 | 3.7500 | 2 | 1 |
---|
38 | 103 | 2 | 2 | 2.7500 | 2 | 1 |
---|
39 | 104 | 1 | 3 | 2 | 2 | 1 |
---|
40 | 104 | 2 | 3 | 1.7500 | 2 | 1 |
---|
41 | 108 | 1 | 3 | 2.2500 | 2 | 1 |
---|
42 | 108 | 2 | 3 | 2 | 2 | 1 |
---|
43 | 112 | 1 | 1 | 2 | 1 | 1 |
---|
44 | 112 | 2 | 1 | 1 | 1 | 1 |
---|
45 | 113 | 1 | 1 | 5.2500 | 2 | 1 |
---|
46 | 113 | 2 | 1 | 3.5000 | 2 | 1 |
---|
47 | 115 | 1 | 1 | 3.7500 | 2 | 1 |
---|
48 | 115 | 2 | 1 | 0.7500 | 2 | 1 |
---|
49 | 117 | 1 | 1 | 5.2500 | 2 | 1 |
---|
50 | 117 | 2 | 1 | 4 | 2 | 1 |
---|
51 | 125 | 1 | 2 | 3 | 2 | 1 |
---|
52 | 125 | 2 | 2 | 2.5000 | 2 | 1 |
---|
53 | 142 | 1 | 1 | 2 | 1 | 1 |
---|
54 | 142 | 2 | 1 | 0.5000 | 1 | 1 |
---|
55 | 146 | 1 | 2 | 3 | 2 | 1 |
---|
56 | 146 | 2 | 2 | 3.7500 | 2 | 1 |
---|
57 | 147 | 1 | 3 | 4.7500 | 2 | 1 |
---|
58 | 147 | 2 | 3 | 2 | 2 | 1 |
---|
59 | 148 | 1 | 2 | 3.5000 | 1 | 1 |
---|
60 | 148 | 2 | 2 | 2 | 1 | 1 |
---|
61 | 165 | 1 | 2 | 3.7500 | 1 | 1 |
---|
62 | 172 | 1 | 2 | 3.7500 | 1 | 1 |
---|
63 | 172 | 2 | 2 | 5.5000 | 1 | 1 |
---|
64 | 192 | 1 | 3 | 4.7500 | 2 | 1 |
---|
65 | 192 | 2 | 3 | 5 | 2 | 1 |
---|
66 | 194 | 1 | 3 | 3.2500 | 2 | 1 |
---|
67 | 194 | 2 | 3 | 3 | 2 | 1 |
---|
68 | 195 | 1 | 1 | 2.7500 | 2 | 1 |
---|
69 | 195 | 2 | 1 | 0 | 2 | 1 |
---|
70 | 219 | 1 | 3 | 4.5000 | 1 | 1 |
---|
71 | 221 | 1 | 2 | 1 | 1 | 1 |
---|
72 | 221 | 2 | 2 | 1 | 1 | 1 |
---|
73 | 228 | 1 | 3 | 2.5000 | 1 | 1 |
---|
74 | 228 | 2 | 3 | 1.2500 | 1 | 1 |
---|
75 | 248 | 1 | 2 | 5.2500 | 1 | 1 |
---|
76 | 248 | 2 | 2 | 4.5000 | 1 | 1 |
---|
77 | 262 | 1 | 1 | 3.2500 | 2 | 1 |
---|
78 | 262 | 2 | 1 | 0.7500 | 2 | 1 |
---|
79 | 295 | 1 | 3 | 3.2500 | 2 | 1 |
---|
80 | 295 | 2 | 3 | 4.2500 | 2 | 1 |
---|
81 | 312 | 1 | 1 | 3.2500 | 1 | 1 |
---|
82 | 312 | 2 | 1 | 0.7500 | 1 | 1 |
---|
83 | 319 | 1 | 1 | 5 | 1 | 1 |
---|
84 | 319 | 2 | 1 | 0.2500 | 1 | 1 |
---|
85 | 324 | 1 | 1 | 5.5000 | 1 | 1 |
---|
86 | 324 | 2 | 1 | 1.7500 | 1 | 1 |
---|
87 | 330 | 1 | 3 | 4.5000 | 1 | 1 |
---|
88 | 330 | 2 | 3 | 2 | 1 | 1 |
---|
89 | 339 | 1 | 3 | 4.5000 | 2 | 1 |
---|
90 | 341 | 1 | 2 | 4 | 1 | 1 |
---|
91 | 341 | 2 | 2 | 2.5000 | 1 | 1 |
---|
92 | 348 | 1 | 3 | 3.5000 | 2 | 1 |
---|
93 | 348 | 2 | 3 | 2 | 2 | 1 |
---|
94 | 352 | 1 | 3 | 5.2500 | 2 | 1 |
---|
95 | 364 | 1 | 3 | 5.5000 | 2 | 1 |
---|
96 | 364 | 2 | 3 | 1.7500 | 2 | 1 |
---|
97 | 378 | 1 | 1 | 3 | 2 | 1 |
---|
98 | 378 | 2 | 1 | 1 | 2 | 1 |
---|
99 | 389 | 1 | 3 | 3 | 2 | 1 |
---|
100 | 389 | 2 | 3 | 4 | 2 | 1 |
---|
⋮ |
---|
Unstack the dataset to match outcome values within-person
For standard single-level GLMs and repeated measures models (paired t-tests, repeated measures ANOVA), the "long format" dataset is inappropriate. We want a "wide format" dataset, with one row per person, and repeated measures from the person in different variables (columns).
backpain = unstack(backpain_stacked,'bpi_intensity','time', 'NewDataVariableNames', {'BPI_Time1', 'BPI_Time2'})
backpain = 151×6 table
| id | group | gender | is_patient | BPI_Time1 | BPI_Time2 |
---|
1 | 12 | 3 | 1 | 1 | 2.5000 | 2.7500 |
---|
2 | 14 | 3 | 2 | 1 | 2.5000 | 2 |
---|
3 | 15 | 3 | 1 | 1 | 2.2500 | 2.7500 |
---|
4 | 18 | 2 | 1 | 1 | 4.5000 | 2.2500 |
---|
5 | 23 | 2 | 2 | 1 | 2.5000 | 2.2500 |
---|
6 | 24 | 1 | 1 | 1 | 4.5000 | 0.5000 |
---|
7 | 29 | 1 | 2 | 1 | 3.7500 | 0.2500 |
---|
8 | 32 | 1 | 1 | 1 | 5.7500 | 0.2500 |
---|
9 | 38 | 1 | 2 | 1 | 5.5000 | 1.7500 |
---|
10 | 51 | 2 | 1 | 1 | 4 | 3.7500 |
---|
11 | 61 | 2 | 2 | 1 | 4.5000 | 1.2500 |
---|
12 | 67 | 1 | 2 | 1 | 5.2500 | NaN |
---|
13 | 69 | 2 | 1 | 1 | 1.2500 | 0.5000 |
---|
14 | 72 | 3 | 1 | 1 | 4 | 4.5000 |
---|
15 | 79 | 3 | 2 | 1 | 4.5000 | 3.2500 |
---|
16 | 85 | 2 | 1 | 1 | 1 | NaN |
---|
17 | 87 | 2 | 2 | 1 | 4.5000 | 2.2500 |
---|
18 | 96 | 2 | 2 | 1 | 6.2500 | 6.7500 |
---|
19 | 102 | 1 | 1 | 1 | 5.7500 | 3 |
---|
20 | 103 | 2 | 2 | 1 | 3.7500 | 2.7500 |
---|
21 | 104 | 3 | 2 | 1 | 2 | 1.7500 |
---|
22 | 108 | 3 | 2 | 1 | 2.2500 | 2 |
---|
23 | 112 | 1 | 1 | 1 | 2 | 1 |
---|
24 | 113 | 1 | 2 | 1 | 5.2500 | 3.5000 |
---|
25 | 115 | 1 | 2 | 1 | 3.7500 | 0.7500 |
---|
26 | 117 | 1 | 2 | 1 | 5.2500 | 4 |
---|
27 | 125 | 2 | 2 | 1 | 3 | 2.5000 |
---|
28 | 142 | 1 | 1 | 1 | 2 | 0.5000 |
---|
29 | 146 | 2 | 2 | 1 | 3 | 3.7500 |
---|
30 | 147 | 3 | 2 | 1 | 4.7500 | 2 |
---|
31 | 148 | 2 | 1 | 1 | 3.5000 | 2 |
---|
32 | 165 | 2 | 1 | 1 | 3.7500 | NaN |
---|
33 | 172 | 2 | 1 | 1 | 3.7500 | 5.5000 |
---|
34 | 192 | 3 | 2 | 1 | 4.7500 | 5 |
---|
35 | 194 | 3 | 2 | 1 | 3.2500 | 3 |
---|
36 | 195 | 1 | 2 | 1 | 2.7500 | 0 |
---|
37 | 219 | 3 | 1 | 1 | 4.5000 | NaN |
---|
38 | 221 | 2 | 1 | 1 | 1 | 1 |
---|
39 | 228 | 3 | 1 | 1 | 2.5000 | 1.2500 |
---|
40 | 248 | 2 | 1 | 1 | 5.2500 | 4.5000 |
---|
41 | 262 | 1 | 2 | 1 | 3.2500 | 0.7500 |
---|
42 | 295 | 3 | 2 | 1 | 3.2500 | 4.2500 |
---|
43 | 312 | 1 | 1 | 1 | 3.2500 | 0.7500 |
---|
44 | 319 | 1 | 1 | 1 | 5 | 0.2500 |
---|
45 | 324 | 1 | 1 | 1 | 5.5000 | 1.7500 |
---|
46 | 330 | 3 | 1 | 1 | 4.5000 | 2 |
---|
47 | 339 | 3 | 2 | 1 | 4.5000 | NaN |
---|
48 | 341 | 2 | 1 | 1 | 4 | 2.5000 |
---|
49 | 348 | 3 | 2 | 1 | 3.5000 | 2 |
---|
50 | 352 | 3 | 2 | 1 | 5.2500 | NaN |
---|
51 | 364 | 3 | 2 | 1 | 5.5000 | 1.7500 |
---|
52 | 378 | 1 | 2 | 1 | 3 | 1 |
---|
53 | 389 | 3 | 2 | 1 | 3 | 4 |
---|
54 | 416 | 2 | 2 | 1 | 5.5000 | 3 |
---|
55 | 431 | 3 | 1 | 1 | 4 | 4.2500 |
---|
56 | 434 | 2 | 2 | 1 | 4 | NaN |
---|
57 | 450 | 1 | 2 | 1 | 3 | NaN |
---|
58 | 460 | 3 | 2 | 1 | 7 | 7.2500 |
---|
59 | 464 | 2 | 2 | 1 | 1.5000 | NaN |
---|
60 | 471 | 2 | 1 | 1 | 3.2500 | 1.7500 |
---|
61 | 477 | 1 | 1 | 1 | 5.2500 | 2.5000 |
---|
62 | 501 | 3 | 1 | 1 | 4 | 3.2500 |
---|
63 | 535 | 1 | 2 | 1 | 4.5000 | 0.2500 |
---|
64 | 544 | 1 | 2 | 1 | 3 | NaN |
---|
65 | 545 | 2 | 2 | 1 | 3 | 1.7500 |
---|
66 | 575 | 1 | 2 | 1 | 3 | 0.7500 |
---|
67 | 579 | 2 | 2 | 1 | 2 | 1.2500 |
---|
68 | 586 | 3 | 2 | 1 | 4.2500 | 2.7500 |
---|
69 | 598 | 1 | 2 | 1 | 3.2500 | 0 |
---|
70 | 599 | 3 | 1 | 1 | 4 | 4 |
---|
71 | 602 | 2 | 2 | 1 | 5.7500 | NaN |
---|
72 | 604 | 1 | 1 | 1 | 2.5000 | 3.2500 |
---|
73 | 605 | 1 | 2 | 1 | 5.2500 | 0.2500 |
---|
74 | 607 | 2 | 2 | 1 | 6 | 4.7500 |
---|
75 | 608 | 3 | 2 | 1 | 2.5000 | 1.7500 |
---|
76 | 651 | 2 | 1 | 1 | 1.5000 | NaN |
---|
77 | 664 | 2 | 2 | 1 | 4 | NaN |
---|
78 | 666 | 2 | 1 | 1 | 2.2500 | 1.7500 |
---|
79 | 672 | 1 | 2 | 1 | 4.7500 | 2.2500 |
---|
80 | 676 | 1 | 1 | 1 | 3.5000 | NaN |
---|
81 | 693 | 2 | 1 | 1 | 5.5000 | 5 |
---|
82 | 698 | 3 | 1 | 1 | 3.5000 | 2 |
---|
83 | 699 | 1 | 1 | 1 | 3.5000 | 1.2500 |
---|
84 | 703 | 3 | 1 | 1 | 3 | 1.2500 |
---|
85 | 704 | 1 | 2 | 1 | 3.5000 | 3 |
---|
86 | 711 | 2 | 1 | 1 | 3 | 3 |
---|
87 | 713 | 3 | 2 | 1 | 3.7500 | 2.2500 |
---|
88 | 743 | 3 | 2 | 1 | 2.2500 | 2 |
---|
89 | 759 | 2 | 1 | 1 | 5.7500 | 4 |
---|
90 | 771 | 3 | 2 | 1 | 3.7500 | 5 |
---|
91 | 774 | 1 | 1 | 1 | 5 | 1 |
---|
92 | 782 | 3 | 1 | 1 | 3 | 1 |
---|
93 | 791 | 3 | 1 | 1 | 3.2500 | 3.5000 |
---|
94 | 792 | 1 | 2 | 1 | 4 | 0.5000 |
---|
95 | 796 | 3 | 2 | 1 | 4.5000 | 2.7500 |
---|
96 | 814 | 1 | 1 | 1 | 5.5000 | 0.2500 |
---|
97 | 818 | 1 | 2 | 1 | 4 | 1.7500 |
---|
98 | 832 | 1 | 1 | 1 | 2.2500 | NaN |
---|
99 | 837 | 1 | 2 | 1 | 5.7500 | 0 |
---|
100 | 843 | 2 | 1 | 1 | 2 | 1 |
---|
⋮ |
---|
Now, rows correspond to participants, and columns correspond to measured variables.
Missing data are coded with NaN (Not a Number), so participants who are missing a time point will have NaN values for that time point.
Let's add a column for the change in pain (improvement), where negative values mean more improvement:
backpain.BPI_change = backpain.BPI_Time2 - backpain.BPI_Time1;
Create sub-tables with only participants in each group
We do this for convenience, so we can extract data and plot it easily.
prt = backpain(backpain.group == 1, :);
placebo = backpain(backpain.group == 2, :);
control = backpain(backpain.group == 3, :);
Save simple tables
We can save simple versions of the tables for later, so that we can download and work with them in any software package.
Visualize the data
Let's create some plots of the improvement in BPI (Brief Pain Inventory) by group
data_to_plot = {prt.BPI_change, placebo.BPI_change, control.BPI_change};
colors = seaborn_colors(3);
create_figure('Violins');
barplot_columns(data_to_plot, 'Improvement by group', 'colors', colors, 'names', {'PRT', 'Placebo' 'Control'});
Col 1: PRT Col 2: Placebo Col 3: Control
---------------------------------------------
Tests of column means against zero
---------------------------------------------
Name Mean_Value Std_Error T P Cohens_d
___________ __________ _________ _______ __________ ________
{'PRT' } -2.6648 0.21657 -12.304 2.2204e-15 -1.8549
{'Placebo'} -0.89773 0.18523 -4.8466 1.6705e-05 -0.73065
{'Control'} -0.51596 0.1531 -3.3701 0.0015294 -0.49158
ylabel('BPI change, T2-T1')
line1 = lineplot_columns([prt.BPI_Time1 prt.BPI_Time2], 'w', 3, 'color', colors{1}, 'markerfacecolor', colors{1}./1.5);
line2 = lineplot_columns([placebo.BPI_Time1 placebo.BPI_Time2], 'w', 3, 'color', colors{2}, 'markerfacecolor', colors{2}./1.5);
line3 = lineplot_columns([control.BPI_Time1 control.BPI_Time2], 'w', 3, 'color', colors{3}, 'markerfacecolor', colors{3}./1.5);
ylabel('BPI change, T2-T1')
set(gca, 'XLim', [0.5 2.5], 'XTick', 1:2, 'XTickLabel', {'Time 1' 'Time 2'})
Code hygiene
To keep the code clean, here are some things I attempted to do:
- Use descriptive names for variables, so that I intuitively know what they mean
- Comment the code to explain key steps, so I can ideally read the code "like a book"
- Print key output to check each step
- Include text to label and explain the output and its interpretation
To keep the code clean, here are some things I did NOT do:
- I did NOT re-use variable names so that the same variable refers to different content at different points in the script
- I did NOT print a bunch of extraneous output
- I did NOT include long code blocks with calculations in the main script (I would create a subfunction for these).