Looking at Hopkins statistic, our One Hot Encoded, rank inverse and centered dataset is suitable for clustering. The figure below depicts the density plot of the Hopkins statistic 25% sample. The Hopkins statistic is a measure of the cluster tendency of a dataset. A value close to 1 indicates that the dataset is highly clusterable, while a value close to 0 indicates that the dataset is uniformly distributed and not suitable for clustering.
# Set color palette
background_color <- "#f0eee5"
accent_color <- "#bc5c3a"
base_color <- "brown"
par(bg = background_color,
font = 2) # Bold font
if (length(hopkins_stat_list) >= 2) {
plot(density(hopkins_stat_list),
main = "Density Plot of Hopkins Scores",
col = base_color,
fg = accent_color,
col.main = accent_color,
col.axis = accent_color,
col.lab = accent_color,
# Make title bold and slightly larger
cex.main = 1.2,
font.main = 2,
# Make axis labels bold
font.lab = 2,
# Ensure plot background matches
panel.first = rect(par("usr")[1], par("usr")[3],
par("usr")[2], par("usr")[4],
col = background_color,
border = NA))
# Redraw density line
lines(density(hopkins_stat_list),
col = base_color,
lwd = 3)
}
Clustering was performed by running a Gaussian Mixture Model(GMM) on the data using exclusively external exposures, cumulative temperature variables were excluded since algorithm performance significantly degraded when these vatiable were included.
Since the GMM algorithm struggles with high dimensionality, I used the HDclassif package to run Projectional High Dimensional Clustering (HHDC) on the data and reduce the number of dimensions. The algorithm was run with 2 to 12 clusters and the optimal number of clusters was selected using the Bayesian Information Criterion(BIC). The figure below shows the BIC values for the different models. The model with the highest BIC value is the best model, in this case the model AKJBKQKDK with 11 clusters and a BIC of 7569. (I computed also other models with different number of clusters, for figure clarity I only show the best 3 performing models)
hddc_probabilities = as.data.frame(hd$posterior) # probabilities
hddc_clusters = as.data.frame(hd$classification) # cluster assignments
hddc_bic = as.data.frame(hd$allCriteria)
hddc_df = hddc_bic[, c("model", "K", "BIC")]
hddc_df$K = as.factor(hddc_df$K)
hddc_df$model = as.factor(hddc_df$model)
ggplot(hddc_df, aes(K, BIC)) + geom_point(aes(colour = model))
Then I fed to the GMM algorithm cluster aggignments from the HHDC algorithm and the external exposures. The GMM algorithm was run with 2 to 12 clusters and the optimal number of clusters was selected using the Bayesian Information Criterion(BIC). The highest BIC value was obtained with 5 clusters and the model was selected as the best model.
I then proceeded to generate some summary statistics by cluster. The table below shows the mean values for each variable by cluster.
library(dplyr)
library(DT)
# Function to compute cluster-wise summary statistics
compute_cluster_summary <- function(data, cluster_column) {
# Separate numeric and categorical columns
numeric_cols <- sapply(data, is.numeric)
dummy_cols <- sapply(data, function(x) {
is.factor(x) && length(levels(x)) == 2 && all(levels(x) %in% c("0", "1"))
})
# Compute means for numeric variables
numeric_summary <- data %>%
group_by(!!sym(cluster_column)) %>%
summarise(across(where(is.numeric), mean, .names = "{col}_mean"))
# Compute proportion of 1s for dummy variables
dummy_summary <- data %>%
group_by(!!sym(cluster_column)) %>%
summarise(across(
where(function(x) {
is.factor(x) && length(levels(x)) == 2 && all(levels(x) %in% c("0", "1"))
}),
~mean(as.numeric(as.character(.x))),
.names = "{col}_prop_1"
))
# Merge numeric and dummy summaries
full_summary <- left_join(numeric_summary, dummy_summary, by = cluster_column)
return(full_summary)
}
# Compute cluster summaries
cluster_summary <- compute_cluster_summary(clustered_data, "cluster")
# Round all numeric values to 2 decimal places
cluster_summary <- cluster_summary %>%
mutate(across(where(is.numeric), ~round(.x, 2)))
# Print the summary table interactively with datatable
datatable(
cluster_summary,
caption = "Cluster-wise Summary Statistics",
options = list(pageLength = 5, autoWidth = TRUE, scrollX = TRUE)
)
I also created some alternative visuals to better grasp what is going on in the clusters.
I performed univariate regressions for each variable against the cluster variable. The table below shows the results of the univariate regressions. The table shows the coefficient, standard error, t-value, and p-value for each variable. Cluster membership is the dependent variable.
## 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: 80 × 8
## term estimate std.error statistic p.value conf.low conf.high cluster
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 bmi 1.09 0.00529 16.5 4.42e- 61 1.08 1.10 cluster_1
## 2 age 1.05 0.00248 20.9 1.40e- 96 1.05 1.06 cluster_1
## 3 gripsum 0.968 0.00197 -16.7 2.34e- 62 0.964 0.971 cluster_1
## 4 pm10 1.08 0.00355 22.2 3.44e-109 1.07 1.09 cluster_1
## 5 pm2p5 1.12 0.00493 22.8 8.95e-115 1.11 1.13 cluster_1
## 6 prec20 1.09 0.00516 16.6 4.06e- 62 1.08 1.10 cluster_1
## 7 a1c 2.36 0.0487 17.7 9.81e- 70 2.15 2.60 cluster_1
## 8 cho 0.985 0.000965 -15.5 5.83e- 54 0.983 0.987 cluster_1
## 9 crp 1.04 0.00536 7.65 2.05e- 14 1.03 1.05 cluster_1
## 10 cyc 12.0 0.190 13.1 6.29e- 39 8.28 17.5 cluster_1
## # ℹ 70 more rows
## Warning: package 'gt' was built under R version 4.3.3
| Logistic Regression Results | |||||
| Odds Ratios with Confidence Intervals | |||||
| Covariate | cluster_1 | cluster_2 | cluster_3 | cluster_4 | cluster_5 |
|---|---|---|---|---|---|
| bmi | 1.091 [1.080, 1.103] (p=0.000)*** | 0.951 [0.939, 0.963] (p=0.000)*** | 0.879 [0.866, 0.892] (p=0.000)*** | 1.026 [1.005, 1.046] (p=0.013)* | 1.038 [1.019, 1.058] (p=0.000)*** |
| age | 1.053 [1.048, 1.058] (p=0.000)*** | 0.953 [0.947, 0.959] (p=0.000)*** | 0.951 [0.945, 0.957] (p=0.000)*** | 0.979 [0.968, 0.989] (p=0.000)*** | 1.055 [1.045, 1.066] (p=0.000)*** |
| gripsum | 0.968 [0.964, 0.971] (p=0.000)*** | 1.026 [1.021, 1.030] (p=0.000)*** | 1.023 [1.018, 1.028] (p=0.000)*** | 1.025 [1.017, 1.033] (p=0.000)*** | 0.975 [0.967, 0.983] (p=0.000)*** |
| pm10 | 1.082 [1.075, 1.090] (p=0.000)*** | 0.964 [0.956, 0.972] (p=0.000)*** | 0.933 [0.925, 0.941] (p=0.000)*** | 0.948 [0.934, 0.962] (p=0.000)*** | 1.002 [0.989, 1.016] (p=0.735) |
| pm2p5 | 1.119 [1.108, 1.130] (p=0.000)*** | 0.950 [0.939, 0.960] (p=0.000)*** | 0.905 [0.894, 0.916] (p=0.000)*** | 0.929 [0.910, 0.948] (p=0.000)*** | 1.003 [0.984, 1.022] (p=0.765) |
| prec20 | 1.090 [1.079, 1.101] (p=0.000)*** | 0.976 [0.965, 0.988] (p=0.000)*** | 0.865 [0.848, 0.881] (p=0.000)*** | 0.937 [0.912, 0.961] (p=0.000)*** | 1.012 [0.992, 1.031] (p=0.226) |
| a1c | 2.360 [2.148, 2.599] (p=0.000)*** | 0.508 [0.448, 0.573] (p=0.000)*** | 0.317 [0.275, 0.365] (p=0.000)*** | 1.028 [0.867, 1.202] (p=0.741) | 1.363 [1.194, 1.545] (p=0.000)*** |
| cho | 0.985 [0.983, 0.987] (p=0.000)*** | 1.010 [1.007, 1.012] (p=0.000)*** | 1.015 [1.013, 1.017] (p=0.000)*** | 1.004 [1.000, 1.008] (p=0.041)* | 0.993 [0.989, 0.996] (p=0.000)*** |
| crp | 1.042 [1.031, 1.053] (p=0.000)*** | 0.941 [0.921, 0.959] (p=0.000)*** | 0.863 [0.834, 0.891] (p=0.000)*** | 1.012 [0.999, 1.022] (p=0.044)* | 1.016 [1.005, 1.025] (p=0.002)** |
| cyc | 11.989 [8.280, 17.461] (p=0.000)*** | 0.028 [0.016, 0.048] (p=0.000)*** | 0.039 [0.023, 0.067] (p=0.000)*** | 3.440 [1.825, 6.268] (p=0.000)*** | 11.310 [6.533, 19.425] (p=0.000)*** |
| trg | 1.001 [1.001, 1.002] (p=0.000)*** | 1.000 [0.999, 1.000] (p=0.047)* | 0.998 [0.998, 0.999] (p=0.000)*** | 1.000 [0.999, 1.001] (p=0.480) | 1.000 [0.999, 1.001] (p=0.624) |
| tg_neg5_mean | 1.000 [1.000, 1.000] (p=0.003)** | 1.000 [1.000, 1.000] (p=0.374) | 1.000 [1.000, 1.000] (p=0.219) | 1.000 [1.000, 1.000] (p=0.002)** | 1.000 [1.000, 1.000] (p=0.000)*** |
| tg_neg5_neg2p5_mean | 1.000 [1.000, 1.000] (p=0.000)*** | 1.000 [1.000, 1.000] (p=0.003)** | 1.000 [1.000, 1.000] (p=0.473) | 1.000 [1.000, 1.000] (p=0.004)** | 1.000 [1.000, 1.001] (p=0.000)*** |
| tg_neg2p5_0_mean | 1.000 [1.000, 1.000] (p=0.000)*** | 1.000 [1.000, 1.000] (p=0.000)*** | 1.000 [1.000, 1.000] (p=0.000)*** | 1.000 [1.000, 1.000] (p=0.008)** | 1.000 [1.000, 1.000] (p=0.000)*** |
| tg_27p5_30_mean | 1.003 [1.002, 1.003] (p=0.000)*** | 0.998 [0.997, 0.998] (p=0.000)*** | 0.996 [0.995, 0.997] (p=0.000)*** | 1.000 [1.000, 1.001] (p=0.384) | 1.000 [0.999, 1.000] (p=0.329) |
| tg_g30_mean | 1.009 [1.007, 1.011] (p=0.000)*** | 0.991 [0.988, 0.994] (p=0.000)*** | 0.985 [0.981, 0.989] (p=0.000)*** | 1.003 [1.000, 1.005] (p=0.034)* | 0.999 [0.996, 1.002] (p=0.530) |
| Multivariate Regression Results | |||||
| Coefficients with Confidence Intervals | |||||
| Covariate | cluster_1 | cluster_2 | cluster_3 | cluster_4 | cluster_5 |
|---|---|---|---|---|---|
| bmi | 0.010 [0.008, 0.012] (p=0.000)*** | -0.006 [-0.008, -0.005] (p=0.000)*** | -0.006 [-0.007, -0.005] (p=0.000)*** | 0.000 [-0.001, 0.001] (p=0.712) | 0.002 [0.000, 0.003] (p=0.008)** |
| age | 0.005 [0.004, 0.006] (p=0.000)*** | -0.001 [-0.002, -0.001] (p=0.001)** | -0.002 [-0.003, -0.001] (p=0.000)*** | -0.002 [-0.003, -0.002] (p=0.000)*** | 0.001 [0.000, 0.002] (p=0.011)* |
| gripsum | -0.001 [-0.002, 0.001] (p=0.364) | 0.002 [0.001, 0.003] (p=0.000)*** | 0.001 [0.000, 0.002] (p=0.002)** | -0.000 [-0.001, 0.001] (p=0.864) | -0.003 [-0.003, -0.002] (p=0.000)*** |
| smoke1 | -0.001 [-0.019, 0.017] (p=0.886) | -0.024 [-0.037, -0.010] (p=0.000)*** | -0.018 [-0.029, -0.007] (p=0.002)** | 0.024 [0.014, 0.034] (p=0.000)*** | 0.019 [0.009, 0.029] (p=0.000)*** |
| drink1 | -0.100 [-0.119, -0.080] (p=0.000)*** | 0.068 [0.054, 0.083] (p=0.000)*** | 0.052 [0.040, 0.064] (p=0.000)*** | -0.014 [-0.025, -0.003] (p=0.014)* | -0.007 [-0.018, 0.005] (p=0.241) |
| pm10 | 0.019 [-0.025, 0.064] (p=0.389) | -0.028 [-0.061, 0.004] (p=0.089) | -0.001 [-0.029, 0.027] (p=0.926) | -0.011 [-0.036, 0.014] (p=0.370) | 0.022 [-0.004, 0.047] (p=0.102) |
| pm2p5 | -0.010 [-0.071, 0.051] (p=0.746) | 0.035 [-0.010, 0.080] (p=0.131) | -0.007 [-0.045, 0.032] (p=0.731) | 0.012 [-0.023, 0.047] (p=0.497) | -0.030 [-0.066, 0.006] (p=0.102) |
| prec20 | 0.007 [0.004, 0.009] (p=0.000)*** | -0.003 [-0.005, -0.001] (p=0.001)** | -0.001 [-0.002, 0.001] (p=0.560) | -0.004 [-0.005, -0.002] (p=0.000)*** | 0.001 [-0.001, 0.002] (p=0.296) |
| a1c | 0.077 [0.062, 0.093] (p=0.000)*** | -0.044 [-0.055, -0.032] (p=0.000)*** | -0.044 [-0.053, -0.034] (p=0.000)*** | -0.000 [-0.009, 0.009] (p=0.961) | 0.010 [0.001, 0.019] (p=0.026)* |
| cho | -0.002 [-0.002, -0.001] (p=0.000)*** | 0.001 [0.001, 0.001] (p=0.000)*** | 0.001 [0.001, 0.001] (p=0.000)*** | 0.000 [-0.000, 0.000] (p=0.198) | -0.000 [-0.000, -0.000] (p=0.016)* |
| crp | 0.004 [0.002, 0.005] (p=0.000)*** | -0.003 [-0.004, -0.002] (p=0.000)*** | -0.002 [-0.003, -0.001] (p=0.000)*** | 0.001 [-0.000, 0.001] (p=0.079) | 0.000 [-0.000, 0.001] (p=0.291) |
| cyc | 0.152 [0.076, 0.229] (p=0.000)*** | -0.201 [-0.257, -0.145] (p=0.000)*** | -0.092 [-0.140, -0.044] (p=0.000)*** | 0.069 [0.026, 0.112] (p=0.002)** | 0.072 [0.027, 0.117] (p=0.002)** |
| trg | 0.000 [0.000, 0.000] (p=0.000)*** | -0.000 [-0.000, -0.000] (p=0.000)*** | -0.000 [-0.000, -0.000] (p=0.000)*** | -0.000 [-0.000, 0.000] (p=0.582) | -0.000 [-0.000, 0.000] (p=0.850) |
| tg_neg5_mean | 0.000 [0.000, 0.000] (p=0.006)** | -0.000 [-0.000, 0.000] (p=0.102) | -0.000 [-0.000, -0.000] (p=0.002)** | -0.000 [-0.000, 0.000] (p=0.324) | 0.000 [-0.000, 0.000] (p=0.099) |
| tg_neg5_neg2p5_mean | -0.000 [-0.000, 0.000] (p=0.744) | 0.000 [-0.000, 0.000] (p=0.427) | 0.000 [-0.000, 0.000] (p=0.600) | 0.000 [-0.000, 0.000] (p=0.803) | -0.000 [-0.000, 0.000] (p=0.212) |
| tg_neg2p5_0_mean | -0.000 [-0.000, 0.000] (p=0.568) | -0.000 [-0.000, 0.000] (p=0.221) | 0.000 [-0.000, 0.000] (p=0.612) | 0.000 [-0.000, 0.000] (p=0.596) | 0.000 [-0.000, 0.000] (p=0.144) |
| tg_27p5_30_mean | 0.000 [0.000, 0.001] (p=0.006)** | -0.000 [-0.000, 0.000] (p=0.682) | 0.000 [-0.000, 0.000] (p=0.433) | -0.000 [-0.000, -0.000] (p=0.003)** | -0.000 [-0.000, -0.000] (p=0.032)* |
| tg_g30_mean | -0.002 [-0.003, -0.000] (p=0.005)** | -0.000 [-0.001, 0.001] (p=0.833) | -0.000 [-0.001, 0.001] (p=0.750) | 0.001 [0.001, 0.002] (p=0.000)*** | 0.001 [0.000, 0.001] (p=0.049)* |
| freq_meat1 | -0.077 [-0.101, -0.053] (p=0.000)*** | 0.082 [0.064, 0.099] (p=0.000)*** | 0.029 [0.014, 0.044] (p=0.000)*** | -0.032 [-0.046, -0.019] (p=0.000)*** | -0.001 [-0.015, 0.013] (p=0.887) |
| freq_dairy1 | -0.136 [-0.163, -0.109] (p=0.000)*** | 0.127 [0.107, 0.147] (p=0.000)*** | 0.074 [0.057, 0.091] (p=0.000)*** | -0.051 [-0.066, -0.036] (p=0.000)*** | -0.014 [-0.030, 0.002] (p=0.081) |
| freq_legeggs1 | 0.009 [-0.009, 0.028] (p=0.324) | 0.021 [0.007, 0.034] (p=0.002)** | 0.010 [-0.002, 0.022] (p=0.093) | -0.034 [-0.044, -0.023] (p=0.000)*** | -0.007 [-0.017, 0.004] (p=0.235) |
| in_partnership1 | 0.008 [-0.016, 0.032] (p=0.529) | -0.002 [-0.020, 0.015] (p=0.804) | 0.020 [0.005, 0.035] (p=0.010)** | -0.016 [-0.029, -0.002] (p=0.023)* | -0.010 [-0.023, 0.004] (p=0.180) |
| small_family1 | 0.014 [-0.009, 0.038] (p=0.234) | 0.010 [-0.007, 0.028] (p=0.244) | 0.001 [-0.014, 0.016] (p=0.870) | -0.018 [-0.031, -0.005] (p=0.008)** | -0.008 [-0.022, 0.006] (p=0.260) |
| man1 | -0.026 [-0.054, 0.002] (p=0.064) | -0.039 [-0.059, -0.018] (p=0.000)*** | -0.038 [-0.056, -0.021] (p=0.000)*** | 0.045 [0.029, 0.061] (p=0.000)*** | 0.059 [0.042, 0.075] (p=0.000)*** |
| low_educ1 | 0.405 [0.381, 0.429] (p=0.000)*** | 0.093 [0.076, 0.111] (p=0.000)*** | -0.560 [-0.575, -0.545] (p=0.000)*** | 0.047 [0.033, 0.060] (p=0.000)*** | 0.015 [0.001, 0.029] (p=0.040)* |
| secondary_educ1 | 0.013 [-0.009, 0.035] (p=0.254) | 0.581 [0.564, 0.597] (p=0.000)*** | -0.620 [-0.633, -0.606] (p=0.000)*** | 0.031 [0.018, 0.043] (p=0.000)*** | -0.004 [-0.017, 0.008] (p=0.511) |
| Multivariate Regression Results | |||||
| Coefficients with Confidence Intervals NO BIOMARKERS | |||||
| Covariate | cluster_1 | cluster_2 | cluster_3 | cluster_4 | cluster_5 |
|---|---|---|---|---|---|
| bmi | 0.015 [0.013, 0.017] (p=0.000)*** | -0.009 [-0.011, -0.008] (p=0.000)*** | -0.008 [-0.010, -0.007] (p=0.000)*** | 0.000 [-0.001, 0.002] (p=0.380) | 0.002 [0.001, 0.003] (p=0.000)*** |
| age | 0.007 [0.005, 0.008] (p=0.000)*** | -0.003 [-0.004, -0.002] (p=0.000)*** | -0.003 [-0.004, -0.002] (p=0.000)*** | -0.002 [-0.003, -0.001] (p=0.000)*** | 0.001 [0.001, 0.002] (p=0.000)*** |
| gripsum | -0.001 [-0.003, -0.000] (p=0.021)* | 0.003 [0.002, 0.004] (p=0.000)*** | 0.002 [0.001, 0.002] (p=0.000)*** | -0.000 [-0.001, 0.000] (p=0.600) | -0.003 [-0.003, -0.002] (p=0.000)*** |
| smoke1 | 0.004 [-0.014, 0.022] (p=0.642) | -0.028 [-0.041, -0.014] (p=0.000)*** | -0.021 [-0.032, -0.010] (p=0.000)*** | 0.025 [0.014, 0.035] (p=0.000)*** | 0.020 [0.010, 0.030] (p=0.000)*** |
| drink1 | -0.115 [-0.134, -0.095] (p=0.000)*** | 0.079 [0.064, 0.093] (p=0.000)*** | 0.061 [0.048, 0.073] (p=0.000)*** | -0.015 [-0.026, -0.004] (p=0.008)** | -0.010 [-0.021, 0.001] (p=0.079) |
| pm10 | 0.014 [-0.031, 0.058] (p=0.552) | -0.030 [-0.063, 0.002] (p=0.068) | 0.001 [-0.027, 0.029] (p=0.934) | -0.008 [-0.033, 0.017] (p=0.545) | 0.023 [-0.002, 0.049] (p=0.074) |
| pm2p5 | -0.002 [-0.064, 0.060] (p=0.960) | 0.038 [-0.008, 0.083] (p=0.103) | -0.010 [-0.049, 0.028] (p=0.599) | 0.007 [-0.028, 0.041] (p=0.702) | -0.032 [-0.068, 0.003] (p=0.074) |
| prec20 | 0.007 [0.004, 0.010] (p=0.000)*** | -0.003 [-0.006, -0.001] (p=0.001)*** | -0.001 [-0.003, 0.001] (p=0.387) | -0.004 [-0.005, -0.002] (p=0.000)*** | 0.001 [-0.001, 0.002] (p=0.278) |
| tg_neg5_mean | 0.000 [0.000, 0.000] (p=0.018)* | -0.000 [-0.000, 0.000] (p=0.222) | -0.000 [-0.000, -0.000] (p=0.005)** | -0.000 [-0.000, 0.000] (p=0.283) | 0.000 [-0.000, 0.000] (p=0.133) |
| tg_neg5_neg2p5_mean | 0.000 [-0.000, 0.000] (p=0.969) | 0.000 [-0.000, 0.000] (p=0.783) | 0.000 [-0.000, 0.000] (p=0.850) | 0.000 [-0.000, 0.000] (p=0.658) | -0.000 [-0.000, 0.000] (p=0.291) |
| tg_neg2p5_0_mean | -0.000 [-0.000, 0.000] (p=0.295) | -0.000 [-0.000, 0.000] (p=0.537) | 0.000 [-0.000, 0.000] (p=0.348) | 0.000 [-0.000, 0.000] (p=0.724) | 0.000 [-0.000, 0.000] (p=0.215) |
| tg_27p5_30_mean | 0.000 [0.000, 0.001] (p=0.006)** | -0.000 [-0.000, 0.000] (p=0.666) | 0.000 [-0.000, 0.000] (p=0.490) | -0.000 [-0.000, -0.000] (p=0.003)** | -0.000 [-0.000, -0.000] (p=0.033)* |
| tg_g30_mean | -0.002 [-0.003, -0.001] (p=0.005)** | -0.000 [-0.001, 0.001] (p=0.907) | -0.000 [-0.001, 0.001] (p=0.822) | 0.001 [0.001, 0.002] (p=0.000)*** | 0.001 [-0.000, 0.001] (p=0.055) |
| freq_meat1 | -0.079 [-0.103, -0.055] (p=0.000)*** | 0.084 [0.066, 0.101] (p=0.000)*** | 0.030 [0.015, 0.045] (p=0.000)*** | -0.033 [-0.046, -0.019] (p=0.000)*** | -0.002 [-0.016, 0.012] (p=0.808) |
| freq_dairy1 | -0.138 [-0.165, -0.110] (p=0.000)*** | 0.129 [0.109, 0.149] (p=0.000)*** | 0.075 [0.058, 0.092] (p=0.000)*** | -0.052 [-0.067, -0.037] (p=0.000)*** | -0.015 [-0.030, 0.001] (p=0.065) |
| freq_legeggs1 | 0.007 [-0.012, 0.025] (p=0.478) | 0.023 [0.009, 0.036] (p=0.001)** | 0.011 [-0.000, 0.023] (p=0.058) | -0.034 [-0.044, -0.023] (p=0.000)*** | -0.007 [-0.018, 0.004] (p=0.199) |
| in_partnership1 | 0.010 [-0.015, 0.034] (p=0.436) | -0.002 [-0.020, 0.016] (p=0.818) | 0.019 [0.004, 0.034] (p=0.015)* | -0.017 [-0.030, -0.003] (p=0.016)* | -0.010 [-0.024, 0.004] (p=0.172) |
| small_family1 | 0.013 [-0.010, 0.037] (p=0.271) | 0.012 [-0.006, 0.029] (p=0.192) | 0.002 [-0.013, 0.017] (p=0.823) | -0.018 [-0.032, -0.005] (p=0.007)** | -0.008 [-0.022, 0.005] (p=0.234) |
| man1 | 0.002 [-0.026, 0.030] (p=0.883) | -0.059 [-0.080, -0.039] (p=0.000)*** | -0.054 [-0.072, -0.037] (p=0.000)*** | 0.047 [0.031, 0.062] (p=0.000)*** | 0.064 [0.048, 0.081] (p=0.000)*** |
| low_educ1 | 0.414 [0.389, 0.438] (p=0.000)*** | 0.088 [0.070, 0.106] (p=0.000)*** | -0.565 [-0.580, -0.549] (p=0.000)*** | 0.047 [0.033, 0.061] (p=0.000)*** | 0.016 [0.002, 0.030] (p=0.026)* |
| secondary_educ1 | 0.018 [-0.004, 0.041] (p=0.103) | 0.577 [0.561, 0.593] (p=0.000)*** | -0.622 [-0.636, -0.608] (p=0.000)*** | 0.031 [0.018, 0.043] (p=0.000)*** | -0.004 [-0.017, 0.009] (p=0.558) |
Note for the reader: - Significance levels are denoted by asterisks: * p<0.05, ** p<0.01, *** p<0.001 - Total observations: 7,915 - Values represent coefficient (95% confidence interval)