Commit a7503921 authored by Turner's avatar Turner
Browse files

shift analysis and plots

parent 3b8d0018
Loading
Loading
Loading
Loading
+108 −1
Original line number Diff line number Diff line
@@ -394,7 +394,6 @@ plot_main_driver_of_trend <- function(CF_trends,
                                      flow_CF_models_scored,
                                      EHA){


  flow_CF_models_scored |>
    filter(flow_type == "c") |>
    filter(pearson > 0.2, abs(bias) < 0.1) |>
@@ -760,7 +759,115 @@ return(final_plot)

  }

plot_shift_sparks <- function(trend_shift_analysis,
                              flow_CF_models,
                              EHA = EHA){

  browser()

  st_read(EHA, quiet = TRUE) |> as_tibble() |>
    mutate(COMPLXID = str_replace(EHA_PtID, "\\_..*", "")) |>
    select(COMPLXID, State, PtName) |> unique() -> dam_names

  flow_CF_models |>
    filter(flow_type == "c") |>
    mutate(residual = CF_pred - CF_pred) |>
    select(COMPLXID, year, residual) ->
    model_residuals_all

  trend_shift_analysis |>
    mutate(shift_more_likely = if_else(p_shift * 2.15 < p_trend, T, F)) |>
    arrange(shift_yr) |>
    filter(shift_more_likely == TRUE) |> #count(shift_yr) |> arrange(shift_yr)
    select(COMPLXID, shift_yr) |>
    left_join(dam_names, by = join_by(COMPLXID)) |> #count(State) |> arrange(-n)
    filter(!PtName %in% c("Dworshak Fish", "Oswego Falls West")) |>
    pmap(function(COMPLXID, shift_yr, State, PtName){

      model_residuals_all |>
        filter(COMPLXID == !!COMPLXID) ->
        model_residuals_dam

      flow_CF_models |>
        filter(flow_type == "c") |>
        filter(COMPLXID == !!COMPLXID) |>
        select(year, CF, CF_pred) ->
        model_results_dam

      filter(model_results_dam, year <= shift_yr)[["CF"]] |>
        mean(na.rm = T) -> pre_mean

      filter(model_results_dam, year > shift_yr)[["CF"]] |>
        mean(na.rm = T) -> post_mean

      model_results_dam |>
        mutate(pre_mean = if_else(year <= shift_yr, pre_mean, NA),
               post_mean = if_else(year > shift_yr, post_mean, NA)) |>
        ggplot(aes(year, CF)) +
        geom_line(aes(y = pre_mean), col = "black") +
        geom_line(aes(y = post_mean), col = "black") +
        geom_line() +
        geom_line(aes(y = CF_pred), col = "#007833") +
        theme_classic() +
        scale_y_continuous(breaks = c(0, 1)) +
        theme(axis.line.x = element_blank(),
              axis.ticks.x = element_blank(),
              axis.text.x = element_blank(),
              plot.title = element_text(size = 10, hjust = 0.5),
              plot.title.position = "panel",
          axis.text.y = element_text(size = 10),
          axis.title.x = element_blank(),
          axis.title.y = element_text(size = 8, angle = 0, vjust = 0.5)) +
        geom_vline(xintercept = shift_yr + 0.5, linetype = 2) +
        expand_limits(y = c(0, 1)) +
        labs(title =  paste0("\n", PtName, " | ", State),
             y = "CF") ->
        CF_plots

      model_residuals_dam |>
        ggplot(aes(year, residual)) +
        #geom_point(pch = 4) +
        geom_area(fill = "#007833", col = "black", alpha = 0.5) +
        #geom_line(aes(y = pre_mean), col = "red") +
        #geom_line(aes(y = post_mean), col = "red") +
        scale_x_continuous(breaks = c(1980, 2000)) +
        #geom_hline(yintercept = 0) +
        theme_classic() +
        geom_vline(xintercept = shift_yr + 0.5, linetype = 2) +
        theme(axis.line.y = element_blank(),
              axis.ticks.y = element_blank(),
              axis.text.y = element_blank(),
              axis.text.x = element_text(size = 10)) + labs(y = NULL, x = NULL) ->
        residuals

      CF_plots / plot_spacer() /residuals +
        plot_layout(heights = c(0.7, -0.2, 0.4))


    }) -> sparks_shift


  (sparks_shift[[1]] | sparks_shift[[5]] | sparks_shift[[9]] | sparks_shift[[13]]) /
    (sparks_shift[[2]] | sparks_shift[[6]] | sparks_shift[[10]] | sparks_shift[[14]]) /
    (sparks_shift[[3]] | sparks_shift[[7]] | sparks_shift[[11]] | sparks_shift[[15]]) /
    (sparks_shift[[4]] | sparks_shift[[8]] | sparks_shift[[12]] | sparks_shift[[16]]) ->
    final_plot

  ggsave(
    "./output/plots/shift_plots.pdf", final_plot,
    height = 9, width = 8
  )

  ggsave(
    "./output/plots/shift_plots.png", final_plot,
    height = 9, width = 8
  )

  return(final_plot)



}


