Psychophysiology data are miserably complicated, but what's worse is that they are complicated by design.

Data are presently organized so that they are wide -- that is, all the repeated data for a participant are in one record. For longitudinal analyses, we need to reorganize these data so that columns represent the measure (e.g., blood pressure) and each record represents a measure on a single condition (e.g., baseline, orthostasis, etc). This means that participant IDs repeated over as many rows as there are conditions. This data format is called narrow if only to distinguish it from wide.

In the following, TestData is a data frame with the wide data. csvCounterBal is a text file with the counterbalancing information.

# *** Counterbalancing order * times...
csvCounterBal = read.csv("/prj/hnd/Wave01/zPrj/PsyPhys/dat/CounterbalanceTiming.csv", as.is = T)
csvCounterBal = csvCounterBal[!(csvCounterBal$Counterbalance == "" & csvCounterBal$t0 == ""), ]

head(csvCounterBal)
  Counterbalance       t0            t1           t2            t3         t4            t5            t6            t7            t8         t9           t10        t11           t12 TotalTime
1            OHA Baseline    OrthoStand OrthoRecover HappyInstruct HappyThink    HappySpeak     MoodScale HappyRecovery AngryInstruct AngryThink    AngrySpeak  MoodScale AngryRecovery        NA
2                       5             5            8             2          2             3             1             8             2          2             3          1             8        50
4            OAH Baseline    OrthoStand OrthoRecover AngryInstruct AngryThink    AngrySpeak     MoodScale AngryRecovery HappyInstruct HappyThink    HappySpeak  MoodScale HappyRecovery        NA
5                       5             5            8             2          2             3             1             8             2          2             3          1             8        50
7            HAO Baseline HappyInstruct   HappyThink    HappySpeak  MoodScale HappyRecovery AngryInstruct    AngryThink    AngrySpeak  MoodScale AngryRecovery OrthoStand  OrthoRecover        NA
8                       5             2            2             3          1             8             2             2             3          1             8          5             8        50

cBalTime = list()

cBalTime[["OHA"]] = csvCounterBal[1:2, 2:14]
cBalTime[["OAH"]] = csvCounterBal[3:4, 2:14]
cBalTime[["HAO"]] = csvCounterBal[5:6, 2:14]
cBalTime[["HOA"]] = csvCounterBal[7:8, 2:14]
cBalTime[["AHO"]] = csvCounterBal[9:10, 2:14]
cBalTime[["AOH"]] = csvCounterBal[11:12, 2:14]

xBalTime = list()

for (k in seq_along(cBalTime)) {
    xBalTime[[k]] = data.frame(n = 1:length(cBalTime[[k]][1, ]), meas = t(cBalTime[[k]][1, ]), dur = as.integer(cBalTime[[k]][2, ]), cum = cumsum(as.integer(cBalTime[[k]][2, ])), stringsAsFactors = F)
    names(xBalTime)[k] = names(cBalTime)[k]
    colnames(xBalTime[[k]]) = zQ(n, meas, dur, cum)
}

# *** Restructure data for repeated measures analysis...

(load("/prj/hnd/Wave01/zPrj/PsyPhys/dat/TestData.rdata"))
[1] "TestData"

head(TestData)
       HNDid countercode Counterbalance_num aho aoh hoa hao oha oah HNDstand W01CenTract HNDmarch        dob Age0 Age0grp Sex Race PovStat HseHldEducation FamilyIncome HouseholdIncome HseHldIncomeCat
1 8031079801         AHO                  1   1   0   0   0   0   0      803      240100        0 1940-08-28   63       7   0    0       0              11            7              97              97
2 8031107801         HAO                  4   0   0   0   1   0   0      803      240100        0 1941-08-02   63       7   1    0       0              11            0              23              23
3 8031107802         OAH                  6   0   0   0   0   0   1      803      240100        0 1951-09-06   53       5   0    0       0              12            0              23              23
4 8031117901         OHA                  5   0   0   0   0   1   0      803      240100        0 1964-03-09   40       3   1    0       0              20            0              23              23
5 8031117902         AHO                  1   1   0   0   0   0   0      803      240100        0 1967-01-23   37       2   0    0       0              18            0              22              22
6 8031136901         HAO                  4   0   0   0   1   0   0      803      240100        0 1948-06-07   56       6   1    0       0               9            0              19              19
  SEScommunity SEScountry YrsinHouse  Gini MarginofError Gini100 MedianHHincomeCT MedianFamilyincomeCT TotalPop WhitePop BlackPop BlackWhite PercentBlack RateNeighborhood CrimePrev SeriousCrime
1            4          6          9 0.375         0.041    37.5            86042                88702     2474     2295       80    0.03486        3.234                4         2            2
2            5          5          2 0.375         0.041    37.5            86042                88702     2474     2295       80    0.03486        3.234                1         1            2
3            8          5          1 0.375         0.041    37.5            86042                88702     2474     2295       80    0.03486        3.234                1         2            1
4            7          5          1 0.375         0.041    37.5            86042                88702     2474     2295       80    0.03486        3.234                4         2            1
5            7          7          1 0.375         0.041    37.5            86042                88702     2474     2295       80    0.03486        3.234                4         2            2
6            6          5         10 0.375         0.041    37.5            86042                88702     2474     2295       80    0.03486        3.234                2         1            3
  Calcium_d1 Magnesium_d1 Potassium_d1 Sodium_d1 energy_d1 Calcium_d2 Magnesium_d2 Potassium_d2 Sodium_d2 energy_d2 average_Calcium average_Magnesium average_Potassium average_sodium average_energy
1     1331.4       546.23         6028      8693      3652     1378.2       359.26       3324.2    2335.4    1879.4          1354.8            452.75              4676           5514         2765.7
2      451.2        86.76         1046      1653      1124      154.7        67.92        582.4     889.4     778.7           303.0             77.34               814           1271          951.5
3      892.0       345.15         3565      5839      3092      676.2       209.74       2372.6    3601.9    2312.5           784.1            277.45              2969           4721         2702.1
4      514.2       205.71         1818      2647      1462     1931.4       637.66       7667.6    6364.1    8530.8          1222.8            421.68              4743           4506         4996.6
5      448.7       252.18         2369      2106      1774      896.6       370.09       2662.7    2282.4    1713.6           672.7            311.14              2516           2194         1743.9
6      668.3       165.71         2348      1957      1661      379.6       125.79       1685.6    1260.0    1266.1           523.9            145.75              2017           1609         1463.5
  PsyPhysHouston MedHxAlcStatus MedHxOpiateStatus MedHxCokeStatus MedHxMarijStatus MedHxCigaretteStatus AlcoholCurrent SmokingCurrent Opiate_dich Coke_dich Marij_dich AnyDrugsCurrent hiv htn
1              1              0                 0               0                0                    0              0              0           0         0          0               0   0   0
2             NA              0                 0               0                0                    0              0              0           0         0          0               0   0   1
3              5              0                 0               0                0                    0              0              0           0         0          0               0   0   0
4              7              0                 0               0                0                    0              0              0           0         0          0               0   0   0
5              7              0                 0               0                0                    0              0              0           0         0          0               0   0   0
6              1              0                 0               0                0                    0              0              0           0         0          0               0   0   1
  Hyperlipidemia PhysWaistSize PhysHipSize PhysWHR PhysWeight PhysHeight PhysBMI   bsa PhysRespRate PhysRespPatt PhysBPsitRsys PhysBPsitRdia PhysBPsitLsys PhysBPsitLdia PhysBPstandRsys
