Data preparation
The analysis-ready dataset was cleaned and standardised in the master
script. Key constructed variables include:
- final_total: final safe allocation plus final risky
allocation.
- subsequent_total: subsequent safe allocation plus
subsequent risky allocation.
- manual_luck: simulated portfolio outcome minus
expected portfolio outcome.
- risky_allocation_change: subsequent risky
allocation minus final risky allocation.
glimpse(df)
## Rows: 1,000
## Columns: 23
## $ group_raw <chr> "tool", "pathway", "tool", "tool", …
## $ manual_final_allocation_risky <dbl> 36, 53, 84, 86, 42, 84, 63, 60, 40,…
## $ manual_final_allocation_safe <dbl> 64, 47, 16, 14, 58, 16, 37, 40, 60,…
## $ manual_expected_portfolio_outcome <dbl> 133.8, 138.9, 148.2, 148.8, 135.6, …
## $ manual_simulated_portfolio_outcome <dbl> 156.53, 135.98, 91.05, 86.79, 119.7…
## $ manual_subsequent_allocation_risky <dbl> 26, 43, 67, 60, 40, 61, 69, 47, 22,…
## $ manual_subsequent_allocation_safe <dbl> 74, 57, 33, 40, 60, 39, 31, 53, 78,…
## $ age <dbl> 32, 21, 29, 24, 41, 20, 29, 34, 22,…
## $ gender <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ education <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ income <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ stock_ownership <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ perceived_volatility <dbl> 6, 6, 6, 5, 7, 5, 5, 5, 3, 4, 5, 4,…
## $ satisfaction <dbl> 4, 4, 3, 3, 4, 4, 5, 1, 3, 4, 3, 3,…
## $ confidence <dbl> 4, 4, 5, 3, 4, 6, 4, 3, 4, 4, 4, 2,…
## $ comprehension <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ group <fct> tool, pathway, tool, tool, pathway,…
## $ final_total <dbl> 100, 100, 100, 100, 100, 100, 100, …
## $ subsequent_total <dbl> 100, 100, 100, 100, 100, 100, 100, …
## $ manual_luck <dbl> 22.73, -2.92, -57.15, -62.01, -15.8…
## $ final_total_valid <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,…
## $ subsequent_total_valid <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,…
## $ risky_allocation_change <dbl> -10, -10, -17, -26, -2, -23, 6, -13…
Main treatment-effect
analysis
The primary analysis estimates whether treatment assignment predicts
final risky allocation.
The simple model is:
$ FinalRiskyAllocation_i = α + β1 RiskTool_i + β2 Pathway_i + ε_i
$
where the description code is the reference group.
modelsummary(
list(
"Final risky allocation" = models$model_final_simple,
"Final risky allocation + controls" = models$model_final_controlled
),
stars = TRUE,
statistic = "std.error"
)
| |
Final risky allocation |
Final risky allocation + controls |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| (Intercept) |
43.081*** |
40.221*** |
|
(0.879) |
(2.365) |
| group_description_reftool |
9.286*** |
9.285*** |
|
(1.244) |
(1.244) |
| group_description_refpathway |
-1.306 |
-1.370 |
|
(1.244) |
(1.245) |
| age |
|
0.101 |
|
|
(0.078) |
| Num.Obs. |
1000 |
1000 |
| R2 |
0.079 |
0.081 |
| R2 Adj. |
0.078 |
0.078 |
| AIC |
8396.1 |
8396.4 |
| BIC |
8415.7 |
8420.9 |
| Log.Lik. |
-4194.041 |
-4193.190 |
| RMSE |
16.04 |
16.03 |
Because this analysis uses synthetic data, the coefficients should be
interpreted only as a test of the analysis workflow.