+219 −0
Original line number Diff line number Diff line
@@ -149,4 +149,223 @@ get_CF_trends <- function(annual_CFs){

}

get_modeled_trends <- function(flow_CF_models,
                               flow_CF_models_scored){

  flow_CF_models_scored |>
    filter(flow_type == "c") |>
    filter(pearson > 0.2, abs(bias) < 0.1) |>
    arrange(-pearson) |>
    pull(COMPLXID) -> viable_flow_models

  flow_CF_models |>
    filter(COMPLXID %in% viable_flow_models) |>
    select(COMPLXID, year, CF, flow_type, CF_pred) |>
    pivot_wider(names_from = "flow_type",
                values_from = "CF_pred") |>
    split(~COMPLXID) |>
    map_dfr(function(x){

      smwrStats::senSlope(CF ~ year, x) -> sen_CF
      smwrStats::senSlope(c ~ year, x) -> sen_flowC

      if(anyNA(x$n)){
        sen_flowN <- list(
          coefficients = c(NA_real_, NA_real_)
        )
      }else{
        sen_flowN <- smwrStats::senSlope(n ~ year, x)
      }


      bind_rows(
        tibble(
          int = sen_CF$coefficients[1],
          slope = sen_CF$coefficients[2],
          data = "CF"
        ),
        tibble(
          int = sen_flowC$coefficients[1],
          slope = sen_flowC$coefficients[2],
          data = "Assimilated flow"
        ),
        tibble(
          int = sen_flowN$coefficients[1],
          slope = sen_flowN$coefficients[2],
          data = "Naturalized flow"
        )
      ) |>
        mutate(COMPLXID = first(x$COMPLXID))


    }) -> all_slopes


  all_slopes |> select(-int) |>
    pivot_wider(names_from = "data", values_from = slope) |>
    mutate(explained_by_water = `Assimilated flow` / CF,
           explained_by_climate = `Naturalized flow` / CF) |>
    #select(COMPLXID, CF_trend = CF, explained_by_water, explained_by_climate) |>
    mutate(water_not_climate = if_else(
      explained_by_water > 0.5 & explained_by_climate < 0.3,
      TRUE, FALSE)) |>
    mutate(
      flow_attrib = case_when(
        explained_by_water >= 0.8 ~ ">80%  ",
        explained_by_water < 0.8 & explained_by_water >= 0.6 ~ "60-80%  ",
        explained_by_water < 0.6 & explained_by_water >= 0.4 ~ "40-60%  ",
        explained_by_water < 0.4 & explained_by_water >= 0.2 ~ "20-40%  ",
        explained_by_water < 0.2 ~ "<20%  "
      )) |>
    mutate(flow_attrib = factor(flow_attrib, levels = c(
      "<20%  ", "20-40%  ", "40-60%  ",
      "60-80%  ", ">80%  "
    ))) ->
    flow_cats

  return(
    flow_cats
  )



}