1              1           104         127  0.8189         95        175   31.02 2.104           18            0           130            80           130            80             150
2              1            94         106  0.8868         77        165   28.28 1.844           16            0           160            84           160            80             170
3              1           115         120  0.9583         96        160   37.50 1.981           16            0           130            70           130            70             140
4              0            95         101  0.9406         84        180   25.93 2.038           18            0           126            84           124            84             149
5              0            76          98  0.7755         58        158   23.23 1.584           18            0            96            60            90            62             108
6              1           114         115  0.9913         98        178   30.93 2.159           18            0           190            90           190            90             200
  PhysBPstandRdia PhysBPstandLsys PhysBPstandLdia  homa diabetes diabetesHx diabetesDx diabetesRx LabFasting LabResInsulin LabResHgbA1C LabResGlucose LabResNa mrrbase sdrrbase mhrbase sdhrbase
1              96             140              90 9.615        1         NA          2          0          1          22.0        7.100           177      139   604.7    59.95      NA   10.731
2              90             170              90 1.521        0         NA          1          0          1           6.1        5.100           101      141  1101.9    14.41   54.47    1.030
3              76             140              76 2.553        0         NA          0          0          1          11.0        5.699            94      139   802.0    28.79   74.97    3.146
4               0             140              90 1.099        0         NA          0          0          1           5.0        5.199            89      141      NA    74.58   48.97    4.471
5              70             110              70 1.738        0         NA          0          0          1           8.0        5.399            88      140   772.0    68.32   78.78    7.391
6             100             200             100 5.086        0         NA          1          0          1          20.0        5.699           103      139   950.2    21.44   63.28    1.902
  rmssdbas pnn50bas phfbase abslfbas abshfbas loglfbas loghfbas lhrbase sd1base sd2base apenbase sampenba PsyPhysBaselineBPsys PsyPhysBaselineBPdia PsyPhysBaselineHR PsyPhysBaselineIBI
1    49.87  27.9749  0.2656   2282.4  1431.55    7.733    7.267   1.594   35.51   89.47   1.2274    1.510                146.4                88.66            100.08             0.6299
2    15.53   0.7634  0.2812    120.5    52.43    4.791    3.959   2.298   11.13   32.19   0.9970    1.373                139.6                74.53             54.69             1.0999
3    26.39   2.9491  0.2500    487.2   265.90    6.189    5.583   1.832   18.83   47.05   1.0393    1.888                124.6                60.02             74.91             0.7999
4    48.35  27.6265  0.3125   5053.3   131.38    8.528    4.878      NA   35.69  165.37   0.8648    1.073                126.1                84.52             51.72             1.2000
5    47.92  26.1965  0.2305   4416.7  1029.12    8.393    6.936   4.292   34.16  124.30   1.0971    1.377                108.1                66.19             78.73             0.7699
6    22.22   2.4691  0.2344    283.5   181.23    5.647    5.200   1.564   15.88   61.25   0.6226    1.585                153.7                84.05             63.94             0.9500
  PsyPhysBaselineTPR PsyPhysBaselineCardOutput PsyPhysBaselineMAP PsyPhysBaselineSV PsyPhysBaselineAC PsyPhysBaselineET restingSVindex restingTPRindex restingCOindex PsyPhysOrthostasisBPsys
1             1.2998                     5.689             110.69             57.62              1.29            0.2599          27.38          0.6177          2.704                   141.6
2             1.2100                     5.029             100.98             92.44              1.56            0.3600          50.12          0.6561          2.727                   146.7
3             0.4900                    10.459              85.12            139.81              2.54            0.3100          70.59          0.2474          5.280                   128.3
4             1.7100                     3.680             101.88             72.38              2.14            0.3400          35.51          0.8389          1.805                   126.2
5             0.9299                     5.579              86.02             71.72              1.88            0.2900          45.27          0.5870          3.521                   106.4
6             1.1099                     6.069             108.30             95.52              1.82            0.2900          44.25          0.5141          2.812                   173.1
  PsyPhysOrthostasisBPdia PsyPhysOrthostasisHR PsyPhysOrthostasisIBI PsyPhysOrthostasisTPR PsyPhysOrthostasisCardOutput PsyPhysOrthostasisMAP PsyPhysOrthostasisSV PsyPhysOrthostasisAC
1                   86.05               102.58                0.6200                1.2400                        5.590                106.11                56.27                 1.36
2                   73.94                62.84                0.9600                0.9600                        6.489                103.02               103.56                 1.58
3                   66.20                90.17                0.6699                0.5599                        9.488                 88.16               105.45                 2.29
4                   77.77                68.94                0.8799                0.9900                        6.029                 97.89                88.08                 2.40
5                   69.00                86.22                0.7000                1.0098                        5.140                 86.28                59.93                 1.82
6                   96.08                70.69                0.8500                1.3198                        5.590                122.06                79.38                 1.44
  PsyPhysOrthostasisET PsyPhysOrthoRecovBPsys PsyPhysOrthoRecovBPdia PsyPhysOrthoRecovHR PsyPhysOrthoRecovIBI PsyPhysOrthoRecovTPR PsyPhysOrthoRecovCardOutput PsyPhysOrthoRecovMAP PsyPhysOrthoRecovSV
1               0.2300                  140.0                  84.08               97.88               0.6499                 1.22                       5.720               104.80               59.47
2               0.3199                  154.7                  75.66               55.45               1.0898                 1.08                       5.939               106.42              107.58
3               0.2500                  128.8                  61.69               77.19               0.7799                 0.49                      10.670                87.30              138.69
4               0.2800                  126.8                  81.05               60.48               1.0198                 1.25                       4.960               100.22               84.02
5               0.2700                  110.9                  70.25               78.83               0.7699                 1.07                       5.060                89.19               64.98
6               0.2599                  152.0                  87.42               66.27               0.9199                 1.27                       5.369               109.94               81.58
  PsyPhysOrthoRecovAC PsyPhysOrthoRecovET PsyPhysAngerThinkBPsys PsyPhysAngerThinkBPdia PsyPhysAngerThinkHR PsyPhysAngerThinkIBI PsyPhysAngerThinkTPR PsyPhysAngerThinkCardOutput PsyPhysAngerThinkMAP
1                1.42                0.24                  152.7                  90.86               99.75               0.6200               1.2400                       5.880               114.45
2                1.52                0.35                  158.7                  74.77               57.55               1.0498               0.9500                       6.789               106.80
3                2.47                0.30                  145.8                  68.56               74.17               0.8099               0.5399                      10.939                98.73
4                2.27                0.31                  118.6                  78.77               60.50               1.0198               1.3198                       4.460                96.05
5                1.79                0.29                  115.0                  68.19               71.80               0.8600               1.0198                       5.390                89.33
6                1.70                0.28                  157.7                  88.95               60.26               1.0000               1.2798                       5.340               113.08
  PsyPhysAngerThinkSV PsyPhysAngerThinkAC PsyPhysAngerThinkET PsyPhysAngerSpeakBPsys PsyPhysAngerSpeakBPdia PsyPhysAngerSpeakHR PsyPhysAngerSpeakIBI PsyPhysAngerSpeakTPR PsyPhysAngerSpeakCardOutput
1               59.48                1.23              0.2599                  170.1                  99.72              105.19               0.6000               1.4600                       5.680
2              118.36                1.55              0.3500                  165.4                  80.62               58.01               1.0498               1.1399                       6.149
3              147.47                2.20              0.3100                  159.1                  77.45               81.30               0.7400               0.6399                      10.359
4               74.98                2.36              0.3000                  121.6                  82.36               63.16               0.9700               1.4399                       4.189
5               76.86                1.84              0.3000                  118.7                  73.88               79.97               0.7599               1.0698                       5.420
6               88.78                1.64              0.3100                  163.7                  93.80               64.75               0.9399               1.4199                       5.130
  PsyPhysAngerSpeakMAP PsyPhysAngerSpeakSV PsyPhysAngerSpeakAC PsyPhysAngerSpeakET PsyPhysAngerRecovBPsys PsyPhysAngerRecovBPdia PsyPhysAngerRecovHR PsyPhysAngerRecovIBI PsyPhysAngerRecovTPR
