The purpose of this study is to investigate significant determinants of depression in the Austrian population. Specifically, it examines the impact of general life conception, perception of other people and perception of national welfare on depressive symptoms. Enhancing the understanding of depression is globally critical as it states a public health issue that impacts all facets of life, including relationships, employment, and quality of life. Its impact goes beyond the personal level and needs to be considered by policy makers across multiple sectors, which justifies for further addition to research. The desired outcome is to pinpoint important risk variables linked to depression and offer statistical evidence in support of the existing body of knowledge.
According to the WHO, depression is defined as a common mental health condition that can happen to anyone. It is characterized by a low mood or loss of pleasure or interest in activities for long periods of time. This section briefly discusses prior research on the determinants of depression to be examined in this study. Accordingly, after each section, the derived hypothesis is stated.
Mental health outcomes are directly related to people’s overall life satisfaction and their sense of control over their lives. Higher levels of life satisfaction and a strong sense of control can serve as buffers against depression (Lombardo et al. 2018) (Gigantesco et al. 2019). Research shows that depressive symptoms can be predicted by a sense of not having control over one’s life, especially for underprivileged people. People who feel unable to control their own life report higher levels of emotional anguish, according to studies (Gallagher et al. 2022). The impact of subjective life satisfaction on depression seems logical, as people who feel consistently unhappy are also more likely to describe themselves as depressed.
Hypothesis 1 (H1): Life satisfaction and a sense of control over one’s life negatively correlate with depressive symptoms.
Mental well-being is influenced by social trust and the perception of others’ helpfulness. People with high interpersonal trust have stronger support networks and are less likely to experience stress and depression. On the other side, those with low social trust are more likely to feel vulnerable and alone, which can have a negative impact on their mental health. Additionally, feeling secure and connected to others is a protective factor against depression (Fermin et al. 2022).
Hypothesis 2 (H2): Trust in people and their willingness to help others negatively correlates with depressive symptoms.
National factors which are known to affect mental health include economic satisfaction and trust in democratic institutions. Studies indicate that economic instability raises stress levels and contributes to depression, especially when people perceive the national economy as unstable (Frasquilho et al. 2016). Additionally, dissatisfaction with democratic institutions can lead to feelings of hopelessness, powerlessness, and anxiety about the future. People who feel disconnected from political decision-making or who believe that governance is unfair are more likely to experience depressive symptoms (Poses und Revilla 2022).
Hypothesis 3 (H3): Satisfaction with the domestic economy and democracy negatively correlate with depressive symptoms.
The data used for this R script was taken from the European Societal Survey (ESS) regarding various aspects of people’s lives. First, the data was subset to Austrian participants only, as this country was the subject of observation. The testing of the hypotheses with R was then conducted in a multiple step process:
ess_austria <- ess %>% filter(cntry == "AT")
#Step1: Define consistent ordered factor levels
likert_levels <- c("Strongly Disagree", "Disagree", "Neutral", "Agree", "Strongly Agree")
#Step 2 : Recode a singl3e Likert column(returns factor with all 5 levels)
likert_levels <- c("Strongly Disagree", "Disagree", "Neutral", "Agree", "Strongly Agree")
recode_likert <- function(x) {
x <- case_when(
x == 1 ~ "Strongly Disagree",
x == 2 ~ "Disagree",
x == 3 ~ "Neutral",
x == 4 ~ "Agree",
x == 5 ~ "Strongly Agree",
TRUE ~ NA_character_
)
factor(x, levels = likert_levels, ordered = TRUE)
}
#Step 3 :Manually build the dataframe by recoding each variable one-by-one
depression_items <- data.frame(
fltdpr = recode_likert(ess_austria$fltdpr),
fltlnl = recode_likert(ess_austria$fltlnl),
cldgng = recode_likert(ess_austria$cldgng),
wrhpp = recode_likert(ess_austria$wrhpp),
fltsd = recode_likert(ess_austria$fltsd),
enjlf = recode_likert(ess_austria$enjlf),
flteeff= recode_likert(ess_austria$flteeff),
slprl = recode_likert(ess_austria$slprl)
)
#Step 4 : Removes rows with missing data
depression_items <- depression_items[complete.cases(depression_items), ]
#Step 5 : Likert Plot
likert_obj <- likert(depression_items)
summary(likert_obj)
## Item low neutral high mean sd
## 6 enjlf 36.44981 41.447652 22.1025420 2.813873 0.8240965
## 4 wrhpp 30.80569 47.221025 21.9732874 2.876346 0.7866098
## 8 slprl 89.40112 7.496769 3.1021112 1.627747 0.7549758
## 7 flteeff 91.08143 6.893580 2.0249892 1.583800 0.7089182
## 2 fltlnl 95.43300 3.231366 1.3356312 1.282637 0.5896340
## 3 cldgng 95.77768 2.929772 1.2925463 1.358466 0.6052059
## 5 fltsd 96.63938 2.068074 1.2925463 1.355881 0.5901644
## 1 fltdpr 96.94097 2.283498 0.7755278 1.351573 0.5659584
plot(likert_obj)
#Create CES-D 8 score as a sum of depression items
ess_austria <- ess_austria %>%
mutate(cesd8 = fltdpr + fltlnl + cldgng + wrhpp + fltsd + enjlf + flteeff + slprl)
#Unweighted model
model_unweighted <- lm(cesd8 ~ happy + stflife + ppltrst + pplhlp + stfeco + stfdem, data = ess_austria)
model_weighted <- lm(cesd8 ~ happy + stflife + ppltrst + pplhlp + stfeco + stfdem, data = ess_austria, weights = dweight)
modelsummary(list(
"Unweighted Model" = model_unweighted,
"Weighted Model" = model_weighted
), stars = TRUE)
| Unweighted Model | Weighted Model | |
|---|---|---|
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 | ||
| (Intercept) | 17.623*** | 17.661*** |
| (0.287) | (0.299) | |
| happy | -0.032 | 0.025 |
| (0.046) | (0.047) | |
| stflife | -0.256*** | -0.289*** |
| (0.046) | (0.047) | |
| ppltrst | -0.082** | -0.103*** |
| (0.030) | (0.030) | |
| pplhlp | -0.023 | -0.035 |
| (0.031) | (0.031) | |
| stfeco | -0.121*** | -0.100*** |
| (0.029) | (0.029) | |
| stfdem | 0.030 | 0.003 |
| (0.026) | (0.026) | |
| Num.Obs. | 2257 | 2257 |
| R2 | 0.071 | 0.075 |
| R2 Adj. | 0.069 | 0.072 |
| AIC | 10335.3 | 10642.5 |
| BIC | 10381.1 | 10688.2 |
| Log.Lik. | -5159.656 | -5313.237 |
| RMSE | 2.38 | 2.38 |
The coefficient for happiness in the unweighted model is
round(coef(model_unweighted)["happy"], 2)
## happy
## -0.03
The coefficient for happiness in the weighted model is
round(coef(model_weighted)["happy"], 2)
## happy
## 0.02
The regression confirms Hypothesis 1: higher life satisfaction and control significantly reduce depressive symptoms. Hypothesis 2 was not supported—trust in people and perceived helpfulness showed weaker or non-significant effects. Hypothesis 3 received mixed support: satisfaction with economy and democracy were significantly related, but directionality and strength varied.
Defining Clinical Depression Cutoff
ess_austria <- ess_austria %>%
mutate(clin_depression = ifelse(cesd8 >= 9, 1, 0))
table(ess_austria$clin_depression)
##
## 0 1
## 1 2320
prop.table(table(ess_austria$clin_depression))
##
## 0 1
## 0.0004308488 0.9995691512
Logistic Regression Model (Binary Outcome)
logit_model <- glm(clin_depression ~ happy + stflife + ppltrst + pplhlp + stfeco + stfdem + agea + gndr + eisced + hincfel + health,
data = ess_austria, family = "binomial")
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(logit_model)
##
## Call:
## glm(formula = clin_depression ~ happy + stflife + ppltrst + pplhlp +
## stfeco + stfdem + agea + gndr + eisced + hincfel + health,
## family = "binomial", data = ess_austria)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 351.7238 36764.7718 0.010 0.992
## happy 42.9242 3039.0365 0.014 0.989
## stflife -101.3549 2174.9642 -0.047 0.963
## ppltrst 60.8107 1617.6805 0.038 0.970
## pplhlp -2.2010 819.3314 -0.003 0.998
## stfeco 83.9841 1866.3531 0.045 0.964
## stfdem -12.4807 283.5414 -0.044 0.965
## agea 0.2512 55.2755 0.005 0.996
## gndr 77.5336 9031.3460 0.009 0.993
## eisced -5.8350 185.8346 -0.031 0.975
## hincfel 374.3539 8601.1006 0.044 0.965
## health -199.8502 4913.0954 -0.041 0.968
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1.7432e+01 on 2243 degrees of freedom
## Residual deviance: 1.3539e-05 on 2232 degrees of freedom
## (110 observations deleted due to missingness)
## AIC: 24
##
## Number of Fisher Scoring iterations: 25
Odds Ratios and Confidence Intervals
tidy(logit_model, exponentiate = TRUE, conf.int = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## # A tibble: 12 × 5
## term estimate conf.low conf.high p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 5.65e+152 0 Inf 0.992
## 2 happy 4.38e+ 18 2.25e- 72 4.68e 89 0.989
## 3 stflife 9.60e- 45 2.07e-111 1.46e 17 0.963
## 4 ppltrst 2.57e+ 26 1.59e- 18 1.15e 69 0.970
## 5 pplhlp 1.11e- 1 1.07e- 30 1.15e 28 0.998
## 6 stfeco 2.98e+ 36 3.73e- 45 5.27e110 0.964
## 7 stfdem 3.80e- 6 5.96e- 15 6.92e 3 0.965
## 8 agea 1.29e+ 0 4.30e- 2 2.38e 1 0.996
## 9 gndr 4.70e+ 33 0 Inf 0.993
## 10 eisced 2.92e- 3 1.28e- 9 5.21e 2 0.975
## 11 hincfel 3.80e+162 3.17e-103 Inf 0.965
## 12 health 1.61e- 87 4.09e-238 2.59e 51 0.968
Pseudo R-squared for model fit
PseudoR2(logit_model, which = "Nagelkerke")
## Nagelkerke
## 0.9999992
Compare to Linear Regression (CES-D 8 score)
model_lin <- lm(cesd8 ~ happy + stflife + ppltrst + pplhlp + stfeco + stfdem + agea + gndr + eisced + hincfel + health,
data = ess_austria)
summary(model_lin)
##
## Call:
## lm(formula = cesd8 ~ happy + stflife + ppltrst + pplhlp + stfeco +
## stfdem + agea + gndr + eisced + hincfel + health, data = ess_austria)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.1636 -1.6035 -0.2423 1.2941 12.6610
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 15.570649 0.447830 34.769 < 2e-16 ***
## happy -0.015879 0.045277 -0.351 0.7258
## stflife -0.195492 0.046720 -4.184 2.97e-05 ***
## ppltrst -0.071692 0.029574 -2.424 0.0154 *
## pplhlp -0.022254 0.030293 -0.735 0.4626
## stfeco -0.115947 0.029035 -3.993 6.73e-05 ***
## stfdem 0.022372 0.025589 0.874 0.3820
## agea -0.002558 0.003097 -0.826 0.4090
## gndr 0.475796 0.100597 4.730 2.39e-06 ***
## eisced 0.008903 0.009811 0.908 0.3642
## hincfel -0.190062 0.075846 -2.506 0.0123 *
## health 0.531129 0.070568 7.526 7.52e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.331 on 2232 degrees of freedom
## (110 observations deleted due to missingness)
## Multiple R-squared: 0.1075, Adjusted R-squared: 0.1031
## F-statistic: 24.44 on 11 and 2232 DF, p-value: < 2.2e-16