trend_vs_shift <- function(flow_CF_models, flow_cats){

  #tar_load(flow_cats)
  #tar_load(flow_CF_models)
  tar_load(CF_trends)

  CF_trends |>
    filter(analysis == "flow period plus") |>
    filter(sens_slope < 0,
           p_value < 0.05) |>
    pull(COMPLXID) -> dams_with_signif_neg_trend

  flow_cats |>
    filter(COMPLXID %in% dams_with_signif_neg_trend,
           explained_by_water <= 0.2) |>
    pull(COMPLXID) -> dams_for_shift_analysis

  flow_CF_models |>
    filter(flow_type == "c") |>
    mutate(residual = CF - CF_pred) |>
    select(COMPLXID, year, residual) ->
    model_residuals_all

  model_residuals_all |>
    filter(COMPLXID %in% dams_for_shift_analysis) |>
    #filter(COMPLXID == "hc0250") -> dam
    split(~COMPLXID) |>
    future_map_dfr(function(dam){

      dam |>
        ggplot(aes(year, residual)) +
        geom_line() +
        geom_hline(yintercept = 0)

      1985:2016 |>
        map_dfr(function(yr){

          dam[dam$year <= yr,]$residual > 0 -> pre_shift
          dam[dam$year > yr,]$residual < 0 -> post_shift

          tibble(
            pre = sum(pre_shift, na.rm = T)/length(pre_shift[!is.na(pre_shift)]),
            post = sum(post_shift, na.rm = T)/length(post_shift[!is.na(post_shift)]),
            year = yr
          )
        }) |> mutate(x = pre + post) |>
        arrange(-x) ->
        shift_yrs_ranked

      shift_yr = shift_yrs_ranked[["year"]][1]

      # compute Sen's slope
      senSlope(residual ~ year, data = dam,
               intercept = "A1m") -> sen
      sen$coefficients[[2]] -> computed_slope
      sen$coefficients[[1]] -> computed_intercept

      # compute difference of means
      dam |>
        mutate(period = if_else(year <= shift_yr,
                                "pre", "post")) |>
        summarise(mean_res = mean(residual, na.rm = T),
                  .by = "period") ->
        means

      diff(means$mean_res) -> difference_of_means


      # set up blocked bootstrap (block size = 3)
      tibble(
        index = 1:38
      ) |>
        mutate(`1` = dam[["residual"]][index],
               `2` = dam[["residual"]][index + 1],
               `3` = dam[["residual"]][index + 2]) ->
        blocks

      sample_size <- 10000

      1:sample_size |>
        map_dfr(function(x){

          1:(nrow(blocks)) |>
            sample(replace = T,
                   size = ceiling(40 / 3)) ->
            block_indices

          blocks[block_indices,] |>
            pivot_longer(!index) |>
            select(value) -> synth_residuals

          synth_residuals[1:40,] |>
            mutate(year = 1980:2019) ->
            blocked_sample

          senSlope(value ~ year, data = blocked_sample,
                   intercept = "A1m") ->
            block_sen

          # compute difference of means
          blocked_sample |>
            mutate(period = if_else(year <= shift_yr,
                                    "pre", "post")) |>
            summarise(mean_res = mean(value, na.rm = T),
                      .by = "period") ->
            block_means

          diff(block_means$mean_res) -> block_difference_of_means


          return(
            tibble(
              sample = x,
              block_mean_diff = block_difference_of_means,
              block_sens_slope = block_sen[["coefficients"]][[2]]
            )
          )

      }) -> bootstrap_results



      tibble(
        COMPLXID = dam$COMPLXID[1],
        p_shift = sum(bootstrap_results$block_mean_diff < difference_of_means) / sample_size,
        p_trend = sum(bootstrap_results$block_sens_slope < computed_slope) / sample_size,
        shift_yr = shift_yr
      )


    }) -> trend_shift_analysis


  return(trend_shift_analysis)

  }