1               126.58               55.26                1.03                0.25                  135.9                  80.75               97.91               0.6399               1.0398
2               113.62              107.28                1.39                0.34                  187.0                  90.11               60.41               1.0098               1.3198
3               109.66              127.62                1.88                0.29                  139.2                  67.67               81.91               0.7400               0.5399
4                99.25               67.58                2.22                0.29                  116.2                  75.84               58.97               1.0398               1.2300
5                94.75               68.22                1.70                0.30                  107.0                  67.41               74.55               0.8199               1.0698
6               118.75               80.27                1.51                0.30                  181.2                  95.80               63.47               0.9500               1.2998
  PsyPhysAngerRecovCardOutput PsyPhysAngerRecovMAP PsyPhysAngerRecovSV PsyPhysAngerRecovAC PsyPhysAngerRecovET PsyPhysHappyThinkBPsys PsyPhysHappyThinkBPdia PsyPhysHappyThinkHR PsyPhysHappyThinkIBI
1                       6.359               101.78               65.83                1.53              0.2599                  142.6                  83.47               98.30               0.6299
2                       5.909               127.70               99.06                1.17              0.3500                  166.4                  79.42               56.83               1.0698
3                      11.010                95.89              135.75                2.24              0.3000                  141.9                  64.80               76.25               0.7899
4                       4.680                93.00               80.28                2.48              0.3000                  125.6                  82.41               49.77               1.2200
5                       4.850                85.22               65.77                1.86              0.3000                  105.4                  66.52               75.47               0.7999
6                       5.859               124.94               92.69                1.45              0.3000                  163.4                  88.66               59.83               1.0000
  PsyPhysHappyThinkTPR PsyPhysHappyThinkCardOutput PsyPhysHappyThinkMAP PsyPhysHappyThinkSV PsyPhysHappyThinkAC PsyPhysHappyThinkET PsyPhysHappySpeakBPsys PsyPhysHappySpeakBPdia PsyPhysHappySpeakHR
1                 1.08                       6.520               106.41               67.06                1.44                0.25                  163.0                  93.38              101.44
2                 1.15                       6.220               113.55              109.72                1.41                0.35                  175.3                  86.25               63.58
3                 0.47                      12.229                95.45              160.59                2.35                0.31                  149.6                  73.80               81.58
4                 1.58                       3.810                99.88               77.38                2.21                0.33                  121.4                  82.91               62.48
5                 1.03                       4.939                84.52               65.95                1.88                0.29                  108.5                  69.36               80.70
6                 1.21                       5.729               115.38               95.69                1.65                0.31                  174.6                  94.80               66.00
  PsyPhysHappySpeakIBI PsyPhysHappySpeakTPR PsyPhysHappySpeakCardOutput PsyPhysHappySpeakMAP PsyPhysHappySpeakSV PsyPhysHappySpeakAC PsyPhysHappySpeakET PsyPhysHappyRecovBPsys PsyPhysHappyRecovBPdia
1               0.6200                 1.23                       6.270               119.61               62.95                1.17                0.25                  143.2                  88.44
2               0.9900                 1.26                       5.949               121.39               98.34                1.26                0.34                  171.9                  83.06
3               0.7400                 0.60                      10.658               104.20              131.19                2.01                0.29                  158.5                  78.12
4               1.0000                 1.44                       4.279                99.50               69.47                2.19                0.31                  118.5                  80.23
5               0.7500                 1.05                       5.020                87.39               63.09                1.81                0.29                  108.0                  67.53
6               0.9299                 1.33                       5.850               122.88               89.75                1.48                0.29                  158.1                  88.05
  PsyPhysHappyRecovHR PsyPhysHappyRecovIBI PsyPhysHappyRecovTPR PsyPhysHappyRecovCardOutput PsyPhysHappyRecovMAP PsyPhysHappyRecovSV PsyPhysHappyRecovAC PsyPhysHappyRecovET ces CEScut16 CEScut20
1               98.61               0.6399               1.3098                       5.409               109.27               55.55                1.29              0.2599   6        0        0
2               58.86               1.0398               1.1899                       6.060               116.80              104.05                1.34              0.3500  25        1        1
3               81.91               0.7400               0.6699                      10.180               110.22              125.02                1.86              0.2900   2        0        0
4               58.95               1.0598               1.4600                       4.090                96.47               70.75                2.30              0.3100   7        0        0
5               77.72               0.7899               1.0498                       5.140                86.31               66.77                1.86              0.2900   7        0        0
6               63.95               0.9500               1.2000                       5.720               112.55               90.36                1.68              0.3000  15        0        0
  CES01 CES02 CES03 CES04 CES05 CES06 CES07 CES08 CES09 CES10 CES11 CES12 CES13 CES14 CES15 CES16 CES17 CES18 CES19 CES20 acasiReact01 acasiReact02 acasiReact03 acasiReact04 acasiReact05 acasiReact06
1     2     0     0     3     0     1     0     3     0     0     2     3     0     0     0     3     0     1     0     0            0            0            0            0            0            0
2     1     1     2     2     2     1     1     2     1     1     3     3     2     2     2     3     0     1     1     2            0            4            0            4            1            1
3     0     0     0     3     0     0     0     3     0     0     1     3     1     0     0     3     0     0     0     0            1            1            1            3            1            3
4     0     1     0     2     0     1     0     2     0     0     0     3     0     0     0     3     0     1     1     1            2            1            3            1            4            1
5     1     0     0     3     1     1     1     3     0     0     0     3     1     0     0     3     0     1     0     1            1            1            1            4            2            1
6     3     1     1     3     2     1     1     3     0     1     2     2     1     0     0     3     0     1     0     0            3            0            4            0            4            0
  acasiPerStr1 acasiPerStr2 acasiPerStr3 acasiPerStr4 acasiVig acasiVig1 acasiVig2 acasiPerStr acasiAnger acasiPDSQanx acasiEmoSup acasiInsSup HseHldSF12PCS HseHldSF12MCS LabResK LabResCalcium
1            0            0            3            0       12        12         0           5         12            1          18           8         50.07         52.48   4.199         8.799
2            0            0            4            1       20        11         9           5          4            0          15           8         29.72         64.12   4.199         8.500
3            0            4            4            1       16         9         7           1          7            1          26           6         36.94         54.34   4.000         8.699
4            1            3            2            1        6         3         3           5         11            0          18          17         58.55         49.30   4.100         8.799
5            1            4            2            2       14         8         6           5          3            1          18          16         59.10         54.09   4.100         8.898
6            2            3            3            1        1         1         0           5          8            1          28           7         37.11         43.84   4.199         8.398
  LabResCa2 LabResMg LabResCl LabResCO2 LabResCreatinine LabResUpH LabResUCreatinine LabResChol LabResLDLcalc LabResHDL LabResTriglyc LabResRBC LabResHgb LabResHct LabResWBC LabResAlbumin LabResCRP
1        NA      1.9      102        26           0.8999       5.5                NA        254         181.2        37           179     5.199      15.2     45.50     8.398           4.1        NA
2        NA      2.0      104        29           1.2998       5.0                NA        236         118.4        42           378     4.399      13.3     39.80     5.300           3.9        NA
3        NA      1.9       99        29           1.2998       7.0                NA        293         226.0        45           110     4.199      13.1     38.59     5.100           4.1        NA
4        NA      1.8      101        29           1.2000       5.5                NA        199         120.8        60            91     4.199      14.2     43.20     3.900           4.1        NA
5        NA      1.8      103        25           1.0000       6.5                NA        204         110.4        75            93     4.500      14.1     42.90     5.500           4.1        NA
6        NA      1.9      103        23           2.2998       5.5                NA        192         124.6        38           147     4.500      14.4     42.90     7.000           4.0        NA
  MedHxCVhtn MedHxCVchf MedHxCVheartLarge MedHxCVangina MedHxCVmi MedHxCVcad MedHxCVmurmur MedHxCVvalveLeak MedHxCVaFib MedHxCVheartInfect MedHxCVrheumHeart MedHxCVmitralValve MedHxCVtia
