Load packages

Same data processing as E3. infer race, gender and tenure days from the data.

Obtain examiner attributes and join it to the edge dataset. In the edge dataset, there exist observations whose ego and alter examiner id are the same. This time I filtered them out before proceeding with the analysis

Plotting the graphs this time, there’s no arrow going from one node to itself.Same observation as E3 that white examiners are more connected with each other through clusters than black and Asian examiners

# Set vertex colors based on gender
vertex_colors <- ifelse(V(g)$gender == "Female", "pink", "gray")

for(r in unique(applications$race)){  
# Subset the graph to include only vertices in work units 161 and 249
g_sub <- induced_subgraph(g, V(g)$race %in% c(r))

# Plot the subgraph using igraph
plot(g_sub, vertex.label = NA, vertex.color = vertex_colors[V(g_sub)], vertex.size = 5,
     edge.arrow.size = 0.5, edge.width = 0.5, layout = layout_with_fr)
title(r)
}

Male examiners are more connected to one another than female examiners.Female examiners have a highly centralized cluster that excludes the peripheral nodes.

vertex_colors <- ifelse(V(g)$race == "white", "pink",
                        ifelse(V(g)$race == "asian", "yellow",
                               ifelse(V(g)$race == "black", "brown",
                                      ifelse(V(g)$race == "hispanic", "orange", "gray"))))

for(r in unique(examiner_attrs$gender)){  
# Subset the graph to include only vertices in work units 161 and 249
g_sub <- induced_subgraph(g, V(g)$gender %in% c(r))

# Plot the subgraph using igraph
plot(g_sub, vertex.label = NA, vertex.color = vertex_colors[V(g_sub)], vertex.size = 5,
     edge.arrow.size = 0.5, edge.width = 0.5, layout = layout_with_fr)
title(r)
}

Calculate and degree and betweenness for the network and join it to examiner attributes. Repeating the correlation calculation as in E3, tenure days and betweenness are positively correlated.

cor_matrix <- cor(selected_centrality_scores[, c("degree", "betweenness","tenure")])

print(cor_matrix)
##                   degree betweenness       tenure
## degree       1.000000000  0.21610408 -0.007875468
## betweenness  0.216104080  1.00000000  0.015947141
## tenure      -0.007875468  0.01594714  1.000000000
heatmap(
  cor_matrix,
  Rowv = NA,
  Colv = NA,
  col = colorRampPalette(c("white", "darkred"))(25),
  margins = c(15, 10)
)

Join the centrality score to applications and process the merged dataset to obtain processing time. As degree, betweeness are right skewed, a log transformation and smoothing of negative infinite were applied first

hist(centrality$degree)

hist(centrality$betweenness)

centrality <- centrality %>% mutate(log_degree = log(degree), log_betweenness = log(betweenness))%>%
  mutate(
    log_degree = replace(log_degree, log_degree == -Inf, 0),
    log_betweenness = replace(log_betweenness, log_betweenness == -Inf, 0)
  )

Since tenure days and centrality are in different measures, they are standardized before the regression analysis.

applications_mutated <- applications %>%  
  mutate(app_proc_time_issue = patent_issue_date - filing_date,
         app_proc_time_abandon = abandon_date - filing_date) %>%
  mutate(app_pro_time = ifelse(is.na(app_proc_time_issue), 
                               app_proc_time_abandon, app_proc_time_issue)) %>%
  filter(app_pro_time > 0) %>%
  select(app_pro_time, gender, race, tenure_days, log_degree, log_betweenness) %>%
  drop_na() %>%
  mutate(log_degree = (log_degree - mean(log_degree)) / sd(log_degree),
         log_betweenness = (log_betweenness - mean(log_betweenness)) / sd(log_betweenness),
         tenure_days = (tenure_days - mean(tenure_days)) / sd(tenure_days))

Runing two regression models, one based on siloed variables, the other including interaction terms

model_1 <- lm(app_pro_time ~ log_degree + log_betweenness  +
                     gender + race + tenure_days, data = applications_mutated)

model_2 <- lm(app_pro_time ~ log_degree + log_betweenness  +
                          gender + race + tenure_days +
                          log_degree:gender + 
                          log_betweenness:gender + tenure_days:gender +
                 log_degree:race + log_betweenness:race + tenure_days:race,  data = applications_mutated)

Based on model1, we can draw the following conclusion: - Higher degree and betweenness centrality increase the processing time (people can ask for lots of advice) - Gender difference in processing time is statistically insignificant - Compared to Asian, examiners of other races tend to take less time to process - tenure days irrelevant to processing time

