Descriptives

Mean Mental Health Days by Race (Unweighted)
Race_Label Mean_Poor_Menthlth_Days Mean_Any_Bad_Menthlth_Days Mean_Frequent_Bad_Menthlth_Days
Latino 3.238040 0.2513423 0.1053998
White 3.381298 0.3147087 0.1042163
Mean Mental Health Days by Race (Weighted)
Race_Label Mean_Poor_Menthlth_Days Mean_Any_Bad_Menthlth_Days Mean_Frequent_Bad_Menthlth_Days
Latino 3.051826 0.2630833 0.0976346
White 3.931572 0.3586166 0.1221424

Lagged Time Series Analysis

In this section, I test three sets models.

Measures:

  1. Rolling average standard deviation. How far from the mean is this month?

Models:

  1. White

  2. Latino

  3. Race interaction

Controls:

  1. age

  2. education

  3. gender

  4. state

  5. month

White Models

Rolling average sd

Regression results examining rolling average standard deviation and mental health - White
term estimate std.error statistic p.value
(Intercept) 4.017 0.098 41.054 0.000
X_age_g -0.636 0.003 -190.302 0.000
X_educag -0.960 0.006 -170.114 0.000
female 1.480 0.011 130.927 0.000
IMONTH2 0.024 0.029 0.814 0.415
IMONTH3 0.103 0.029 3.527 0.000
IMONTH4 0.162 0.030 5.402 0.000
IMONTH5 0.379 0.030 12.843 0.000
IMONTH6 0.271 0.029 9.352 0.000
IMONTH7 0.147 0.029 5.033 0.000
IMONTH8 0.272 0.029 9.289 0.000
IMONTH9 0.331 0.030 11.080 0.000
IMONTH10 0.208 0.030 7.009 0.000
IMONTH11 0.142 0.030 4.767 0.000
IMONTH12 0.216 0.030 7.158 0.000
rolling_sd_HS90 3.095 0.069 44.637 0.000

This model suggests that an increase in one standard deviation of hate speech is associated with 3.095 days increased bad mental health for whites.

Latinx Model

Rolling average sd

Regression results examining rolling average standard deviation and mental health - Latino
term estimate std.error statistic p.value
(Intercept) 4.916 0.510 9.637 0.000
X_age_g 0.331 0.020 16.495 0.000
X_educag -0.006 0.028 -0.206 0.837
female 0.465 0.057 8.091 0.000
IMONTH2 -0.027 0.169 -0.159 0.874
IMONTH3 -0.285 0.159 -1.800 0.072
IMONTH4 -0.529 0.164 -3.232 0.001
IMONTH5 -0.428 0.161 -2.648 0.008
IMONTH6 -0.420 0.154 -2.725 0.006
IMONTH7 -0.324 0.157 -2.069 0.039
IMONTH8 -0.248 0.157 -1.582 0.114
IMONTH9 -0.252 0.154 -1.638 0.101
IMONTH10 -0.396 0.155 -2.547 0.011
IMONTH11 -0.324 0.156 -2.081 0.037
IMONTH12 -0.291 0.159 -1.824 0.068
rolling_sd_HS90 -2.251 0.362 -6.223 0.000

A one standard deviation increase in hate speech is associated with a 2.251 day decrease in bad mental health days for the Latinx population.

Interaction Model

Rolling average sd

Regression results examining rolling average standard deviation and mental health - Interaction
term estimate std.error statistic p.value
(Intercept) 3.634 0.100 36.448 0.000
X_age_g -0.572 0.003 -172.795 0.000
X_educag -0.873 0.005 -158.845 0.000
female 1.378 0.011 124.680 0.000
IMONTH2 0.013 0.029 0.444 0.657
IMONTH3 0.072 0.029 2.510 0.012
IMONTH4 0.108 0.029 3.682 0.000
IMONTH5 0.320 0.029 11.023 0.000
IMONTH6 0.215 0.028 7.561 0.000
IMONTH7 0.110 0.029 3.854 0.000
IMONTH8 0.224 0.029 7.788 0.000
IMONTH9 0.281 0.029 9.644 0.000
IMONTH10 0.153 0.029 5.278 0.000
IMONTH11 0.099 0.029 3.405 0.001
IMONTH12 0.166 0.030 5.599 0.000
X_race8 4.667 0.319 14.634 0.000
rolling_sd_HS90 3.079 0.071 43.469 0.000
X_race8:rolling_sd_HS90 -5.243 0.234 -22.431 0.000

A one unit increase in the standard deviation is associated with 3.055 increased bad mental health days for Whites and 0.476 decreasefor Latinos.