1          0          0                 0             0         0          0             0                0           0                  0                 0                  0          0
2          0          0                 0             0         0          0             0                0           0                  0                 0                  0          0
3          0          0                 0             0         0          0             0                0           0                  0                 0                  0          0
4          0          0                 0             0         0          0             0                0           0                  0                 0                  0          0
5          0          0                 0             0         0          0             0                0           0                  0                 0                  0          0
6          0          0                 0             0         0          0             0                0           0                  0                 0                  0          0
  MedHxCVstroke MedHxCVclaudication MedHxCVdvt MedHxCVaneurysm MedHxSurgCABG MedHxSurgEndart MedHxSurgAngioHeart MedHxAnxietyDisorder MedHxADD MedHxDepression MedHxSuicidality MedHxBipolarDisorder
1             0                   0          0               0             0               0                   0                    0        0               0                0                    0
2             0                   0          0               0             0               0                   0                    0        0               0                0                    0
3             0                   0          0               0             0               0                   0                    0        0               0                0                    0
4             0                   0          0               0             0               0                   0                    0        0               0                0                    0
5             0                   0          0               0             0               0                   0                    0        0               0                0                    0
6             0                   0          0               0             0               0                   0                    0        0               0                0                    0
  MedHxSchizophrenia MedHxDiabetes MedHxSleepApnea MedHxDiabetesYear MedHxMenopAge MedHxSurgHysterectomy MedHxSurgHysterectomyYear MedHxAllergyDrugs MedHxMeningitis MedHxTuberculosis MedHxHIVorAIDS
1                  0             0               0                 0             0                     0                         0                 0               0                 0              0
2                  0             0               0                 0             0                     0                         0                 0               0                 0              0
3                  0             0               0                 0             0                     0                         0                 0               0                 0              0
4                  0             0               0                 0             0                     0                         0                 0               0                 0              0
5                  0             0               0                 0             0                     0                         0                 0               0                 0              0
6                  0             0               0                 0             0                     0                         0                 0               0                 0              0
  MedHxHepatitis MedHxCVA MedHxAneurysm MedHxBrain MedHxBreast MedHxEsophagus MedHxStomach MedHxColon MedHxRectum MedHxLiver MedHxSkin MedHxBone MedHxMultipleMyeloma MedHxLeukemiaLymphoma MedHxLung
1              0        0             0          0           0              0            0          0           0          0         0         0                    0                     0         0
2              0        0             0          0           0              0            0          0           0          0         0         0                    0                     0         0
3              0        0             0          0           0              0            0          0           0          0         0         0                    0                     0         0
4              0        0             0          0           0              0            0          0           0          0         0         0                    0                     0         0
5              0        0             0          0           0              0            0          0           0          0         0         0                    0                     0         0
6              0        0             0          0           0              0            0          0           0          0         0         0                    0                     0         0
  MedHxProstate MedHxTesticular MedHxCervix MedHxOvary MedHxLupus MedHxAlzheimersDisease MedHxDementiaAny MedHxParkinsonDisease MedHxMultipleSclerosis MedHxEpilepsy MedHxBreastCancL MedHxBreastCancR
1             0               0           0          0          0                      0                0                     0                      0             0                0                0
2             0               0           0          0          0                      0                0                     0                      0             0                0                0
3             0               0           0          0          0                      0                0                     0                      0             0                0                0
4             0               0           0          0          0                      0                0                     0                      0             0                0                0
5             0               0           0          0          0                      0                0                     0                      0             0                0                0
6             0               0           0          0          0                      0                0                     0                      0             0                0                0
  MedHxThryroidDisorder MedHxKidneyDisease MedHxHeadInjury RxDiabetes RxHRT RxMI RxAngina RxStroke RxPsycho RxpainRel RxHTN RxAntiHypany RxAntiHypCA RxAntiHypBB RxAntiHypCCB RxAntiHypACE RxAntiHypDr
1                     0                  0               0         NA     0    0        0        0        0         0     0            0           0           0            0            0           0
2                     0                  0               0         NA     0    0        0        0        0         0     0            0           0           0            0            0           0
3                     0                  0               0         NA     0    0        0        0        0         0     0            0           0           0            0            0           0
4                     0                  0               0         NA     0    0        0        0        0         0     0            0           0           0            0            0           0
5                     0                  0               0         NA     0    0        0        0        0         0     0            0           0           0            0            0           0
6                     0                  0               0          0     0    0        1        1        1         0     1            0           0           0            0            0           0
  RxAntiHypVd RxAntiHypAB RxCholesterolany RxPsychoTany Rxantianxiety Rxanticonvulsants Rxantidepressants Rxantipsychotics Rxsedatives Rxsleepaid RxPainRelany Rxreliefofpain RxanalgesicsGeneral
1           0           0                0            0             0                 0                 0                0           0          0            0              0                   0
2           0           0                0            0             0                 0                 0                0           0          0            0              0                   0
3           0           0                0            0             0                 0                 0                0           0          0            0              0                   0
4           0           0                0            0             0                 0                 0                0           0          0            0              0                   0
5           0           0                0            0             0                 0                 0                0           0          0            0              0                   0
6           0           0                0            1             0                 0                 1                0           0          0            0              0                   0
  RxanalgesicsNarcotic RxanalgesicsNonnarcotic RxPulmonany RxPulmonaPainrelief RxPulmonaAnalgesic RxCNSany RxCNS rxHypercholesterolemia RxAnorexiants CardiovascularCluster CancerCluster
1                    0                       0           0                   0                  0        0     0                      0             0                     0             0
2                    0                       0           0                   0                  0        0     0                      0             0                     0             0
3                    0                       0           0                   0                  0        0     0                      0             0                     0             0
4                    0                       0           0                   0                  0        0     0                      0             0                     0             0
5                    0                       0           0                   0                  0        0     0                      0             0                     0             0
6                    0                       0           0                   0                  0        0     0                      1             0                     0             0
  PsychologicalCluster MetabolicCluster ImmuneCluster NeurologicalCluster CardiovascularSum PsychologicalSum MetabolicSum CancerSum CensusTract
1                    0                1             0                   0                 0                0            1         0      240100
2                    0                0             0                   0                 0                0            0         0      240100
3                    0                0             0                   0                 0                0            0         0      240100
4                    0                0             0                   0                 0                0            0         0      240100
5                    0                0             0                   0                 0                0            0         0      240100
6                    0                0             0                   0                 0                0            0         0      240100

TestData$cBal = factor(TestData$Counterbalance_num, levels = 1:6, labels = c("AHO", "AOH", "HOA", "HAO", "OHA", "OAH"))

with(TestData, table(Counterbalance_num, cBal))
                  cBal
Counterbalance_num AHO AOH HOA HAO OHA OAH
                 1 153   0   0   0   0   0
                 2   0  49   0   0   0   0
                 3   0   0  51   0   0   0
                 4   0   0   0 139   0   0
                 5   0   0   0   0 140   0
                 6   0   0   0   0   0 144

table(TestData$cBal)

AHO AOH HOA HAO OHA OAH 
153  49  51 139 140 144 

