code: def test_forecast_via_prophet_freq():
      """Tests prophet model at different frequencies"""
      holidays = pd.DataFrame(
          {
              "ds": pd.to_datetime(
                  ["2018-12-25", "2019-12-25", "2020-12-25"]
              ),
              "holiday": "christmas",
              "lower_window": -2,
              "upper_window": 2,
          }
      )
      params = dict(
          coverage=0.9,
          growth="linear",
          n_changepoints=2,
          changepoint_range=0.9,
          yearly_seasonality="auto",
          weekly_seasonality="auto",
          daily_seasonality="auto",
          holidays=holidays,
          seasonality_mode="additive",
          seasonality_prior_scale=5.0,
          holidays_prior_scale=5.0,
          changepoint_prior_scale=0.10,
          mcmc_samples=0,
          uncertainty_samples=10,
      )
      # A wide variety of frequencies listed here:
      # https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases
      frequencies = [
          "B",
          "W",
          "W-SAT",
          "W-TUE",
          "M",
          "SM",
          "MS",
          "SMS",
          "CBMS",
          "BM",
          "B",
          "Q",
          "QS",
          "BQS",
          "BQ-AUG",
          "Y",
          "YS",
          "AS-SEP",
          "H",
          "BH",
          "T",
          "S",
      ]
      for freq in frequencies:
          df = generate_df_for_tests(freq=freq, periods=50)
          train_df = df["train_df"]
          test_df = df["test_df"]
  
          # tests model fit and predict work without error
          model = ProphetEstimator(**params)
          try:
              model.fit(
                  train_df, time_col=TIME_COL, value_col=VALUE_COL
              )
              pred = model.predict(test_df)
          except Exception:
              print(f"Failed for frequency {freq}")
              raise
  
          assert list(pred.columns) == [
              TIME_COL,
              PREDICTED_COL,
              PREDICTED_LOWER_COL,
              PREDICTED_UPPER_COL,
          ]
          assert pred[TIME_COL].equals(test_df[TIME_COL])
          model.summary()
  
imports: import sys
  import numpy
  import pandas
  import pytest
  from sklearn.exceptions import NotFittedError
  from sklearn.metrics import mean_absolute_error
  from sklearn.metrics import mean_squared_error
  from testfixtures import LogCapture
  from greykite.common.constants import LOGGER_NAME
  from greykite.common.constants import PREDICTED_COL
  from greykite.common.constants import PREDICTED_LOWER_COL
  from greykite.common.constants import PREDICTED_UPPER_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.evaluation import calc_pred_err
  from greykite.common.python_utils import assert_equal
  from greykite.common.testing_utils import generate_df_for_tests
  from greykite.common.testing_utils import generate_df_with_reg_for_tests
  from greykite.sklearn.estimator.prophet_estimator import ProphetEstimator
label_desc: Use image node_id 17 for calling a global function with example usage: test_forecast_via_prophet_freq() without return types