Changepoint Creation and Validation

## 
## INFO: To supress printing the parameers in beast(),      set print.options = 0 
## INFO: To supress printing the parameers in beast.irreg(),set print.options = 0 
## INFO: To supress printing the parameers in beast123(),   set extra$printOptions = 0  
## INFO: To supress warning messages in beast(),            set quiet = 1 
## INFO: To supress warning messages in beast.irreg(),      set quiet = 1 
## INFO: To supress warning messages in beast123(),         set extra$quiet = 1  
## 
## #--------------------------------------------------#
## #       Brief summary of Input Data                #
## #--------------------------------------------------#
## Data Dimension: One signal of length 75
## IsOrdered     : Yes, ordered in time
## IsRegular     : Yes, evenly spaced at interval of  1 (unknown unit)
## hasSeasonCmpnt: FALSE | no periodic or seasonal component. The model Y=Trend+Error is fitted.
## HasOutlierCmpt: FALSE | If true, Y=Trend+Outlier+Error (experimental) is fitted instead of Y=Trend+Error 
## Detrend       : FALSE | If true, remove a global trend component before running BEAST & add it back after BEAST
## MissingValue  : NaN  flagged as missing values 
## MaxMissingRate: if more than 75% of data is missing, BEAST will skip it.
## 
## 
## #--------------------------------------------------#
## #      OPTIONS used in the MCMC inference          #
## #--------------------------------------------------#
## 
## #......Start of displaying 'MetaData' ......
## metadata                = list()     # metadata is used to interpret the input data Y
## metadata$season         = 'none'     # trend-only data with no periodic variation
## metadata$startTime      = 1          # unknown unit
## metadata$deltaTime      = 1          # unknown unit
## metadata$maxMissingRate = 0.75       # if more than 75% of data is missing, BEAST will skip it.
## metadata$detrend        = FALSE      # if true,remove a global trend  cmpnt before running BEAST & add it back later
## #........End of displaying MetaData ........
## 
## #......Start of displaying 'prior' ......
## prior                   = list()     # prior is the true model parameters of BEAST
## prior$trendMinOrder     = 0          # torder.minmax[1]: min trend polynomial order alllowed
## prior$trendMaxOrder     = 1          # torder.minmax[2]: max trend polynomial order alllowed
## prior$trendMinKnotNum   = 0          # tcp.minmax[1]   : min num of chngpts in trend allowed
## prior$trendMaxKnotNum   = 10         # tcp.minmax[2]   : max num of chngpts in trend allowed
## prior$trendMinSepDist   = 3          # tseg.min        : min trend segment length in terms of datapoints
## prior$trendLeftMargin   = 3          # tseg.leftmargin : no trend chngpts in the first 3 datapoints
## prior$trendRightMargin  = 3          # tseg.rightmargin: no trend chngpts in the last 3 datapoints
## prior$K_MAX             = 22         # max number of terms in general linear model (relevant only at small values)
## prior$precValue         = 1.5        # useful mainly when precPriorType='constant'
## prior$modelPriorType    = 1         
## prior$precPriorType     = 'uniform'
## #......End of displaying prior ......
## 
## #......Start of displaying 'mcmc' ......
## mcmc                           = list()     # mcmc is not BEAST parameters but MCMC sampler options
## mcmc$seed                      = 0          # A nonzero seed to replicate among runs
## mcmc$samples                   = 8000       # Number of samples saved per chain: the larger, the better
## mcmc$thinningFactor            = 5          # Thinning the chain: the larger, the better 
## mcmc$burnin                    = 200        # Number of initial samples discarded: the larger, the better
## mcmc$chainNumber               = 3          # Number of chains: the larger, the better
## mcmc$maxMoveStepSize           = 4          # Max step of jumping from current changepoint: No need to change
## mcmc$trendResamplingOrderProb  = 0.1        # Proposal probability of sampling trend polynominal order 
## mcmc$credIntervalAlphaLevel    = 0.95       # The alphal level for Credible Intervals
## # Total number of models randomly visited in BEAST is (burnin+sampples*thinFactor)*chainNumber=120600
## #......End of displaying mcmc ......
## 
## #......Start of displaying 'extra' ......
## extra                      = list() # extra is used to configure output/computing options
## extra$dumpInputData        = TRUE  # if true, dump a copy of the input data as o$data 
## extra$whichOutputDimIsTime = 1     # 1,2 or 3; which dim of the result is time; used for a 2D/3D input Y
## extra$computeCredible      = FALSE # if true, compute  credibiel interval of estimated Y (e.g., o$trend$CI)
## extra$fastCIComputation    = TRUE  # if true, do not sort but approximiate CI 
## extra$computeTrendOrder    = TRUE  # if true, dump the estimated trend polynomial order 
## extra$computeTrendChngpt   = TRUE  # if true, dump the trend changepoints (tcp) in the output 
## extra$computeTrendSlope    = TRUE  # if true, dump the time-varying slope in trend
## extra$tallyPosNegTrendJump = TRUE  # differentiate postive/negative jumps at tcp
## extra$tallyIncDecTrendJump = TRUE  # differentiate increased/decreased slopes at tcp
## extra$printProgressBar     = TRUE  # if true, show an ascii progressbar
## extra$printOptions         = TRUE  # if true, print the option of the BEAST run
## extra$consoleWidth         = 80    # an integer specifying the console width for printing
## extra$numThreadsPerCPU     = 2     # each cpu core spawns 2 concurrent threads (for beast123())
## extra$numParThreads        = 0     # total number of threads (for beast123() only)
## #......End of displaying extra ......
## 
## -Progress:  0.0% done[>********************************************************]\Progress:  4.2% done[==>******************************************************]|Progress:  8.3% done[=====>***************************************************]/Progress: 12.5% done[=======>*************************************************]-Progress: 16.7% done[==========>**********************************************]\Progress: 20.8% done[============>********************************************]|Progress: 25.0% done[==============>******************************************]/Progress: 29.2% done[=================>***************************************]-Progress: 33.3% done[===================>*************************************]\Progress: 37.5% done[=====================>***********************************]|Progress: 41.7% done[========================>********************************]/Progress: 45.8% done[==========================>******************************]-Progress: 50.0% done[=============================>***************************]\Progress: 54.2% done[===============================>*************************]|Progress: 58.3% done[=================================>***********************]/Progress: 62.5% done[====================================>********************]-Progress: 66.7% done[======================================>******************]\Progress: 70.8% done[========================================>****************]|Progress: 75.0% done[===========================================>*************]/Progress: 79.2% done[=============================================>***********]-Progress: 83.3% done[================================================>********]\Progress: 87.5% done[==================================================>******]|Progress: 91.7% done[====================================================>****]/Progress: 95.8% done[=======================================================>*]-Progress:100.0% done[=========================================================]