+19 −0
Original line number Diff line number Diff line
@@ -122,6 +122,18 @@ list(
    evaluate_models(model_results = flow_CF_models),
    format = "parquet"
  ),
  tar_target(
    flow_cats,
    get_modeled_trends(flow_CF_models = flow_CF_models,
                       flow_CF_models_scored = flow_CF_models_scored),
    format = "parquet"
  ),
  tar_target(
    trend_shift_analysis,
    trend_vs_shift(flow_CF_models = flow_CF_models,
                   flow_cats = flow_cats),
    format = "parquet"
  ),
  tar_target(
    CF_trend_map,
    plot_CF_trend_map(CFs = dam_annual_gen_cap_CF_1970_2021,
@@ -138,5 +150,12 @@ list(
      EHA = EHA
      ),
    format = "rds"
  ),
  tar_target(
    sparks,
    plot_shift_sparks(trend_shift_analysis = trend_shift_analysis,
                      flow_CF_models = flow_CF_models,
                      EHA = EHA),
    format = "rds"
  )
)
+49 −4
Original line number Diff line number Diff line
name|type|data|command|depend|seed|path|time|size|bytes|format|repository|iteration|parent|children|seconds|warnings|error
.Random.seed|object|8756eb567b31c872|||||||||||||||
CF_driver_map|stem|540399b3d9ebad4d|fad15d29eb37ced1|c66b43fe54cf3e1b|780051749||t19572.7321973949s|d4d5968cf31d3855|14442800|rds|local|vector|||11.14|1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf. 1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf|
CF_trend_map|stem|5f618bcd63a533d7|2493b3236a52efa3|bbfab65bf9a437e4|1449749074||t19569.6882917867s|ce7b3571c1e806bd|15261829|rds|local|vector|||5.02|1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf. 1m22mRemoved 1 row containing missing values geom_sf. 1m22mRemoved 13 rows containing missing values geom_sf. 1m22mRemoved 2 rows containing missing values geom_sf. 1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf. 1m22mRemoved 1 row containing missing values geom_sf. 1m22mRemoved 13 rows containing missing values geom_sf. 1m22mRemoved 2 rows containing missing values geom_sf|
.Random.seed|object|10bd526aa739ae83|||||||||||||||
block_difference_of_means|object|ba70adbf3c57d4d0|||||||||||||||
block_indices|object|91975510356067ba|||||||||||||||
block_means|object|81c8e96422609950|||||||||||||||
block_sen|object|d30bc66328344031|||||||||||||||
blocked_sample|object|262f88e03af953dc|||||||||||||||
blocks|object|7ce12a568f33f164|||||||||||||||
bootstrap_results|object|cb648a33de7adbe2|||||||||||||||
CF_driver_map|stem|540399b3d9ebad4d|fad15d29eb37ced1|c66b43fe54cf3e1b|780051749||t19573.8177419598s|d4d5968cf31d3855|14442800|rds|local|vector|||9.56|1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf. 1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf|
CF_trend_map|stem|5f618bcd63a533d7|2493b3236a52efa3|bbfab65bf9a437e4|1449749074||t19573.6517468623s|ce7b3571c1e806bd|15261829|rds|local|vector|||6.39|1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf. 1m22mRemoved 1 row containing missing values geom_sf. 1m22mRemoved 13 rows containing missing values geom_sf. 1m22mRemoved 2 rows containing missing values geom_sf. 1m22mRemoved 54407 rows containing missing values geom_raster.. 1m22mRemoved 4 rows containing missing values geom_sf. 1m22mRemoved 1 row containing missing values geom_sf. 1m22mRemoved 13 rows containing missing values geom_sf. 1m22mRemoved 2 rows containing missing values geom_sf|
CF_trends|stem|7ebebd1fd9e8bc90|48a9aa0dfb6d812e|fa1022101365b4b4|1102116871||t19569.1338983586s|7be06173099dde2d|71676|parquet|local|vector|||27715.96|UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures tha|
COMID_corrections|stem|fe576eb2f1f316a7|a5c6dd01c8e10d3f|ef46db3751d8e999|1378202948|./data/COMID_corrections.csv|t19557.68855602s|dcdbb2976eb6c19f|2790|file|local|vector|||1.03||
COMPLXID|object|2a7ba4ec88d4d9e5|||||||||||||||
computed_intercept|object|ccce95a0c44193fd|||||||||||||||
computed_slope|object|1306e090ce5c0569|||||||||||||||
convert_EIA_to_COMPLX|function|9df2b8bcf6782f60|||||||||||||||
correct_COMID_matching|function|f9d752099e09e4c2|||||||||||||||
dam_annual_gen_cap_CF_1970_2021|stem|27e68e5a9e4b3ac1|1e1968883cec7872|3c79369af4a2c155|-937239282||t19557.5727854494s|bb12815b67d3fb5b|726227|parquet|local|vector|||0.38||
dam|object|6acf893f76aab24e|||||||||||||||
dam_annual_gen_cap_CF_1970_2021|stem|27e68e5a9e4b3ac1|1e1968883cec7872|3c79369af4a2c155|-937239282||t19573.8126698687s|bb12815b67d3fb5b|726227|parquet|local|vector|||0.35||
dams_for_shift_analysis|object|51535f1a3244c1f0|||||||||||||||
dams_with_signif_neg_trend|object|22106bf37dd0fa37|||||||||||||||
DayFlow|stem|134be264bbd024f6|b70c126b26c07662|ef46db3751d8e999|958592900|./data/DayFlow/|t19557.7065932559s|f4066a65ff755f48|0|file|local|vector|||0||
difference_in_means|object|c70ce11703db34a4|||||||||||||||
difference_of_means|object|e811d827b42efc0a|||||||||||||||
EHA|stem|7c2955a818917c6b|a659f2306efa7339|ef46db3751d8e999|366006733|./data/ORNL_EHAHydroPlant_PublicFY2023/|t19556.7977354229s|a75e104011428481|4096|file|local|vector|||1||
EIA_529_906_920_923|stem|429fb55d18257b0e|7e8ad8e942ac6d8d|ef46db3751d8e999|-1754950433|./data/EIA/Generation/|t19552.6038571127s|db7d75b1b9e45804|24576|file|local|vector|||0.82||
EIA_860|stem|db95ac5d1da1bd03|fd2da67a7010fb85|ef46db3751d8e999|-1646985544|./data/EIA/Plant/|t19552.6038846689s|c8fc69c6c41e109f|12288|file|local|vector|||2.19||
EIA_annual_gen|stem|8df8ad9ee42d49d6|922aefb19c709325|b0d9bfb57fa52bff|-1955140278||t19555.5959348734s|c08769dc4ce04be3|812175|parquet|local|vector|||69.36||
EIA_annual_gen_cap_CF_1970_2021|stem|8df8ad9ee42d49d6|922aefb19c709325|b0d9bfb57fa52bff|-623511298||t19555.6015050991s|c08769dc4ce04be3|812175|parquet|local|vector|||68.46||
evaluate_models|function|eaab896ddee0b533|||||||||||||||
flow_cats|stem|7d9881e377229f55|a1a9f8bf349517fc|f4d57d4e3b46ab4c|1661925006||t19573.6406626987s|02d67c51a50d2e8d|22121|parquet|local|vector|||2.06||
flow_CF_models|stem|aead476a9a6a4ad0|faea1df58a65cc75|0913d291c217a97e|1368409968||t19569.660528624s|b070d754ca5333dd|1095006|parquet|local|vector|||27.23||
flow_CF_models_scored|stem|8d65f6acfdcde671|c335cd7c912ef3e2|62df0365f8a3a6d4|-1136441791||t19569.6605727291s|434f53139406c5af|45316|parquet|local|vector|||3.77||
get_CF_trends|function|25bce1c1396e1a50|||||||||||||||
get_EIA_annual_gen|function|1f87eeb76f308b73|||||||||||||||
get_modeled_trends|function|a5a5b17929dfb78b|||||||||||||||
HESC|stem|f4bd48ea34a7e458|84861977bfb6d75f|ef46db3751d8e999|555984922|./data/HESC_v2/|t19556.7977358831s|a75e104011428481|4096|file|local|vector|||0||
HILARRI|stem|6ba817df1956a2d3|161f3e4c4845d356|ef46db3751d8e999|-336879803|./data/HILARRI_v2/|t19556.7977359964s|a75e104011428481|4096|file|local|vector|||1.01||
link_plant_to_COMID_and_H|function|7c225cdb8fc5c89e|||||||||||||||
means|object|a0cdf307db2991e4|||||||||||||||
model_data_ready|stem|6b24211f764ec798|867edde3114778f4|346ed7fd67b0a578|291744199||t19569.6602130819s|be97a04ca7183f55|1772092|parquet|local|vector|||0.05||
model_ready_data|stem||a77f878581754df7|ac348a9ac4e8a917|-797304698||t19556.8413976197s||0|parquet|local|vector|||0.16||1mCaused by error22m33m39m object EIA_ID not found
model_residuals_all|object|fa73d83b51722551|||||||||||||||
model_residuals_dam|object|cb90f50f42b95d2b|||||||||||||||
model_residuals_dam_|object|8293edf4d6c5e9aa|||||||||||||||
p_shift|object|f4066a65ff755f48|||||||||||||||
p_trend|object|f9caed0c17bf64c3|||||||||||||||
plant_to_flow_H_mapping|stem|5a9138f5f91453c7|7e1e72eda130934a|e9aaecd87ceaab15|-1974510388||t19569.660212322s|bfbe60212c7499ab|20997|parquet|local|vector|||0.14||
plant_to_flow_H_mapping_uncorrected|stem|e51a5c4774dd6067|95618b304ba141cb|72c8ca9d8ddf2434|-1018155617||t19569.1339064333s|25c8b81bae3036c7|20513|parquet|local|vector|||0.65||
plot_CF_trend_map|function|0a4f9fa8f8157b08|||||||||||||||
plot_main_driver_of_trend|function|9bcbf099b1504bf8|||||||||||||||
plot_shift_sparks|function|4b0592b120bed608|||||||||||||||
post_mean|object|fdaef38f0a85a2a9|||||||||||||||
post_shift|object|8668732562449cca|||||||||||||||
pre_mean|object|2ec2830481192df5|||||||||||||||
pre_shift|object|d15a31c8ac8922e1|||||||||||||||
prep_model_data|function|f8811de1e501a14f|||||||||||||||
sample_size|object|43cee3b5090dadd7|||||||||||||||
sen|object|af095699bd811c36|||||||||||||||
shift_years|object|441bb115678cb48e|||||||||||||||
shift_yr|object|f52ca559867c407e|||||||||||||||
shift_yrs_ranked|object|b1fb9c1e510f5808|||||||||||||||
simulate_annual_CF|function|619f40378adf543a|||||||||||||||
sparks|object|0308ebdb77b2837b|||||||||||||||
sparks_12_shift|object|fb250aee2445fc86|||||||||||||||
sparks_12_trend|object|9356ebe86b6fc7fc|||||||||||||||
sparks_shift|object|d57e169493470ffb|||||||||||||||
sparks_trend|object|fa96750c42319ef3|||||||||||||||
synth_CFs|object|0236b3c9003d0c1a|||||||||||||||
synth_residuals|object|e936c09c9b199388|||||||||||||||
trend_dam|object|ec04fa798394cfde|||||||||||||||
trend_shift_analysis|stem|41acbdde1fa64d13|b1342e6d17ac2314|3cb0d3dfbf8ed694|1344368724||t19573.8325407345s|a87afb643b843259|2810|parquet|local|vector|||1278.39|UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures that proper, parallelsafe random numbers are produced via the LEcuyerCMRG method. To disable this check, use seedNULL, or set option future.rng.onMisuse to ignore.. UNRELIABLE VALUE Future none unexpectedly generated random numbers without specifying argument seed. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify seedTRUE. This ensures tha|
trend_vs_shift|function|65597cb2e6feb15d|||||||||||||||
x|object|3e8a3887fa6864fc|||||||||||||||
yr|object|4f52fe23f66097d1|||||||||||||||