Introduction to valueprhr

Overview

The valueprhr package provides tools for analyzing the relationship between direct prices (based on labor values) and prices of production. This vignette demonstrates the main functionality of the package.

Getting Started

library(valueprhr)

Creating Example Data

set.seed(123)
years <- 2000:2019
sectors <- LETTERS[1:5]

direct <- data.frame(Year = years)
production <- data.frame(Year = years)

for (s in sectors) {
  direct[[s]] <- 100 + cumsum(rnorm(20, 2, 1))
  production[[s]] <- direct[[s]] * 1.02 + rnorm(20, 0, 2)
}

Preparing Panel Data

panel <- prepare_panel_data(direct, production)
head(panel)
#>   year sector direct_price production_price log_direct log_production sector_id
#> 1 2000      A     101.4395         101.3327   4.619463       4.618409         1
#> 2 2001      A     103.2093         104.8376   4.636759       4.652412         1
#> 3 2002      A     106.7681         106.8514   4.670659       4.671439         1
#> 4 2003      A     108.8386         109.5576   4.689866       4.696450         1
#> 5 2004      A     110.9679         111.9371   4.709241       4.717937         1
#> 6 2005      A     114.6829         113.6032   4.742171       4.732712         1
#>   time
#> 1    1
#> 2    2
#> 3    3
#> 4    4
#> 5    5
#> 6    6

Fitting Models

Two-Way Fixed Effects

if (requireNamespace("plm", quietly = TRUE)) {
  twoway_result <- fit_twoway_fe(panel)
  print(twoway_result$r2_within)
}

Mundlak CRE Model

if (requireNamespace("plm", quietly = TRUE)) {
  mundlak_result <- fit_mundlak_cre(panel)
  print(mundlak_result$variance_components)
}

Model Comparison

comparison <- compare_models(
  twoway_result = twoway_result,
  mundlak_result = mundlak_result
)
print(comparison)

Cross-Validation

cv_results <- rolling_window_cv(panel, window_sizes = c(10, 15))
cv_summary <- summarize_cv_results(cv_results)
print(cv_summary)

Structural Break Tests

if (requireNamespace("strucchange", quietly = TRUE)) {
  break_tests <- test_structural_breaks(panel)
  print(format_break_results(break_tests))
}

Full Analysis Pipeline

For convenience, you can run the complete analysis with a single function:

results <- run_full_analysis(
  direct, production,
  run_bayesian = FALSE,
  run_cv = TRUE,
  run_breaks = TRUE
)