## #####################################################################
## #                      Seasonal  Changepoints                       #
## #####################################################################
##  No seasonal/periodic component present (i.e., season='none')
## 
## 
## #####################################################################
## #                      Trend  Changepoints                          #
## #####################################################################
## .-------------------------------------------------------------------.
## | Ascii plot of probability distribution for number of chgpts (ncp) |
## .-------------------------------------------------------------------.
## |Pr(ncp = 0 )=0.000|*                                               |
## |Pr(ncp = 1 )=0.000|*                                               |
## |Pr(ncp = 2 )=0.094|**************                                  |
## |Pr(ncp = 3 )=0.230|**********************************              |
## |Pr(ncp = 4 )=0.319|*********************************************** |
## |Pr(ncp = 5 )=0.215|********************************                |
## |Pr(ncp = 6 )=0.097|***************                                 |
## |Pr(ncp = 7 )=0.035|******                                          |
## |Pr(ncp = 8 )=0.008|**                                              |
## |Pr(ncp = 9 )=0.002|*                                               |
## |Pr(ncp = 10)=0.001|*                                               |
## .-------------------------------------------------------------------.
## |    Summary for number of Trend ChangePoints (tcp)                 |
## .-------------------------------------------------------------------.
## |ncp_max    = 10   | MaxTrendKnotNum: A parameter you set           |
## |ncp_mode   = 4    | Pr(ncp= 4)=0.32: There is a 31.9% probability  |
## |                  | that the trend component has  4 changepoint(s).|
## |ncp_mean   = 4.14 | Sum{ncp*Pr(ncp)} for ncp = 0,...,10            |
## |ncp_pct10  = 3.00 | 10% percentile for number of changepoints      |
## |ncp_median = 4.00 | 50% percentile: Median number of changepoints  |
## |ncp_pct90  = 6.00 | 90% percentile for number of changepoints      |
## .-------------------------------------------------------------------.
## | List of probable trend changepoints ranked by probability of      |
## | occurrence: Please combine the ncp reported above to determine    |
## | which changepoints below are  practically meaningful              |
## '-------------------------------------------------------------------'
## |tcp#              |time (cp)                  |prob(cpPr)          |
## |------------------|---------------------------|--------------------|
## |1                 |50.000000                  |0.99838             |
## |2                 |71.000000                  |0.95283             |
## |3                 |60.000000                  |0.89296             |
## |4                 |65.000000                  |0.47396             |
## |5                 |41.000000                  |0.18875             |
## |6                 |56.000000                  |0.15608             |
## |7                 |7.000000                   |0.09246             |
## |8                 |18.000000                  |0.03500             |
## |9                 |29.000000                  |0.03421             |
## |10                |20.000000                  |0.03267             |
## .-------------------------------------------------------------------.
## 
## 
## 
## NOTE: the beast output object 'o' is a LIST. Type 'str(o)' to see all 
## the elements in it. Or use 'plot(o)' or 'plot(o,interactive=TRUE)' to 
## plot the model output.