conditions = zQ(Baseline, Orthostasis, OrthoRecov, AngerThink, AngerSpeak, AngerRecov, HappyThink, HappySpeak, HappyRecov)
conNames = zQ(Baseline, OrthoStand, OrthoRecover, AngryThink, AngrySpeak, AngryRecovery, HappyThink, HappySpeak, HappyRecovery)
measures = zQ(BPsys, BPdia, HR, IBI, TPR, CardOutput, MAP, SV, AC, ET)
uniqIdent = zQ(HNDid, Counterbalance_num, cBal)
allMeasure = c(zQ(HNDid, cNum, cBal), measures, zQ(conIdx, ConNam))

xond = list()

for (i in seq_along(conditions)) {
    accum = uniqIdent

    for (j in seq_along(measures)) {
        accum[j + 3] = paste0("PsyPhys", conditions[i], measures[j])
    }

    xond[[i]] = accum
}

xond
[[1]]
 [1] "HNDid"                     "Counterbalance_num"        "cBal"                      "PsyPhysBaselineBPsys"      "PsyPhysBaselineBPdia"      "PsyPhysBaselineHR"         "PsyPhysBaselineIBI"       
 [8] "PsyPhysBaselineTPR"        "PsyPhysBaselineCardOutput" "PsyPhysBaselineMAP"        "PsyPhysBaselineSV"         "PsyPhysBaselineAC"         "PsyPhysBaselineET"        

[[2]]
 [1] "HNDid"                        "Counterbalance_num"           "cBal"                         "PsyPhysOrthostasisBPsys"      "PsyPhysOrthostasisBPdia"      "PsyPhysOrthostasisHR"        
 [7] "PsyPhysOrthostasisIBI"        "PsyPhysOrthostasisTPR"        "PsyPhysOrthostasisCardOutput" "PsyPhysOrthostasisMAP"        "PsyPhysOrthostasisSV"         "PsyPhysOrthostasisAC"        
[13] "PsyPhysOrthostasisET"        

[[3]]
 [1] "HNDid"                       "Counterbalance_num"          "cBal"                        "PsyPhysOrthoRecovBPsys"      "PsyPhysOrthoRecovBPdia"      "PsyPhysOrthoRecovHR"        
 [7] "PsyPhysOrthoRecovIBI"        "PsyPhysOrthoRecovTPR"        "PsyPhysOrthoRecovCardOutput" "PsyPhysOrthoRecovMAP"        "PsyPhysOrthoRecovSV"         "PsyPhysOrthoRecovAC"        
[13] "PsyPhysOrthoRecovET"        

[[4]]
 [1] "HNDid"                       "Counterbalance_num"          "cBal"                        "PsyPhysAngerThinkBPsys"      "PsyPhysAngerThinkBPdia"      "PsyPhysAngerThinkHR"        
 [7] "PsyPhysAngerThinkIBI"        "PsyPhysAngerThinkTPR"        "PsyPhysAngerThinkCardOutput" "PsyPhysAngerThinkMAP"        "PsyPhysAngerThinkSV"         "PsyPhysAngerThinkAC"        
[13] "PsyPhysAngerThinkET"        

[[5]]
 [1] "HNDid"                       "Counterbalance_num"          "cBal"                        "PsyPhysAngerSpeakBPsys"      "PsyPhysAngerSpeakBPdia"      "PsyPhysAngerSpeakHR"        
 [7] "PsyPhysAngerSpeakIBI"        "PsyPhysAngerSpeakTPR"        "PsyPhysAngerSpeakCardOutput" "PsyPhysAngerSpeakMAP"        "PsyPhysAngerSpeakSV"         "PsyPhysAngerSpeakAC"        
[13] "PsyPhysAngerSpeakET"        

[[6]]
 [1] "HNDid"                       "Counterbalance_num"          "cBal"                        "PsyPhysAngerRecovBPsys"      "PsyPhysAngerRecovBPdia"      "PsyPhysAngerRecovHR"        
 [7] "PsyPhysAngerRecovIBI"        "PsyPhysAngerRecovTPR"        "PsyPhysAngerRecovCardOutput" "PsyPhysAngerRecovMAP"        "PsyPhysAngerRecovSV"         "PsyPhysAngerRecovAC"        
[13] "PsyPhysAngerRecovET"        

[[7]]
 [1] "HNDid"                       "Counterbalance_num"          "cBal"                        "PsyPhysHappyThinkBPsys"      "PsyPhysHappyThinkBPdia"      "PsyPhysHappyThinkHR"        
 [7] "PsyPhysHappyThinkIBI"        "PsyPhysHappyThinkTPR"        "PsyPhysHappyThinkCardOutput" "PsyPhysHappyThinkMAP"        "PsyPhysHappyThinkSV"         "PsyPhysHappyThinkAC"        
[13] "PsyPhysHappyThinkET"        

[[8]]
 [1] "HNDid"                       "Counterbalance_num"          "cBal"                        "PsyPhysHappySpeakBPsys"      "PsyPhysHappySpeakBPdia"      "PsyPhysHappySpeakHR"        
 [7] "PsyPhysHappySpeakIBI"        "PsyPhysHappySpeakTPR"        "PsyPhysHappySpeakCardOutput" "PsyPhysHappySpeakMAP"        "PsyPhysHappySpeakSV"         "PsyPhysHappySpeakAC"        
[13] "PsyPhysHappySpeakET"        

[[9]]
 [1] "HNDid"                       "Counterbalance_num"          "cBal"                        "PsyPhysHappyRecovBPsys"      "PsyPhysHappyRecovBPdia"      "PsyPhysHappyRecovHR"        
 [7] "PsyPhysHappyRecovIBI"        "PsyPhysHappyRecovTPR"        "PsyPhysHappyRecovCardOutput" "PsyPhysHappyRecovMAP"        "PsyPhysHappyRecovSV"         "PsyPhysHappyRecovAC"        
[13] "PsyPhysHappyRecovET"        

narrow = data.frame()

for (i in 1:nrow(TestData)) {
    df = as.data.frame(TestData[i, xond[[1]]], stringsAsFactors = F)
    df = cbind(df, data.frame(conIdx = 1, conNam = conNames[1], stringsAsFactors = F))
    names(df) = allMeasure

    for (j in 2:length(conditions)) {
        dfmore = as.data.frame(TestData[i, xond[[j]]])
        dfmore = cbind(dfmore, data.frame(conIdx = j, conNam = conNames[j], stringsAsFactors = F))
        names(dfmore) = allMeasure
        df = rbind(df, dfmore)
    }

    df.cBal = as.character(df$cBal[1])
    df = merge(df, xBalTime[[df.cBal]][which(xBalTime[[df.cBal]]$meas %in% conNames), ], by.x = "ConNam", by.y = "meas")
    narrow = rbind(narrow, df)
}

narrow = narrow[, c(zQ(HNDid, cNum, cBal), zQ(conIdx, ConNam, n, dur, cum), measures)]
names(narrow) = c(zQ(HNDid, cNum, cBal), zQ(conIdx, ConNam, datIdx, datDur, datCum), measures)

head(narrow, n = 20)
        HNDid cNum cBal conIdx        ConNam datIdx datDur datCum BPsys BPdia     HR    IBI    TPR CardOutput    MAP     SV   AC     ET