model_1
## 
## Call:
## lm(formula = app_pro_time ~ log_degree + log_betweenness + gender + 
##     race + tenure_days, data = applications_mutated)
## 
## Coefficients:
##     (Intercept)       log_degree  log_betweenness       genderMale  
##         1238.43            49.24            17.77            35.42  
##       raceblack     racehispanic        racewhite      tenure_days  
##          -73.58           -47.73          -105.87            18.43
summary(model_1)
## 
## Call:
## lm(formula = app_pro_time ~ log_degree + log_betweenness + gender + 
##     race + tenure_days, data = applications_mutated)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1276.9  -413.7  -109.7   263.0  4069.6 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1238.430     24.267  51.033  < 2e-16 ***
## log_degree        49.242     10.494   4.692 2.79e-06 ***
## log_betweenness   17.768     10.397   1.709  0.08753 .  
## genderMale        35.421     22.208   1.595  0.11080    
## raceblack        -73.584     26.816  -2.744  0.00609 ** 
## racehispanic     -47.732     46.587  -1.025  0.30562    
## racewhite       -105.872     23.893  -4.431 9.61e-06 ***
## tenure_days       18.432      9.986   1.846  0.06500 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 630.7 on 4162 degrees of freedom
## Multiple R-squared:  0.01467,    Adjusted R-squared:  0.01301 
## F-statistic: 8.853 on 7 and 4162 DF,  p-value: 7.396e-11

Based on model1, we can draw the following conclusion: - Higher degree centrality increase the processing time (people can ask for lots of advice) - Male examiner with high betweeness take longer to prorcess applications - Compared to Asian, examiners of other races tend to take less time to process - White examiner with high degree centrality takes less time than asian counterparts - Examiners that have longer tenure days may take more time to process applications - However,white and hispanic examiner with long tenure days take less time than asains

model_2
## 
## Call:
## lm(formula = app_pro_time ~ log_degree + log_betweenness + gender + 
##     race + tenure_days + log_degree:gender + log_betweenness:gender + 
##     tenure_days:gender + log_degree:race + log_betweenness:race + 
##     tenure_days:race, data = applications_mutated)
## 
## Coefficients:
##                  (Intercept)                    log_degree  
##                     1245.913                        37.012  
##              log_betweenness                    genderMale  
##                        2.561                        31.518  
##                    raceblack                  racehispanic  
##                      -72.595                       -74.963  
##                    racewhite                   tenure_days  
##                     -109.310                        22.207  
##        log_degree:genderMale    log_betweenness:genderMale  
##                        8.080                         6.701  
##       genderMale:tenure_days          log_degree:raceblack  
##                       30.052                        -7.963  
##      log_degree:racehispanic          log_degree:racewhite  
##                      116.661                         4.621  
##    log_betweenness:raceblack  log_betweenness:racehispanic  
##                       43.483                       -76.777  
##    log_betweenness:racewhite         raceblack:tenure_days  
##                        5.273                       -50.959  
##     racehispanic:tenure_days         racewhite:tenure_days  
##                     -124.108                       -20.811
summary(model_2)
## 
## Call:
## lm(formula = app_pro_time ~ log_degree + log_betweenness + gender + 
##     race + tenure_days + log_degree:gender + log_betweenness:gender + 
##     tenure_days:gender + log_degree:race + log_betweenness:race + 
##     tenure_days:race, data = applications_mutated)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1437.4  -410.2  -110.2   264.5  4095.8 
## 
## Coefficients:
##                              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                  1245.913     24.584  50.680  < 2e-16 ***
## log_degree                     37.012     26.303   1.407  0.15945    
## log_betweenness                 2.561     25.738   0.099  0.92075    
## genderMale                     31.518     22.464   1.403  0.16067    
## raceblack                     -72.595     26.999  -2.689  0.00720 ** 
## racehispanic                  -74.963     48.486  -1.546  0.12216    
## racewhite                    -109.310     23.967  -4.561 5.24e-06 ***
## tenure_days                    22.207     24.362   0.912  0.36208    
## log_degree:genderMale           8.080     25.006   0.323  0.74663    
## log_betweenness:genderMale      6.701     25.909   0.259  0.79593    
## genderMale:tenure_days         30.052     23.123   1.300  0.19379    
## log_degree:raceblack           -7.963     27.682  -0.288  0.77363    
## log_degree:racehispanic       116.661     44.450   2.625  0.00871 ** 
## log_degree:racewhite            4.621     25.969   0.178  0.85877    
## log_betweenness:raceblack      43.483     28.680   1.516  0.12955    
## log_betweenness:racehispanic  -76.777     80.212  -0.957  0.33853    
## log_betweenness:racewhite       5.273     23.691   0.223  0.82390    
## raceblack:tenure_days         -50.959     27.046  -1.884  0.05962 .  
## racehispanic:tenure_days     -124.108     45.322  -2.738  0.00620 ** 
## racewhite:tenure_days         -20.811     23.957  -0.869  0.38506    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 629.9 on 4150 degrees of freedom
## Multiple R-squared:  0.01994,    Adjusted R-squared:  0.01545 
## F-statistic: 4.444 on 19 and 4150 DF,  p-value: 4.139e-10