Monthly changepoints are all post Trump presidency and related to political events. Final decrease of hate speech takes place after impeachment inquiry begins for Trump.

[1] “2018-01-01” - Federal government shut down threatened if border wall is not funded. https://en.wikipedia.org/wiki/Category:January_2018_events_in_the_United_States

[2] “2018-11-01” - Midterm election. https://en.wikipedia.org/wiki/Category:November_2018_events_in_the_United_States

[3] “2019-03-01” - Trump speech at 2019 Conservative Political Action Conference. https://en.wikipedia.org/wiki/Timeline_of_the_Donald_Trump_presidency_(2019_Q1)

[4] “2019-09-01” - Impeachment inquiry into Donald Trump. https://en.wikipedia.org/wiki/Category:September_2019_events_in_the_United_States

Difference-in-Differences Tests - one changepoint

90 Days Pre- and Post-

Difference-in-differences for days bad mental health - 90 days pre and post changepoint
term estimate std.error statistic p.value
(Intercept) 8.374 0.082 102.302 0
X_age_g -0.590 0.012 -50.130 0
X_educag -0.949 0.020 -47.034 0
female 1.443 0.039 36.814 0
treatment -3.280 0.094 -34.764 0
post -0.188 0.041 -4.596 0
interaction 0.735 0.146 5.035 0

Treatment (-3.280): This indicates that Latinos (the “treatment group”) report 3.28 fewer poor mental health days compared to Whites (the “control group”) before January 1, 2018, holding other variables constant.

Post (-0.188 ): Individuals in the post-intervention period (after January 1, 2018) report about 0.19 fewer poor mental health days compared to those in the pre-intervention period, holding other variables constant.

Interaction (0.735): This interaction term captures the additional effect of being both Latino and in the post-intervention period. Specifically, Latinos in the post-intervention period report 0.547 more poor mental health days than what would be expected from the separate effects of being Latino and being in the post-intervention period alone.

Difference-in-differences for frequent days bad mental health - 90 days pre and post changepoint
term estimate std.error statistic p.value
(Intercept) 0.277 0.003 83.900 0.000
X_age_g -0.018 0.000 -37.473 0.000
female 0.049 0.002 30.675 0.000
X_educag -0.037 0.001 -45.476 0.000
treatment -0.109 0.004 -28.503 0.000
post -0.006 0.002 -3.552 0.000
interaction 0.020 0.006 3.435 0.001

Treatment (-0.109): Latinos (the treatment group) report 10.09 percentage points fewer frequent bad mental health days compared to Whites (the control group), before January 1, 2018. This suggests that Latinos tend to have better mental health outcomes than Whites in terms of frequent bad mental health days.

Post (-0.006): In the post-intervention period (after January 1, 2018), there is a decrease of 0.6 percentage points in frequent bad mental health days, holding other factors constant. This suggests a small overall improvement in mental health during the post-intervention period.

Interaction (0.020): The interaction term indicates that Latinos in the post-intervention period experience an increase of 0.14 percentage points in frequent bad mental health days compared to what would be expected from the additive effects of being Latino and being in the post-intervention period alone. This suggests that although Latinos generally report fewer frequent bad mental health days, this advantage decreases slightly in the post-intervention period compared to Whites.

Difference-in-differences for any days bad mental health - 90 days pre and post changepoint
term estimate std.error statistic p.value
(Intercept) 0.605 0.005 126.557 0.000
X_age_g -0.063 0.001 -91.263 0.000
female 0.115 0.002 50.093 0.000
X_educag -0.017 0.001 -14.427 0.000
treatment -0.175 0.006 -31.822 0.000
post -0.016 0.002 -6.728 0.000
interaction 0.011 0.009 1.331 0.183

