ET HRSA4-5 Analysis - Slides version

Yujie Cui

2019-06-14

Introduction - The pilot

In 2008, Dr. Waterman partnered with a single CMS ESRD Network, the Heartland Kidney Network, to enhance dialysis providers’ transplant knowledge and ability to educate their own patients about deceased and living donation. The Heartland Kidney Network oversees 273 facilities providing care for over 13,000 dialysis patients in Missouri, Kansas, Nebraska, and Iowa. Dialysis providers participated in Explore Transplant Provider Trainings and received access to Explore Transplant materials for dissemination with their patients. Two-hundred and ninety-four dialysis providers representing 74% of dialysis facilities in this region attended these trainings. Afterwards, the majority of dialysis providers had significantly increased transplant knowledge themselves and reported planning to educate five patients using the Explore Transplant program in the next six months. However, six months later, there was wide variability in dialysis providers’ actual implementation of Explore Transplant in their dialysis centers.

Previously in the single network (Heartland Kidney Network) study, Explore Transplant was found to increase dialysis centers’ living donor transplant rates: Controlling for covariates, dialysis centers where the provider educated 5 or more patients using ET in the subsequent four months were 1.33 times more likely to have at least one patient get a LDKT in 2010 and 2011 than dialysis centers where the provider educated less than 5 patients. There was also evidence of geographic disparities in LDKT rates: dialysis centers located in urbanized areas (> 50,000 pop.) were 1.65 times more likely to have at least one patient get a LDKT in 2010 and 2011 than dialysis centers located in urban clusters or rural areas (< 50,000 pop.). However,no evidence of within-center effects were found; there was not a significant difference in centers’ likelihood of having a patient receive LDKT between 2010 and 2011, indicating that while there is a difference in the likelihood of having a patient receive an LDKT if the provider educates > 5 patients with ET, this likelihood does not increase or decrease over time.

This Analysis includes 1694 ET centers and 1700 non-ET centers.

Introduction - Methods

Methods:
Participating Dialysis Centers
In a national quality improvement initiative, dialysis centers from ESRD Networks throughout the United States were invited to participate in a one day Explore Transplant (ET) educational training. Only dialysis centers that participated in the ET trainings are considered for this study. The inclusion criterion for dialysis centers is to have sent a staff representative to one of 78 ET trainings over a four year period between 3/20/2011 and 3/18/2015. Ineligibility criteria include: provision of only acute dialysis services; serving only a pediatric patient population; and not dialyzing at least one new patient during the sampling periods for wait-listing and transplantation rates (defined below). Further some training attendees opted not to sign a consent form to be included in the study; in cases where all attendees from a specific center opted not to participate in the study, that center will be excluded from analyses. Representatives from 1989 unique dialysis centers attended trainings, though centers were excluded due to only providing acute dialysis (19 centers), serving only pediatric patients (17 centers), refusal to participate in the study (23 centers), and not responding to a survey given during the trainings (38 centers). Further, X centers did not initiate dialysis with at least 1 new patient during wait-listing and transplant rate follow-up periods (see below). This resulted in a sample of X unique dialysis centers.

Patient Selection
Patients from participating dialysis center will be selected to calculate transplant wait-listing and transplantation rates in two cohorts: a pre-ET cohort and a post-ET cohort. For the pre-ET cohort, incident dialysis patients who initialized dialysis treatment between 21 and 12 months prior to their center’s ET training will be sampled. For the post-ET cohort, incident dialysis patients who initialized dialysis between 3 months before the ET training date and 6 months after will be sampled. Patients in the post-ET cohort who started dialysis during this time are most likely to have been exposed ET from their dialysis staff, while patients sampled for the pre-ET cohort would not have any exposure to ET. Calculation of Wait-listing and Transplant Rates Annualized 12 month wait-listing and transplant rates for each dialysis center will be calculated for before and after the ET trainings. Each rate will be defined as the number of patients who have the event of interest (wait-list or receive a transplant) divided by the total days patients are at risk during the follow-up period, then multiplied by 365.25. Patients will be censored at death. To calculate the pre-ET 12-month annualized rates, incident dialysis patients between 21 and 12 months prior to the ET training will be followed for 12 months. The follow-up for the last patients included in this cohort would end at the ET training date. For the post-ET 12 month rates, incident dialysis patients between 3 months prior to the ET training date and 6 months after the training date will be followed for 12 months. The follow-up for the last patients in this cohort will end 18 months after the ET date. This gives an equal sample period (9 months) and equal follow-up period (12 months) for both the pre- and post-ET rates. The figure below shows the sampling and follow-up of patients for the wait-listing and transplant rates.