1  8031079801    1  AHO      6 AngryRecovery      6      8     21 135.9 80.75  97.91 0.6399 1.0398      6.359 101.78  65.83 1.53 0.2599
2  8031079801    1  AHO      5    AngrySpeak      4      3     12 170.1 99.72 105.19 0.6000 1.4600      5.680 126.58  55.26 1.03 0.2500
3  8031079801    1  AHO      4    AngryThink      3      2      9 152.7 90.86  99.75 0.6200 1.2400      5.880 114.45  59.48 1.23 0.2599
4  8031079801    1  AHO      1      Baseline      1      5      5 146.4 88.66 100.08 0.6299 1.2998      5.689 110.69  57.62 1.29 0.2599
5  8031079801    1  AHO      9 HappyRecovery     11      8     37 143.2 88.44  98.61 0.6399 1.3098      5.409 109.27  55.55 1.29 0.2599
6  8031079801    1  AHO      8    HappySpeak      9      3     28 163.0 93.38 101.44 0.6200 1.2300      6.270 119.61  62.95 1.17 0.2500
7  8031079801    1  AHO      7    HappyThink      8      2     25 142.6 83.47  98.30 0.6299 1.0798      6.520 106.41  67.06 1.44 0.2500
8  8031079801    1  AHO      3  OrthoRecover     13      8     50 140.0 84.08  97.88 0.6499 1.2200      5.720 104.80  59.47 1.42 0.2400
9  8031079801    1  AHO      2    OrthoStand     12      5     42 141.6 86.05 102.58 0.6200 1.2400      5.590 106.11  56.27 1.36 0.2300
10 8031107801    4  HAO      6 AngryRecovery     11      8     37 187.0 90.11  60.41 1.0098 1.3198      5.909 127.70  99.06 1.17 0.3500
11 8031107801    4  HAO      5    AngrySpeak      9      3     28 165.4 80.62  58.01 1.0498 1.1399      6.149 113.62 107.28 1.39 0.3400
12 8031107801    4  HAO      4    AngryThink      8      2     25 158.7 74.77  57.55 1.0498 0.9500      6.789 106.80 118.36 1.55 0.3500
13 8031107801    4  HAO      1      Baseline      1      5      5 139.6 74.53  54.69 1.0999 1.2100      5.029 100.98  92.44 1.56 0.3600
14 8031107801    4  HAO      9 HappyRecovery      6      8     21 171.9 83.06  58.86 1.0398 1.1899      6.060 116.80 104.05 1.34 0.3500
15 8031107801    4  HAO      8    HappySpeak      4      3     12 175.3 86.25  63.58 0.9900 1.2598      5.949 121.39  98.34 1.26 0.3400
16 8031107801    4  HAO      7    HappyThink      3      2      9 166.4 79.42  56.83 1.0698 1.1499      6.220 113.55 109.72 1.41 0.3500
17 8031107801    4  HAO      3  OrthoRecover     13      8     50 154.7 75.66  55.45 1.0898 1.0798      5.939 106.42 107.58 1.52 0.3500
18 8031107801    4  HAO      2    OrthoStand     12      5     42 146.7 73.94  62.84 0.9600 0.9600      6.489 103.02 103.56 1.58 0.3199
19 8031107802    6  OAH      6 AngryRecovery      8      8     34 139.2 67.67  81.91 0.7400 0.5399     11.010  95.89 135.75 2.24 0.3000
20 8031107802    6  OAH      5    AngrySpeak      6      3     25 159.1 77.45  81.30 0.7400 0.6399     10.359 109.66 127.62 1.88 0.2900

head(narrow[order(narrow$HNDid, narrow$conIdx), 1:9], n = 50)
        HNDid cNum cBal conIdx        ConNam datIdx datDur datCum BPsys
4  8031079801    1  AHO      1      Baseline      1      5      5 146.4
9  8031079801    1  AHO      2    OrthoStand     12      5     42 141.6
8  8031079801    1  AHO      3  OrthoRecover     13      8     50 140.0
3  8031079801    1  AHO      4    AngryThink      3      2      9 152.7
2  8031079801    1  AHO      5    AngrySpeak      4      3     12 170.1
1  8031079801    1  AHO      6 AngryRecovery      6      8     21 135.9
7  8031079801    1  AHO      7    HappyThink      8      2     25 142.6
6  8031079801    1  AHO      8    HappySpeak      9      3     28 163.0
5  8031079801    1  AHO      9 HappyRecovery     11      8     37 143.2
13 8031107801    4  HAO      1      Baseline      1      5      5 139.6
18 8031107801    4  HAO      2    OrthoStand     12      5     42 146.7
17 8031107801    4  HAO      3  OrthoRecover     13      8     50 154.7
12 8031107801    4  HAO      4    AngryThink      8      2     25 158.7
11 8031107801    4  HAO      5    AngrySpeak      9      3     28 165.4
10 8031107801    4  HAO      6 AngryRecovery     11      8     37 187.0
16 8031107801    4  HAO      7    HappyThink      3      2      9 166.4
15 8031107801    4  HAO      8    HappySpeak      4      3     12 175.3
14 8031107801    4  HAO      9 HappyRecovery      6      8     21 171.9
22 8031107802    6  OAH      1      Baseline      1      5      5 124.6
27 8031107802    6  OAH      2    OrthoStand      2      5     10 128.3
26 8031107802    6  OAH      3  OrthoRecover      3      8     18 128.8
21 8031107802    6  OAH      4    AngryThink      5      2     22 145.8
20 8031107802    6  OAH      5    AngrySpeak      6      3     25 159.1
19 8031107802    6  OAH      6 AngryRecovery      8      8     34 139.2
25 8031107802    6  OAH      7    HappyThink     10      2     38 141.9
24 8031107802    6  OAH      8    HappySpeak     11      3     41 149.6
23 8031107802    6  OAH      9 HappyRecovery     13      8     50 158.5
31 8031117901    5  OHA      1      Baseline      1      5      5 126.1
36 8031117901    5  OHA      2    OrthoStand      2      5     10 126.2
35 8031117901    5  OHA      3  OrthoRecover      3      8     18 126.8
30 8031117901    5  OHA      4    AngryThink     10      2     38 118.6
29 8031117901    5  OHA      5    AngrySpeak     11      3     41 121.6
28 8031117901    5  OHA      6 AngryRecovery     13      8     50 116.2
34 8031117901    5  OHA      7    HappyThink      5      2     22 125.6
33 8031117901    5  OHA      8    HappySpeak      6      3     25 121.4
32 8031117901    5  OHA      9 HappyRecovery      8      8     34 118.5
40 8031117902    1  AHO      1      Baseline      1      5      5 108.1
45 8031117902    1  AHO      2    OrthoStand     12      5     42 106.4
44 8031117902    1  AHO      3  OrthoRecover     13      8     50 110.9
39 8031117902    1  AHO      4    AngryThink      3      2      9 115.0
38 8031117902    1  AHO      5    AngrySpeak      4      3     12 118.7
37 8031117902    1  AHO      6 AngryRecovery      6      8     21 107.0
43 8031117902    1  AHO      7    HappyThink      8      2     25 105.4
42 8031117902    1  AHO      8    HappySpeak      9      3     28 108.5
41 8031117902    1  AHO      9 HappyRecovery     11      8     37 108.0
49 8031136901    4  HAO      1      Baseline      1      5      5 153.7
54 8031136901    4  HAO      2    OrthoStand     12      5     42 173.1
53 8031136901    4  HAO      3  OrthoRecover     13      8     50 152.0
48 8031136901    4  HAO      4    AngryThink      8      2     25 157.7
47 8031136901    4  HAO      5    AngrySpeak      9      3     28 163.7

# save(narrow, file='/prj/hnd/Wave01/zPrj/PsyPhys/dat/narrow2.rdata') # Would have saved but this is a demo...

It's useful to try to visualize these data. We can plot the sequence of conditions (ignoring counterbalancing).

library(zStat)

conNames = zQ(Baseline, OrthoStand, OrthoRecover, AngryThink, AngrySpeak, AngryRecovery, HappyThink, HappySpeak, HappyRecovery)
measures = zQ(BPsys, BPdia, HR, IBI, TPR, CardOutput, MAP, SV, AC, ET)

(condStand = data.frame(qx = 1:length(conNames), nm = conNames))
  qx            nm
1  1      Baseline
2  2    OrthoStand
3  3  OrthoRecover
4  4    AngryThink
5  5    AngrySpeak
6  6 AngryRecovery
7  7    HappyThink
8  8    HappySpeak
9  9 HappyRecovery

