Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

log transform #484

Closed
Tracked by #483
spsanderson opened this issue Oct 23, 2023 · 0 comments
Closed
Tracked by #483

log transform #484

spsanderson opened this issue Oct 23, 2023 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@spsanderson
Copy link
Owner

spsanderson commented Oct 23, 2023

Function:

util_log_ts <- function(.time_series){
  
  time_series <- .time_series
  min_x <- min(time_series)
  
  if (min_x >= 0){
    if (ts_adf_test(log(time_series))$p_value < 0.05){
      rlang::inform(
        message = "Logrithmic transformation made the time series stationary",
        use_cli_format = TRUE
      )
      stationary_ts <- log(time_series)
      # Return
      return(
        list(
          stationary_ts = stationary_ts,
          ndiffs = NA,
          adf_stats = ts_adf_test(stationary_ts),
          trans_type = "log",
          ret = TRUE
        )
      )
    } else {
      rlang::inform(
        message = "Logrithmic Transformation Failed.",
        use_cli_format = TRUE
      )
      return(list(ret = FALSE))
    }
  } else {
    rlang::inform(
      message = "The minimum value of the time series is less than or equal to 0.",
      use_cli_format = TRUE
    )
    return(list(ret = FALSE))
  }
}

Examples:

> util_log_ts(x)
Logrithmic transformation made the time series stationary
$stationary_ts
          Jan      Feb      Mar      Apr      May      Jun      Jul      Aug      Sep      Oct
1949 4.718499 4.770685 4.882802 4.859812 4.795791 4.905275 4.997212 4.997212 4.912655 4.779123
1950 4.744932 4.836282 4.948760 4.905275 4.828314 5.003946 5.135798 5.135798 5.062595 4.890349
1951 4.976734 5.010635 5.181784 5.093750 5.147494 5.181784 5.293305 5.293305 5.214936 5.087596
1952 5.141664 5.192957 5.262690 5.198497 5.209486 5.384495 5.438079 5.488938 5.342334 5.252273
1953 5.278115 5.278115 5.463832 5.459586 5.433722 5.493061 5.575949 5.605802 5.468060 5.351858
1954 5.318120 5.236442 5.459586 5.424950 5.455321 5.575949 5.710427 5.680173 5.556828 5.433722
1955 5.488938 5.451038 5.587249 5.594711 5.598422 5.752573 5.897154 5.849325 5.743003 5.613128
1956 5.648974 5.624018 5.758902 5.746203 5.762051 5.924256 6.023448 6.003887 5.872118 5.723585
1957 5.752573 5.707110 5.874931 5.852202 5.872118 6.045005 6.142037 6.146329 6.001415 5.849325
1958 5.828946 5.762051 5.891644 5.852202 5.894403 6.075346 6.196444 6.224558 6.001415 5.883322
1959 5.886104 5.834811 6.006353 5.981414 6.040255 6.156979 6.306275 6.326149 6.137727 6.008813
1960 6.033086 5.968708 6.037871 6.133398 6.156979 6.282267 6.432940 6.406880 6.230481 6.133398
          Nov      Dec
1949 4.644391 4.770685
1950 4.736198 4.941642
1951 4.983607 5.111988
1952 5.147494 5.267858
1953 5.192957 5.303305
1954 5.313206 5.433722
1955 5.468060 5.627621
1956 5.602119 5.723585
1957 5.720312 5.817111
1958 5.736572 5.820083
1959 5.891644 6.003887
1960 5.966147 6.068426

$ndiffs
[1] NA

$adf_stats
$adf_stats$test_stat
[1] -7.318571

$adf_stats$p_value
[1] 0.01


$trans_type
[1] "log"

> util_log_ts(BJsales)
Logrithmic Transformation Failed.
[1] FALSE
> util_log_ts(runif(150)*-1)
The minimum value of the time series is less than or equal to 0.
@spsanderson spsanderson self-assigned this Oct 23, 2023
@spsanderson spsanderson added the enhancement New feature or request label Oct 23, 2023
@spsanderson spsanderson added this to the healthyR.ts 0.3 milestone Oct 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Development

No branches or pull requests

1 participant