Aims

We will conduct process and outcome evaluations to understand whether:
1. These trainings successfully reach providers in the majority of dialysis centers in three ESRD Networks.
2. These trainings increase dialysis providers’ knowledge about deceased and living donor transplantation.
3. These trainings motivate dialysis providers to use Explore Transplant with their own Spanish- and English-speaking patients in the next six months.
4. The ET and non-ET centers vary in their WL and LDKT rates.

Objective Two: Six months after the trainings, to assess dialysis providers’ use of and success in educating 4,000 dialysis patients about deceased and living donation using Explore Transplant. We will conduct process and outcome evaluations to understand:
1. How specific Explore Transplant educational resources are being used in individual dialysis centers.
2. Whether the majority of providers are educating an average of 5 patients using Explore Transplant within their centers within six months.
3. How specific patient, provider and dialysis center factors facilitate or serve as barriers to educating English- and Spanish-speaking patients using Explore Transplant.

Statistical methods

Data Preparation

The ET dataset was merged from the pre and post dataset from USRDS and has 1700 patients in each arm with about 62 variables.

#One center ID in this dataset was not found in the WL paper (532307) needs further attention. 
df_wl <- read.csv("I:/RESEARCH PROJECTS/DATA-RELATED PROJECTS/HRSA CLOSED/HRSA 4 Public Ed/DATA COMPONENTS/ANALYSIS & WRITEUP/ANALYSIS/FULL SAMPLE/DATA/Manipulated/main_updated_final.csv", header = T)

df_nat2718 <- read_sas("I:/RESEARCH PROJECTS/DATA-RELATED PROJECTS/HRSA CLOSED/HRSA 4 Public Ed/DATA COMPONENTS/ANALYSIS & WRITEUP/ANALYSIS/FULL SAMPLE/DATA/Manipulated/nat2728_analysis.sas7bdat")

et_survey <- read_sas("I:/RESEARCH PROJECTS/DATA-RELATED PROJECTS/HRSA CLOSED/HRSA 4 Public Ed/DATA COMPONENTS/ANALYSIS & WRITEUP/ANALYSIS/FULL SAMPLE/DATA/Manipulated/et_survey.sas7bdat")


test <- df_wl[1:50, ]

# import the datasets confirmed by Devin, 02/27/2019
df_pre <- read_sas("I:/RESEARCH PROJECTS/DATA-RELATED PROJECTS/HRSA CLOSED/HRSA 4 Public Ed/DATA COMPONENTS/ANALYSIS & WRITEUP/SLU ET MATCH/Data/usrds_esrd_m121_lrate_pre_4et.sas7bdat")

df_pre$PROVHCFA <- as.character(df_pre$PROVHCFA)

df_post <- read_sas("I:/RESEARCH PROJECTS/DATA-RELATED PROJECTS/HRSA CLOSED/HRSA 4 Public Ed/DATA COMPONENTS/ANALYSIS & WRITEUP/SLU ET MATCH/Data/usrds_esrd_m121_lrate_post_4et.sas7bdat")

df_post$PROVHCFA <- as.character(df_post$PROVHCFA)

# check if there are duplicate rows
df_pre <- unique(df_pre)
df_post <- unique(df_post)

# rename the post rates variables with prefix "pst_"

colnames(df_post) <- paste("pst", colnames(df_post), sep = "_")

df_post <- df_post %>%
  mutate(
    PROVHCFA = pst_PROVHCFA
  ) %>%
  filter(!PROVHCFA == "") # filter out some PROVHCFA == empty

df_merge3 <- merge(df_pre, df_post, by = "PROVHCFA") # 2660 obs

### See if both IDs match up with waitlisting paper.
# get waitlisting IDs as dictionary
df_wl$PROVHCFA <- as.character(df_wl$PROVHCFA)
df_wl$PROVHCFA <- ifelse(nchar(df_wl$PROVHCFA) == 5, paste("0", df_wl$PROVHCFA, sep = ""), df_wl$PROVHCFA)
df_wl_ids <- df_wl$PROVHCFA

df_merge3$outsider <- ifelse(df_merge3$PROVHCFA %in% df_wl_ids, 0, 1)

# check how many outsiders we have in the ET group in merge dataset