agg = list()
ylim = data.frame()
lmax = data.frame()
lmin = data.frame()

for (k in seq_along(levels(narrow$cBal))) {
    c = levels(narrow$cBal)[k]
    agg[[c]] = aggregate(cbind(BPsys, BPdia, HR, IBI, TPR, CardOutput, MAP, SV, AC, ET) ~ ConNam, narrow[narrow$cNum == k, ], FUN = mean)
    agg[[c]] = merge(agg[[c]], condStand, by.x = "ConNam", by.y = "nm")
    agg[[c]] = agg[[c]][order(agg[[c]][, "qx"]), ]
    lmin = rbind(lmin, sapply(agg[[c]][, zQ(BPsys, BPdia, HR, IBI, TPR, CardOutput, MAP, SV, AC, ET)], zByFUN)[4, ])
    lmax = rbind(lmax, sapply(agg[[c]][, zQ(BPsys, BPdia, HR, IBI, TPR, CardOutput, MAP, SV, AC, ET)], zByFUN)[5, ])
}

ymax = data.frame(ymax = ceiling(apply(lmax, 2, max)), row.names = measures)
ymin = data.frame(ymin = floor(apply(lmin, 2, min)), row.names = measures)
ylim = cbind(ymin, ymax)

pCol = zQ(blue, black, darkgray, red, brown, darkgreen, purple)
xLbl = agg[[1]][, "ConNam"]
xVal = 1:length(xLbl)

for (i in 1:length(measures)) {
    j = i + 1

    for (k in seq_along(levels(narrow$cBal))) {
        if (k == 1) 
            plot(xVal, agg[[k]][, j], lty = k, col = pCol[k], type = "l", ylim = c(ylim[j - 1, 1], ylim[j - 1, 2]), xlab = "", ylab = names(agg[[k]][j]), xaxt = "n") else lines(xVal, agg[[k]][, j], lty = k, col = pCol[k])
    }

    axis(1, at = xVal, labels = FALSE)
    text(x = xVal, par("usr")[3] - 0.6, labels = agg[[1]][, "ConNam"], srt = 25, pos = 2, xpd = TRUE, offset = -1)
    legend("topleft", legend = levels(narrow$cBal), lty = 1:nlevels(narrow$cBal), col = pCol)
}

plot of chunk plots plot of chunk plots plot of chunk plots plot of chunk plots plot of chunk plots plot of chunk plots plot of chunk plots plot of chunk plots plot of chunk plots plot of chunk plots

Now we're ready to do some repeated measures analyses. As a demonstration, I'll analyze systolic blood pressure for the anger recall condition.

First, I'll construct a data frame with just data for the anger recall conditions. Then, I'll take a random sample of participants to check for possible nonlinear trends over conditions.

library(lattice)

# ***Add demographic info to the longitudinal data (zXtendFrame is my way to merge things)...

narrow = zXtendFrame(narrow, "HNDid", "/prj/hnd/zrdata/w00Demographics.rdata", zQ(Age0, Race, Sex, PovStat))

head(narrow)
       HNDid cNum cBal conIdx        ConNam datIdx datDur datCum BPsys BPdia     HR    IBI  TPR CardOutput   MAP    SV   AC     ET Age0  Race   Sex PovStat
1 8031079801    1  AHO      6 AngryRecovery      6      8     21 135.9 80.75  97.91 0.6399 1.04      6.359 101.8 65.83 1.53 0.2599   63 White Women   Above
2 8031079801    1  AHO      5    AngrySpeak      4      3     12 170.1 99.72 105.19 0.6000 1.46      5.680 126.6 55.26 1.03 0.2500   63 White Women   Above
3 8031079801    1  AHO      4    AngryThink      3      2      9 152.7 90.86  99.75 0.6200 1.24      5.880 114.5 59.48 1.23 0.2599   63 White Women   Above
4 8031079801    1  AHO      1      Baseline      1      5      5 146.4 88.66 100.08 0.6299 1.30      5.689 110.7 57.62 1.29 0.2599   63 White Women   Above
5 8031079801    1  AHO      9 HappyRecovery     11      8     37 143.2 88.44  98.61 0.6399 1.31      5.409 109.3 55.55 1.29 0.2599   63 White Women   Above
6 8031079801    1  AHO      8    HappySpeak      9      3     28 163.0 93.38 101.44 0.6200 1.23      6.270 119.6 62.95 1.17 0.2500   63 White Women   Above

varAngry = zQ(1, 4, 5, 6)

angry = narrow[narrow$conIdx %in% varAngry, c(zNamesRange(narrow, "HNDid", "BPsys"), zNamesRange(narrow, "Age0", "PovStat"))]
angry = angry[order(angry$HNDid, angry$conIdx), ]
angry$nSeq = sequence(rle(angry$HNDid)$lengths)

head(angry, n = 15)
        HNDid cNum cBal conIdx        ConNam datIdx datDur datCum BPsys Age0  Race   Sex PovStat nSeq
4  8031079801    1  AHO      1      Baseline      1      5      5 146.4   63 White Women   Above    1
3  8031079801    1  AHO      4    AngryThink      3      2      9 152.7   63 White Women   Above    2
2  8031079801    1  AHO      5    AngrySpeak      4      3     12 170.1   63 White Women   Above    3
1  8031079801    1  AHO      6 AngryRecovery      6      8     21 135.9   63 White Women   Above    4
13 8031107801    4  HAO      1      Baseline      1      5      5 139.6   63 White   Men   Above    1
12 8031107801    4  HAO      4    AngryThink      8      2     25 158.7   63 White   Men   Above    2
11 8031107801    4  HAO      5    AngrySpeak      9      3     28 165.4   63 White   Men   Above    3
10 8031107801    4  HAO      6 AngryRecovery     11      8     37 187.0   63 White   Men   Above    4
22 8031107802    6  OAH      1      Baseline      1      5      5 124.6   53 White Women   Above    1
21 8031107802    6  OAH      4    AngryThink      5      2     22 145.8   53 White Women   Above    2
20 8031107802    6  OAH      5    AngrySpeak      6      3     25 159.1   53 White Women   Above    3
19 8031107802    6  OAH      6 AngryRecovery      8      8     34 139.2   53 White Women   Above    4
31 8031117901    5  OHA      1      Baseline      1      5      5 126.1   40 White   Men   Above    1
30 8031117901    5  OHA      4    AngryThink     10      2     38 118.6   40 White   Men   Above    2
29 8031117901    5  OHA      5    AngrySpeak     11      3     41 121.6   40 White   Men   Above    3

# ***Lattice plots...

angry.sample = angry[angry$HNDid %in% sample(angry[angry$conIdx == 1, "HNDid"], 48), ]
angry.sample$ID = factor(angry.sample$HNDid)
angry.sample$nSeqF = factor(angry.sample$nSeq)

zQuick(angry.sample)
[1] 192  16
'data.frame':   192 obs. of  16 variables:
 $ HNDid  : num  8031079801 8031079801 8031079801 8031079801 8031156201 ...
 $ cNum   : int  1 1 1 1 6 6 6 6 5 5 ...
 $ cBal   : Factor w/ 6 levels "AHO","AOH","HOA",..: 1 1 1 1 6 6 6 6 5 5 ...
 $ conIdx : num  1 4 5 6 1 4 5 6 1 4 ...
 $ ConNam : chr  "Baseline" "AngryThink" "AngrySpeak" "AngryRecovery" ...
 $ datIdx : int  1 3 4 6 1 5 6 8 1 10 ...
 $ datDur : int  5 2 3 8 5 2 3 8 5 2 ...
 $ datCum : int  5 9 12 21 5 22 25 34 5 38 ...
 $ BPsys  : num  146 153 170 136 100 ...
 $ Age0   :Class 'labelled'  atomic [1:192] 63 63 63 63 53 53 53 53 44 44 ...
  .. ..- attr(*, "label")= chr "Initial age"
 $ Race   : Factor w/ 2 levels "White","AfrAm": 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "label")= chr "Race"
 $ Sex    : Factor w/ 2 levels "Women","Men": 1 1 1 1 2 2 2 2 2 2 ...
  ..- attr(*, "label")= chr "Sex"
 $ PovStat: Factor w/ 2 levels "Above","Below": 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "label")= chr "Poverty status"
 $ nSeq   : int  1 2 3 4 1 2 3 4 1 2 ...
 $ ID     : Factor w/ 48 levels "8031079801","8031156201",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ nSeqF  : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ...