Treatment (-0.175): Latinos (treatment group) report 17.5 percentage points fewer bad mental health days compared to Whites (control group), before January 1, 2018. This implies that Latinos tend to report better mental health (in terms of fewer bad mental health days) compared to Whites

Post (-0.016): Being in the post-intervention period (after January 1, 2018) is associated with a small decrease of 1.61 percentage points in any bad mental health days, suggesting an improvement in mental health after the intervention.

Interaction (0.011): The interaction term between treatment (Latinos) and post (post-intervention period) is not statistically significant.

Difference-in-Differences Tests - Multiple Changepoints

Difference-in-differences for days bad mental health - multiple changepoints
term estimate std.error statistic p.value conf.low conf.high
(Intercept) 7.804 0.022 351.494 0.000 7.761 7.848
X_age_g -0.571 0.003 -172.591 0.000 -0.577 -0.564
X_educag -0.872 0.005 -158.662 0.000 -0.883 -0.862
female 1.378 0.011 124.685 0.000 1.357 1.400
treatment -2.219 0.024 -91.317 0.000 -2.267 -2.172
post_1 0.287 0.017 16.747 0.000 0.254 0.321
post_2 0.443 0.026 16.998 0.000 0.392 0.494
post_3 0.703 0.021 33.902 0.000 0.663 0.744
post_4 0.807 0.026 30.717 0.000 0.756 0.859
interaction_1 -0.734 0.058 -12.554 0.000 -0.848 -0.619
interaction_2 -0.224 0.093 -2.410 0.016 -0.407 -0.042
interaction_3 -0.900 0.068 -13.145 0.000 -1.034 -0.766
interaction_4 -1.066 0.087 -12.309 0.000 -1.236 -0.896

Effects

Interaction 1: -.447 Interaction 2: 0.219 Interaction 3: -0.197 interaction 4: -0.259

In this model we see that white mental health worsens over time. However, for Latinos we see that in period two (worst time of sentiment) latino mental health worsens.

Difference-in-differences for frequent days bad mental health - multiple changepoints
term estimate std.error statistic p.value conf.low conf.high
(Intercept) 0.260 0.001 289.224 0.000 0.259 0.262
X_age_g -0.017 0.000 -128.905 0.000 -0.018 -0.017
X_educag -0.035 0.000 -154.804 0.000 -0.035 -0.034
female 0.045 0.000 100.070 0.000 0.044 0.046
treatment -0.077 0.001 -78.136 0.000 -0.079 -0.075
post_1 0.010 0.001 13.937 0.000 0.008 0.011
post_2 0.016 0.001 15.079 0.000 0.014 0.018
post_3 0.025 0.001 29.145 0.000 0.023 0.026
post_4 0.028 0.001 25.937 0.000 0.026 0.030
interaction_1 -0.025 0.002 -10.584 0.000 -0.030 -0.020
interaction_2 -0.005 0.004 -1.210 0.226 -0.012 0.003
interaction_3 -0.026 0.003 -9.406 0.000 -0.032 -0.021
interaction_4 -0.037 0.004 -10.597 0.000 -0.044 -0.030

Effects

Interaction 1: -0.015 Interaction 2: 0.011 Interaction 3: -0.001 interaction 4: -0.009

In this model we see that white mental health worsens over time. However, for Latinos we see that in period two (worst time of sentiment) latino mental health worsens.

Difference-in-differences for any days bad mental health - multiple changepoints
term estimate std.error statistic p.value conf.low conf.high
(Intercept) 0.572 0.001 440.123 0 0.569 0.574
X_age_g -0.060 0.000 -312.357 0 -0.061 -0.060
X_educag -0.016 0.000 -50.469 0 -0.017 -0.016
female 0.115 0.001 177.663 0 0.114 0.116
treatment -0.116 0.001 -81.795 0 -0.119 -0.114
post_1 0.019 0.001 18.889 0 0.017 0.021
post_2 0.028 0.002 18.278 0 0.025 0.031
post_3 0.049 0.001 40.132 0 0.046 0.051
post_4 0.060 0.002 39.049 0 0.057 0.063
interaction_1 -0.065 0.003 -18.926 0 -0.071 -0.058
interaction_2 -0.062 0.005 -11.447 0 -0.073 -0.052
interaction_3 -0.097 0.004 -24.171 0 -0.105 -0.089
interaction_4 -0.103 0.005 -20.350 0 -0.113 -0.093

Effects

Interaction 1: -0.046 Interaction 2: -0.034 Interaction 3: -0.048 interaction 4: -0.097

In this model we see that the gap between Latinx and White mental health decreases in the first two periods and grows in periods 3 and 4