df_merge_ET <- df_merge3 %>%
  filter(ET == 1)

# get the center info from this outsider
# df_merge_ET %>%
#   filter(outsider == 1)


### Coding the variable for "Educated >= 5 patients with ET" or not?

#  Used ednum2 as the variable for patients educated using ET.

df_ednum2 <- df_wl %>% select(PROVHCFA, ednum2)

df_merge4 <- left_join(df_merge3, df_ednum2, by = "PROVHCFA")
# dichotomize ednum (>=5, 1, < 5, 0)

df_merge4 <- df_merge4 %>%
  mutate(
    ed5 = case_when(
      ednum2 >= 5 ~ 1,
      ednum2 < 5 & ednum2 >= 0 ~ 0,
      TRUE ~ as.numeric(ednum2)
    )
  )

# labeling 
df_wl <- df_wl %>% mutate(
  jobtitle3 = factor(
    jobtitle2, 
    levels = c(1,2,3),
    labels = c("Social worker", "Nurse", "Medical Dir, Nurse Manager, Dietician, and Others")
  ),
  
  race8 = factor(
    race, 
    levels=c(1,2,3,4,5,6,7,8),
    labels = c(
      "African American or Black", "American Indian or Alaskan Native", "Asian", "Native Hawaiian or other Pacifc Islander", "Hispanic or Latino", "White", "Multiracial","Other"
    )
  ),
  
  gender2 = factor(
    gender, 
    levels = c(0,1),
    labels = c("Male", "Female")
  )
)

Table 1. Chracteristics of Educators.

Overall
n 1694
gender2 = Female (%) 1532 (90.7)
age (mean (sd)) 45.37 (11.43)
race8 (%)
African American or Black 1150 (68.5)
American Indian or Alaskan Native 214 (12.7)
Asian 108 ( 6.4)
Native Hawaiian or other Pacifc Islander 19 ( 1.1)
Hispanic or Latino 157 ( 9.4)
White 2 ( 0.1)
Multiracial 18 ( 1.1)
Other 11 ( 0.7)
totknowpre (mean (sd)) 5.24 (2.08)
jobtitle3 (%)
Social worker 941 (55.6)
Nurse 257 (15.2)
Medical Dir, Nurse Manager, Dietician, and Others 494 (29.2)

Distribution of outcome variable (listings as count data)

As can be seen in the below graph, the counts of listing across treatment groups had excess zeros, which makes zero inflated Poisson a better choice of modeling. 0 = Non ET centers, 1 = ET centers.

12 Month WL rates

The zero inflated model with offset of “potential events” showed no significance of treatment on number (counts) of patients listed 12 month post ET. DiD (interaction between treatment and time) was also non-significant.

## 
## Call:
## zeroinfl(formula = list12m ~ ET + time2 + did, data = df2, offset = log(DIAL2LIST_12M))
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -1.583 -0.781 -0.396  0.513 16.803 
## 
## Count model coefficients (poisson with log link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -8.0768     0.0304 -265.69   <2e-16 ***
## ET            0.0634     0.0410    1.55    0.122    
## time2        -0.0855     0.0458   -1.87    0.062 .  
## did          -0.0284     0.0619   -0.46    0.647    
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.5618     0.1384  -11.28   <2e-16 ***
## ET           -0.0670     0.1924   -0.35    0.727    
## time2         0.3869     0.1820    2.13    0.034 *  
## did           0.0593     0.2537    0.23    0.815    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Number of iterations in BFGS optimization: 17 
## Log-likelihood: -7.67e+03 on 8 Df
## [1] 1
## [1] 3
## 
## Call:
## zeroinfl(formula = list12m ~ ET + time2 + did, data = df2, offset = log(DIAL2LIST_12M), 
##     dist = "negbin")
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -1.145 -0.709 -0.370  0.426 16.282 
## 
## Count model coefficients (negbin with log link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -8.2455     0.0349 -236.53   <2e-16 ***
## ET            0.0628     0.0475    1.32     0.19    
## time2        -0.1027     0.0625   -1.64     0.10    
## did          -0.0608     0.0826   -0.74     0.46    
## Log(theta)    0.5774     0.0691    8.35   <2e-16 ***
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)   -12.07      70.54   -0.17     0.86
## ET             -3.81     354.10   -0.01     0.99
## time2           9.09      70.55    0.13     0.90
## did             3.30     354.10    0.01     0.99
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Theta = 1.781 
## Number of iterations in BFGS optimization: 39 
## Log-likelihood: -7.44e+03 on 9 Df