NULL
        HNDid cNum cBal conIdx        ConNam datIdx datDur datCum BPsys Age0  Race   Sex PovStat nSeq         ID nSeqF
4  8031079801    1  AHO      1      Baseline      1      5      5 146.4   63 White Women   Above    1 8031079801     1
3  8031079801    1  AHO      4    AngryThink      3      2      9 152.7   63 White Women   Above    2 8031079801     2
2  8031079801    1  AHO      5    AngrySpeak      4      3     12 170.1   63 White Women   Above    3 8031079801     3
1  8031079801    1  AHO      6 AngryRecovery      6      8     21 135.9   63 White Women   Above    4 8031079801     4
58 8031156201    6  OAH      1      Baseline      1      5      5 100.3   53 White   Men   Above    1 8031156201     1
     HNDid                 cNum       cBal        conIdx        ConNam              datIdx          datDur         datCum         BPsys            Age0         Race        Sex       PovStat   
 Min.   :8031079801   Min.   :1.00   AHO:52   Min.   :1.00   Length:192         Min.   : 1.00   Min.   :2.00   Min.   : 5.0   Min.   : 97.5   Min.   :30.0   White: 64   Women:116   Above:100  
 1st Qu.:8111347551   1st Qu.:1.00   AOH: 4   1st Qu.:3.25   Class :character   1st Qu.: 2.50   1st Qu.:2.75   1st Qu.: 8.0   1st Qu.:119.2   1st Qu.:39.8   AfrAm:128   Men  : 76   Below: 92  
 Median :8141627601   Median :4.00   HOA:12   Median :4.50   Mode  :character   Median : 6.00   Median :4.00   Median :22.0   Median :129.0   Median :48.0                                      
 Mean   :8139222455   Mean   :3.75   HAO:40   Mean   :4.00                      Mean   : 6.05   Mean   :4.50   Mean   :22.4   Mean   :133.0   Mean   :47.2                                      
 3rd Qu.:8211653452   3rd Qu.:5.00   OHA:40   3rd Qu.:5.25                      3rd Qu.:10.00   3rd Qu.:5.75   3rd Qu.:37.0   3rd Qu.:143.3   3rd Qu.:53.0                                      
 Max.   :8224304901   Max.   :6.00   OAH:44   Max.   :6.00                      Max.   :13.00   Max.   :8.00   Max.   :50.0   Max.   :197.2   Max.   :64.0                                      
                                                                                                                              NA's   :12                                                        
      nSeq               ID      nSeqF 
 Min.   :1.00   8031079801:  4   1:48  
 1st Qu.:1.75   8031156201:  4   2:48  
 Median :2.50   8031165101:  4   3:48  
 Mean   :2.50   8031467202:  4   4:48  
 3rd Qu.:3.25   8031654801:  4         
 Max.   :4.00   8031715801:  4         
                (Other)   :168         

stripPanel = function(which.panel, factor.levels, ...) {
    panel.rect(0, 0, 1, 1, col = "lightgray")
    panel.text(x = 0.5, y = 0.5, cex = 0.75, lab = factor.levels[which.panel])
}

xyplot(BPsys ~ nSeqF | ID, angry.sample, type = c("g", "p", "r"), pch = 20, strip = stripPanel, xlab = "Condition")

plot of chunk lattice

It appears that at least some participants blood pressure is curvilinear with one inflection over conditions. This means that it's probably a good idea to account for the overall curvilinearity (fixed effect) and the curvilinearity in individual trajectories (random effect). We know that there are order effects based on counterbalancing so we also include a random effect for counterbalancing condition.

library(lme4)
library(multcomp)
(merModel1 = lmer(BPsys ~ Race * nSeq * I(nSeq^2) + ((nSeq + I(nSeq^2)) | HNDid) + (1 | cBal), angry))
Linear mixed model fit by REML ['lmerMod']
Formula: BPsys ~ Race * nSeq * I(nSeq^2) + ((nSeq + I(nSeq^2)) | HNDid) +      (1 | cBal) 
   Data: angry 
REML criterion at convergence: 18861 
Random effects:
 Groups   Name        Std.Dev. Corr       
 HNDid    (Intercept) 22.87               
          nSeq        18.71    -0.62      
          I(nSeq^2)    3.32     0.62 -0.99
 cBal     (Intercept)  1.14               
 Residual              6.85               
Number of obs: 2408, groups: HNDid, 602; cBal, 6
Fixed Effects:
             (Intercept)                 RaceAfrAm                      nSeq                 I(nSeq^2)            RaceAfrAm:nSeq       RaceAfrAm:I(nSeq^2)            nSeq:I(nSeq^2)  
                  144.56                     -9.95                    -42.39                     26.40                     14.41                     -7.19                     -4.15  
RaceAfrAm:nSeq:I(nSeq^2)  
                    1.03  

cftest(merModel1)

     Simultaneous Tests for General Linear Hypotheses

Fit: lmer(formula = BPsys ~ Race * nSeq * I(nSeq^2) + ((nSeq + I(nSeq^2)) | 
    HNDid) + (1 | cBal), data = angry)

Linear Hypotheses:
                              Estimate Std. Error z value        Pr(>|z|)
(Intercept) == 0               144.558      4.193   34.48         < 2e-16
RaceAfrAm == 0                  -9.953      5.208   -1.91           0.056
nSeq == 0                      -42.389      6.045   -7.01 0.0000000000023
I(nSeq^2) == 0                  26.404      2.621   10.08         < 2e-16
RaceAfrAm:nSeq == 0             14.409      7.559    1.91           0.057
RaceAfrAm:I(nSeq^2) == 0        -7.188      3.277   -2.19           0.028
nSeq:I(nSeq^2) == 0             -4.149      0.347  -11.97         < 2e-16
RaceAfrAm:nSeq:I(nSeq^2) == 0    1.033      0.434    2.38           0.017
(Univariate p values reported)
xVal = 1:4
xLbl = angry[xVal, "ConNam"]

hatModel1 = zMixHat(angry, merModel1, vary = "nSeq=xVal,Race=zQ(White,AfrAm)")

HNDcolors = HNDpltColors()
HNDlabels = HNDpltLabels()

head(hatModel1)
  nSeq  Race BPsys   hat
1    1 White     0 124.4
2    2 White     0 132.2
3    3 White     0 143.0
4    4 White     0 131.9
5    1 AfrAm     0 122.7
6    2 AfrAm     0 130.6

par(las = 1, lwd = 2)

with(hatModel1[hatModel1$Race == "AfrAm", ], plot(nSeq, hat, lty = 1, col = HNDcolors$Race["AfrAm"], ylim = c(100, 150), typ = "l", ylab = "BPsys", xlab = "Condition", xaxt = "n"))
with(hatModel1[hatModel1$Race == "White", ], lines(nSeq, hat, lty = 1, col = HNDcolors$Race["White"]))

axis(1, at = xVal, labels = FALSE)
text(x = xVal, par("usr")[3] - 1, labels = xLbl, pos = 3, xpd = TRUE, offset = -1)
legend("topleft", legend = HNDlabels$Race, col = HNDcolors$Race, lty = 1)

plot of chunk mixed-plot