12M Listing rates, ET >= 5 vs. ET < 5

DiD (interaction between treatment and time) was non-significant.

## 
## Call:
## zeroinfl(formula = list12m ~ ed5 + time2 + did, data = df2, offset = log(DIAL2LIST_12M))
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -1.682 -0.778 -0.404  0.484 10.317 
## 
## Count model coefficients (poisson with log link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -8.0400     0.0435 -184.64   <2e-16 ***
## ed5           0.0468     0.0561    0.83    0.405    
## time2        -0.1403     0.0657   -2.13    0.033 *  
## did           0.0458     0.0850    0.54    0.590    
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -1.424      0.183   -7.79  6.7e-15 ***
## ed5           -0.404      0.269   -1.50     0.13    
## time2          0.238      0.260    0.91     0.36    
## did            0.397      0.359    1.11     0.27    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Number of iterations in BFGS optimization: 16 
## Log-likelihood: -4.02e+03 on 8 Df
## [1] 1
## [1] 3
## 
## Call:
## zeroinfl(formula = list12m ~ ed5 + time2 + did, data = df2, offset = log(DIAL2LIST_12M), 
##     dist = "negbin")
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -1.194 -0.713 -0.369  0.415 10.114 
## 
## Count model coefficients (negbin with log link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -8.2358     0.0685 -120.29  < 2e-16 ***
## ed5           0.0978     0.0803    1.22    0.223    
## time2        -0.1574     0.0943   -1.67    0.095 .  
## did           0.0209     0.1209    0.17    0.863    
## Log(theta)    0.6754     0.1151    5.87  4.5e-09 ***
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)    -5.48      11.70   -0.47     0.64
## ed5            -5.66      42.21   -0.13     0.89
## time2           2.14      11.43    0.19     0.85
## did             6.23      42.20    0.15     0.88
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Theta = 1.965 
## Number of iterations in BFGS optimization: 53 
## Log-likelihood: -3.92e+03 on 9 Df

18M WL rates

Treatment was not a significant predictor ofnumber (counts) of patients listed 18 month post ET. DiD (interaction between treatment and time) was also non-significant. Only “time” was significant in both the count and zero inflated model.

## 
## Call:
## zeroinfl(formula = list18m ~ ET + time2 + did, data = df2, offset = log(DIAL2LIST_18M))
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -1.955 -0.811 -0.347  0.581 16.806 
## 
## Count model coefficients (poisson with log link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -8.1061     0.0249 -325.06   <2e-16 ***
## ET            0.0461     0.0340    1.35    0.176    
## time2        -0.0904     0.0383   -2.36    0.018 *  
## did           0.0155     0.0520    0.30    0.765    
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -2.2189     0.1742  -12.74  < 2e-16 ***
## ET           -0.0453     0.2470   -0.18     0.85    
## time2         0.9282     0.2055    4.52  6.3e-06 ***
## did           0.0878     0.2892    0.30     0.76    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Number of iterations in BFGS optimization: 18 
## Log-likelihood: -8.62e+03 on 8 Df
## [1] 2
## [1] 4
## 
## Call:
## zeroinfl(formula = list18m ~ ET + time2 + did, data = df2, offset = log(DIAL2LIST_18M), 
##     dist = "negbin")
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -1.338 -0.738 -0.320  0.481 16.267 
## 
## Count model coefficients (negbin with log link):
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -8.190588   0.029918 -273.77   <2e-16 ***
## ET           0.040582   0.040869    0.99    0.321    
## time2       -0.103011   0.051673   -1.99    0.046 *  
## did          0.000731   0.069270    0.01    0.992    
## Log(theta)   0.911103   0.066804   13.64   <2e-16 ***
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)   -12.82      72.06   -0.18     0.86
## ET             -3.18     286.81   -0.01     0.99
## time2          10.63      72.06    0.15     0.88
## did             3.17     286.81    0.01     0.99
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Theta = 2.487 
## Number of iterations in BFGS optimization: 39 
## Log-likelihood: -8.36e+03 on 9 Df

18M WL rates, Ed5 = 1 vs. ed5 = 0;

DiD (interaction between treatment and time) was also non-significant.

## 
## Call:
## zeroinfl(formula = list18m ~ ed5 + time2 + did, data = df2, offset = log(DIAL2LIST_18M))
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -2.016 -0.815 -0.344  0.547  9.308 
## 
## Count model coefficients (poisson with log link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -8.1289     0.0367 -221.33   <2e-16 ***
## ed5           0.1181     0.0473    2.50    0.013 *  
## time2        -0.0362     0.0547   -0.66    0.509    
## did          -0.0646     0.0714   -0.90    0.366    
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -2.229      0.268   -8.33   <2e-16 ***
## ed5           -0.105      0.359   -0.29    0.770    
## time2          0.967      0.312    3.10    0.002 ** 
## did            0.122      0.416    0.29    0.769    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Number of iterations in BFGS optimization: 17 
## Log-likelihood: -4.52e+03 on 8 Df
## [1] 2
## [1] 4
## 
## Call:
## zeroinfl(formula = list18m ~ ed5 + time2 + did, data = df2, offset = log(DIAL2LIST_18M), 
##     dist = "negbin")
## 
## Pearson residuals:
##    Min     1Q Median     3Q    Max 
## -1.388 -0.748 -0.323  0.467  9.073 
## 
## Count model coefficients (negbin with log link):
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -8.2179     0.0417 -197.24   <2e-16 ***
## ed5           0.1203     0.0553    2.17     0.03 *  
## time2        -0.0665     0.0717   -0.93     0.35    
## did          -0.0448     0.0934   -0.48     0.63    
## Log(theta)    0.9918     0.0950   10.44   <2e-16 ***
## 
## Zero-inflation model coefficients (binomial with logit link):
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)   -12.99     104.37   -0.12     0.90
## ed5            -3.13     463.59   -0.01     0.99
## time2          10.77     104.37    0.10     0.92
## did             3.34     463.59    0.01     0.99
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Theta = 2.696 
## Number of iterations in BFGS optimization: 39 
## Log-likelihood: -4.4e+03 on 9 Df

12M LDKT rates

DiD (interaction between treatment and time) was non-significant.

## 
## Call:
## glm(formula = LDKT12m ~ ET + time2 + did, data = df2)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
##  -0.16   -0.12   -0.08    0.02   91.15  
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.106997   0.036114    2.96   0.0031 **
## ET          -0.000643   0.049744   -0.01   0.9897   
## time2        0.010417   0.051073    0.20   0.8384   
## did          0.046351   0.070349    0.66   0.5100   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 2)
## 
##     Null deviance: 8724.9  on 5319  degrees of freedom
## Residual deviance: 8721.9  on 5316  degrees of freedom
## AIC: 17738
## 
## Number of Fisher Scoring iterations: 2
## [1] 0.1
## [1] 2
## [1] 0.1

12M LDKT rates, ET >=5 vs. ET < 5

DiD (interaction between treatment and time) was non-significant.

## 
## Call:
## glm(formula = LDKT12m ~ ed5 + time2 + did, data = df2)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
##  -0.24   -0.11   -0.10    0.02   91.08  
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)   0.1002     0.0685    1.46     0.14
## ed5           0.0115     0.0933    0.12     0.90
## time2         0.1350     0.0969    1.39     0.16
## did          -0.1446     0.1319   -1.10     0.27
## 
## (Dispersion parameter for gaussian family taken to be 3)
## 
##     Null deviance: 8474.9  on 2801  degrees of freedom
## Residual deviance: 8466.4  on 2798  degrees of freedom
##   (2518 observations deleted due to missingness)
## AIC: 11060
## 
## Number of Fisher Scoring iterations: 2
## [1] 0.1
## [1] 2
## [1] 0.1

18M LDKT rates comparing ET >=5 vs. ET < 5

DiD (interaction between treatment and time) was non-significant.

## 
## Call:
## glm(formula = LDKT18m ~ ed5 + time2 + did, data = df2)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
##  -0.24   -0.12   -0.07    0.02   91.07  
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)   0.1040     0.0685    1.52     0.13
## ed5           0.0131     0.0932    0.14     0.89
## time2         0.1362     0.0969    1.41     0.16
## did          -0.1476     0.1318   -1.12     0.26
## 
## (Dispersion parameter for gaussian family taken to be 3)
## 
##     Null deviance: 8468.1  on 2801  degrees of freedom
## Residual deviance: 8459.6  on 2798  degrees of freedom
##   (2518 observations deleted due to missingness)
## AIC: 11058
## 
## Number of Fisher Scoring iterations: 2
## [1] 0.1
## [1] 2
## [1] 0.1

Resources

DID analysis

DiD with R

Reshape

SAP Guidlines