internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: sktime/sktime

Issue:
SettingWithCopyWarning in Prophet with exogenous data
**Describe the bug**
Running `Prophet` with `X` different from `None` throws the following warning

```python
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  X["ds"] = X.index
/Users/muhlbach/opt/anaconda3/envs/experimental/lib/python3.8/site-packages/sktime/forecasting/base/adapters/_fbprophet.py:190: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
```

Will you please change line 190 in _fbprophet.py to
```python
X.loc[:,"ds"]=X.index
```

Thanks!


Discussion:
Thanks for raising the issue @muhlbach! A quick PR would be appreciated! :) 
Hi, as I also keep running into this issue  I was wondering if anyone is still working on this? Otherwise I'd offer to do the PR myself.
@jschemm not that I'm aware of, please give it a go!

Resolving patch:
diff --git a/sktime/forecasting/base/adapters/_fbprophet.py b/sktime/forecasting/base/adapters/_fbprophet.py
--- a/sktime/forecasting/base/adapters/_fbprophet.py
+++ b/sktime/forecasting/base/adapters/_fbprophet.py
@@ -187,7 +187,7 @@ def _merge_X(df, X):
     X.columns = X.columns.astype(str)
     if "ds" in X.columns:
         raise ValueError("Column name 'ds' is reserved in fbprophet")
-    X["ds"] = X.index
+    X.loc[:, "ds"] = X.index
     # df = df.merge(X, how="inner", on="ds", copy=False)
     df = df.merge(X, how="inner", on="ds")
     return df, X.drop(columns="ds")


Test patch:
Repository: sktime/sktime

Issue:
[BUG] HampelFilter has side effects on arguments
`HampelFilter` has side effects on its arguments - see #1078 and test logs.

No estimator should have side effects, so this needs fixing.


Discussion:
good catch, thx! I will fix it. What do you think about handling this `y = y.copy()` stuff in the parent class? Basically each transformer needs to have it I think. I could create an issue for it, but would anyway first fix the `HampelFilter` issue separately.
___
Martin Walter <martin_friedrich.walter@daimler.com>, Mercedes-Benz AG on behalf of Daimler TSS GmbH.
https://github.com/Daimler/daimler-foss/blob/master/LEGAL_IMPRINT.md
Yes, we need a big transformer refactor soon-ish, I think - I'd suggest to focus on `HampelFilter` though first so we can move the side effect test in before we start with the refactor.
>good catch, thx! 

And that's exactly why I wrote the test!

Resolving patch:
diff --git a/sktime/transformations/series/impute.py b/sktime/transformations/series/impute.py
--- a/sktime/transformations/series/impute.py
+++ b/sktime/transformations/series/impute.py
@@ -92,6 +92,7 @@ def transform(self, Z, X=None):
         self.check_is_fitted()
         self._check_method()
         Z = check_series(Z)
+        Z = Z.copy()
 
         # replace missing_values with np.nan
         if self.missing_values:
diff --git a/sktime/transformations/series/outlier_detection.py b/sktime/transformations/series/outlier_detection.py
--- a/sktime/transformations/series/outlier_detection.py
+++ b/sktime/transformations/series/outlier_detection.py
@@ -74,6 +74,7 @@ def transform(self, Z, X=None):
         """
         self.check_is_fitted()
         Z = check_series(Z)
+        Z = Z.copy()
 
         # multivariate
         if isinstance(Z, pd.DataFrame):


Test patch:
Repository: sktime/sktime

Issue:
[DOC] Broken links on 'Estimator Overview' page
#### Describe the issue linked to the documentation

There was a new doc page added in recent update called 'Estimator Overview'.
`https://www.sktime.org/en/latest/estimator_overview.html`
![image](https://user-images.githubusercontent.com/25502260/133971754-d492f54a-9a80-4ee9-a59a-598b985860fe.png)

While it is very useful, there's an issue with it: all links to pages of estimators are broken.
Problem is that all links contain additional `/modules` path in it, where an actual link to a page doesn't have such part.
See below:
`n = "https://www.sktime.org/en/latest/api_reference/modules/auto_generated/sktime.forecasting.arima.ARIMA.html"`
`m = "https://www.sktime.org/en/latest/api_reference/auto_generated/sktime.forecasting.arima.ARIMA.html"`
where `n` - link from 'estimator overview' page, `m` - actual link.

#### Suggest a potential alternative/fix

Potential fix would be to remove `/modules` from the path.
But I see that this page is auto-updating so I don't know if there's an actual way to fix this or how it's done at all.


UPD: I tried to look through codebase and doc auto-generator files but found nothing. I guess without any experience w/ Sphinx it's impossible to find the root of the issue.


Discussion:

Resolving patch:
diff --git a/docs/source/conf.py b/docs/source/conf.py
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -352,7 +352,7 @@ def _does_not_start_with_underscore(input_string):
         clean_path = ".".join(list(filter(_does_not_start_with_underscore, path_parts)))
         # adds html link reference
         modname = str(
-            '<a href="https://www.sktime.org/en/latest/api_reference/modules'
+            '<a href="https://www.sktime.org/en/latest/api_reference'
             + "/auto_generated/"
             + clean_path
             + '.html">'


Test patch:
Repository: sktime/sktime

Issue:
[BUG] sktime.datatypes._panel._examples raises pandas.core.common.SettingWithCopyError
**Describe the bug**
Attempting to install [tsai](https://pypi.org/project/tsai/) as an upstream package also installs this package, but the install raises an error that traces to line 67 in "/opt/conda/lib/python3.8/site-packages/sktime/datatypes/_panel/_examples.py"
```
    X.iloc[0][0] = pd.Series([1, 2, 3])
```

**To Reproduce**
Importing any code that executes the code starting at line 67 of /sktime/datatypes/_panel/_examples.py can raise a Pandas error, depending on Pandas version that may be installed

**Expected behavior**
No error should be raised on install or import of sktime as a dependency. 

**Additional context**
<!--
Add any other context about the problem here.
-->

**Versions**
System:
    python: 3.9.1 (default, Sep 16 2021, 11:42:30)  [Clang 12.0.5 (clang-1205.0.22.11)]
executable: /.../.pyenv/versions/3.9.1/bin/python
   machine: macOS-11.6-x86_64-i386-64bit

Python dependencies:
          pip: 21.2.4
   setuptools: 49.2.1
      sklearn: 1.0
       sktime: 0.8.0
  statsmodels: 0.12.2
        numpy: 1.20.3
        scipy: 1.7.1
       Cython: None
       pandas: 1.3.3
   matplotlib: 3.4.3
       joblib: 1.0.1
        numba: 0.53.1
     pmdarima: None
      tsfresh: 0.18.0


Discussion:

Resolving patch:
diff --git a/sktime/datatypes/_panel/_examples.py b/sktime/datatypes/_panel/_examples.py
--- a/sktime/datatypes/_panel/_examples.py
+++ b/sktime/datatypes/_panel/_examples.py
@@ -64,12 +64,13 @@
 
 cols = [f"var_{i}" for i in range(2)]
 X = pd.DataFrame(columns=cols, index=[0, 1, 2])
-X.iloc[0][0] = pd.Series([1, 2, 3])
-X.iloc[0][1] = pd.Series([4, 5, 6])
-X.iloc[1][0] = pd.Series([1, 2, 3])
-X.iloc[1][1] = pd.Series([4, 55, 6])
-X.iloc[2][0] = pd.Series([1, 2, 3])
-X.iloc[2][1] = pd.Series([42, 5, 6])
+X["var_0"] = pd.Series(
+    [pd.Series([1, 2, 3]), pd.Series([1, 2, 3]), pd.Series([1, 2, 3])]
+)
+
+X["var_1"] = pd.Series(
+    [pd.Series([4, 5, 6]), pd.Series([4, 55, 6]), pd.Series([42, 5, 6])]
+)
 
 example_dict[("nested_univ", "Panel", 0)] = X
 example_dict_lossy[("nested_univ", "Panel", 0)] = False


Test patch:
Repository: sktime/sktime

Issue:
[BUG] Automatic downloader for sktime.datasets.load_UCR_UEA_dataset does not work for custom extract_path
Even given a custom extract_path, UCR_UEA datasets are downloaded to the default sktime package directory. The bug is easily fixed by adding the custom extract_path to the _download_and_extract function call.

Line 175 in sktime/sktime/datasets/_data_io.py in function load_UCR_UEA_dataset:

```python
try:
     _download_and_extract(
                url,
      )
```

should be instead

```python
try:
     _download_and_extract(
                url,
                extract_path=extract_path
      )
```

Expected behaviour:

Dataset gets downloaded to the correct path after bug fix.


Discussion:
Hi, can I do it as a first contribution?
yes, looks like a straightforward fix!
Appreciate a PR, @yairbeer!

@TonyBagnall, FYI

Resolving patch:
diff --git a/sktime/datasets/_data_io.py b/sktime/datasets/_data_io.py
--- a/sktime/datasets/_data_io.py
+++ b/sktime/datasets/_data_io.py
@@ -29,12 +29,13 @@
 ]
 
 __author__ = [
-    "Markus Löning",
-    "Sajay Ganesh",
-    "@big-o",
-    "Sebastiaan Koel",
-    "Emilia Rose",
-    "Tony Bagnall",
+    "mloning",
+    "sajaysurya",
+    "big-o",
+    "SebasKoel",
+    "Emiliathewolf",
+    "TonyBagnall",
+    "yairbeer",
 ]
 
 DIRNAME = "data"
@@ -175,6 +176,7 @@ def _load_dataset(name, split, return_X_y, extract_path=None):
         try:
             _download_and_extract(
                 url,
+                extract_path=extract_path,
             )
         except zipfile.BadZipFile as e:
             raise ValueError(


Test patch:
Repository: sktime/sktime

Issue:
[DOC] Transformers missing from API Reference
#### Describe the issue linked to the documentation

<!--
Tell us about the confusion introduced in the documentation.
-->

There have been transformers that have recently been improved but have not been added the API Reference. 

For example, STLTransformer, CLaSPTransformer, etc.

#### Suggest a potential alternative/fix

<!--
Tell us how we could improve the documentation in this regard.
-->

These need to be added to the documentation. 

In the future we'll have to try and be good about following our [reviewer guide](https://www.sktime.org/en/stable/reviewer_guide.html) and waiting to merge until things are added to docs. Otherwise, it is hard for users to know what functionality exists.


Discussion:

Resolving patch:
diff --git a/sktime/transformations/series/difference.py b/sktime/transformations/series/difference.py
--- a/sktime/transformations/series/difference.py
+++ b/sktime/transformations/series/difference.py
@@ -96,8 +96,8 @@ class Differencer(_SeriesToSeriesTransformer):
         Stores whether the Differencer drops the initial observations that contain
         missing values as a result of the differencing operation(s).
 
-    Example
-    -------
+    Examples
+    --------
     >>> from sktime.transformations.series.difference import Differencer
     >>> from sktime.datasets import load_airline
     >>> y = load_airline()


Test patch:
Repository: sktime/sktime

Issue:
[BUG] model_selection/split does not support y being an index since 0.8.1
**Describe the bug**
#1456 introduced a bug. If y is an Index, the code leads to an unassigned local variable
```
UnboundLocalError: local variable 'y_index' referenced before assignment
```

**To Reproduce**
```python
from sktime.forecasting.model_selection import SingleWindowSplitter
import pandas as pd
next(SingleWindowSplitter(fh=1).split(pd.PeriodIndex(year=[2000, 2002], quarter=[1, 3])))
```

**Expected behavior**
split function should accept an Index as argument

**Versions**
0.8.1




Discussion:

Resolving patch:
diff --git a/sktime/forecasting/model_selection/_split.py b/sktime/forecasting/model_selection/_split.py
--- a/sktime/forecasting/model_selection/_split.py
+++ b/sktime/forecasting/model_selection/_split.py
@@ -10,7 +10,7 @@
     "SingleWindowSplitter",
     "temporal_train_test_split",
 ]
-__author__ = ["Markus Löning", "Kutay Koralturk"]
+__author__ = ["mloning", "kkoralturk"]
 
 import inspect
 import numbers
@@ -23,11 +23,12 @@
 from sklearn.model_selection import train_test_split as _train_test_split
 
 from sktime.utils.validation import check_window_length
-from sktime.utils.validation.forecasting import check_cutoffs
-from sktime.utils.validation.forecasting import check_fh
-from sktime.utils.validation.forecasting import check_step_length
-from sktime.utils.validation.series import check_equal_time_index
-from sktime.utils.validation.series import check_time_index
+from sktime.utils.validation.forecasting import (
+    check_cutoffs,
+    check_fh,
+    check_step_length,
+)
+from sktime.utils.validation.series import check_equal_time_index, check_time_index
 
 DEFAULT_STEP_LENGTH = 1
 DEFAULT_WINDOW_LENGTH = 10
@@ -97,11 +98,39 @@ def has_changed(k, v):
 
 
 def _check_y(y):
-    """Check input to `split` function."""
+    """Coerce input to `split` function.
+
+    Parameters
+    ----------
+    y : pd.Series, pd.DataFrame, np.ndarray, or pd.Index
+        coerced and checked version of input y
+
+    Returns
+    -------
+    check_time_index(y_index), where y_index is as follows:
+        if y is pd.Series, pd.DataFrame, y_index = y.index
+        if y is pd.Index, y_index = y itself
+        if y is np.ndarray, y_index =  pd.Index(y)
+
+    Raises
+    ------
+    TypeError
+        if y is not of one of the expected types
+    NotImplementedError
+        if y_index is not a supported sktime index type
+    ValueError
+        if y_index is not monotonous
+    """
     if isinstance(y, (pd.Series, pd.DataFrame)):
         y_index = y.index
-    if isinstance(y, np.ndarray):
+    elif isinstance(y, np.ndarray):
         y_index = pd.Index(y)
+    elif isinstance(y, pd.Index):
+        y_index = y
+    else:
+        raise TypeError(
+            "Input to _check_y must be pd.Series, pd.DataFrame, np.ndarray, or pd.Index"
+        )
     return check_time_index(y_index)
 
 


Test patch:
Repository: sktime/sktime

Issue:
Refactor issue #1043
Fixes #1043 

Removed methods load_UCR_UEA_dataset & _load_dataset from datasets/base.py and moved them to utils/data_io.py


Discussion:

Resolving patch:
diff --git a/sktime/transformations/panel/signature_based/_signature_method.py b/sktime/transformations/panel/signature_based/_signature_method.py
--- a/sktime/transformations/panel/signature_based/_signature_method.py
+++ b/sktime/transformations/panel/signature_based/_signature_method.py
@@ -1,15 +1,16 @@
 # -*- coding: utf-8 -*-
 from sklearn.pipeline import Pipeline
+
 from sktime.transformations.base import _PanelToTabularTransformer
-from sktime.transformations.panel.signature_based._compute import (
-    _WindowSignatureTransform,
-)
 from sktime.transformations.panel.signature_based._augmentations import (
     _make_augmentation_pipeline,
 )
 from sktime.transformations.panel.signature_based._checks import (
     _handle_sktime_signatures,
 )
+from sktime.transformations.panel.signature_based._compute import (
+    _WindowSignatureTransform,
+)
 
 
 class SignatureTransformer(_PanelToTabularTransformer):
@@ -63,14 +64,8 @@ def __init__(
 
         self.setup_feature_pipeline()
 
-    def _assertions(self):
-        """Some assertions to run on initialisation."""
-        assert not all(
-            [self.sig_tfm == "logsignature", self.rescaling == "post"]
-        ), "Cannot have post rescaling with the logsignature."
-
     def setup_feature_pipeline(self):
-        """Sets up the signature method as an sklearn pipeline."""
+        """Set up the signature method as an sklearn pipeline."""
         augmentation_step = _make_augmentation_pipeline(self.augmentation_list)
         transform_step = _WindowSignatureTransform(
             window_name=self.window_name,
@@ -92,10 +87,38 @@ def setup_feature_pipeline(self):
 
     @_handle_sktime_signatures(check_fitted=False)
     def fit(self, data, labels=None):
+        """Fit to data, then transform it.
+
+        Parameters
+        ----------
+        data: pd.Dataframe or np.ndarray (3d array)
+            Data to transform.
+        labels: np.ndarray (1d array) or pd.series or list
+            Labels for the data.
+
+        Returns
+        -------
+        pd.Dataframe or np.ndarray or pd.series
+        Transformed data.
+        """
         self.signature_method.fit(data, labels)
         self._is_fitted = True
         return self
 
     @_handle_sktime_signatures(check_fitted=True)
     def transform(self, data, labels=None):
+        """Transform the class from the signature method.
+
+        Parameters
+        ----------
+        data: pd.Dataframe or np.ndarray (3d array)
+            Data to transform.
+        labels: np.ndarray (1d array) or pd.series or list
+            Labels for the data.
+
+        Returns
+        -------
+        pd.Dataframe or np.ndarray or pd.series
+            Transformed data.
+        """
         return self.signature_method.transform(data)


Test patch:
Repository: sktime/sktime

Issue:
[DOC] transformers tutorial
There should be a notebook that explains the different transformer scitypes, and how transformers work in `sktime`.


Discussion:

Resolving patch:
diff --git a/sktime/datatypes/_series/_examples.py b/sktime/datatypes/_series/_examples.py
--- a/sktime/datatypes/_series/_examples.py
+++ b/sktime/datatypes/_series/_examples.py
@@ -142,3 +142,39 @@
     "is_empty": False,
     "has_nans": False,
 }
+
+###
+# example 3: univariate, positive
+
+s = pd.Series([1, 4, 0.5, 3], dtype=np.float64, name="a")
+
+example_dict[("pd.Series", "Series", 3)] = s
+example_dict_lossy[("pd.Series", "Series", 3)] = False
+
+df = pd.DataFrame({"a": [1, 4, 0.5, 3]})
+
+example_dict[("pd.DataFrame", "Series", 3)] = df
+example_dict_lossy[("pd.DataFrame", "Series", 3)] = False
+
+arr = np.array([[1], [4], [0.5], [3]])
+
+example_dict[("np.ndarray", "Series", 3)] = arr
+example_dict_lossy[("np.ndarray", "Series", 3)] = True
+
+if _check_soft_dependencies("xarray", severity="none"):
+    import xarray as xr
+
+    da = xr.DataArray(
+        [[1], [4], [0.5], [3]],
+        coords=[[0, 1, 2, 3], ["a"]],
+    )
+
+    example_dict[("xr.DataArray", "Series", 3)] = da
+    example_dict_lossy[("xr.DataArray", "Series", 3)] = False
+
+example_dict_metadata[("Series", 3)] = {
+    "is_univariate": True,
+    "is_equally_spaced": True,
+    "is_empty": False,
+    "has_nans": False,
+}


Test patch:
Repository: sktime/sktime

Issue:
[BUG] transformer multi-column pd.DataFrame output conversion fails
**Describe the bug**
It seem like series-to-series transformers cannot return multiple columns when passing a pd.Series as input. 

**To Reproduce**
```python
from sktime.transformations.base import BaseTransformer
import numpy as np
import pandas as pd

class MyTransformer(BaseTransformer):
    _tags = {
        "scitype:transform-input": "Series",
        "scitype:transform-output": "Series",
        "scitype:transform-labels": "None",
        "scitype:instancewise": True,
        "univariate-only": False,
        "handles-missing-data": True,
        "X_inner_mtype": "pd.DataFrame",
        "y_inner_mtype": "None",
        "X-y-must-have-same-index": True,
        "enforce_index_type": None,
        "fit-in-transform": False,
        "transform-returns-same-time-index": True,
        "skip-inverse-transform": True,
    }

    def _fit(self, X, y=None):
        return self
    
    def _transform(self, X, y=None):
        return pd.concat([X, X], axis=1)
    
transformer = MyTransformer()
transformer.fit_transform(pd.DataFrame(np.random.normal(size=(10,)))) # works
transformer.fit_transform(pd.Series(np.random.normal(size=(10,))))  # fails
```
> ValueError: input must be univariate pd.DataFrame, with one column

**Additional context**
This is relevant for "featurizers" as in #1693.

**Version**
main at commit 8ca23bd85e60d


Discussion:
yes, I noticed that too when thinking about #1677.

I was wondering what the behaviour should be in that case. `pd.DataFrame` by default? Seems easiest.

Resolving patch:
diff --git a/sktime/transformations/base.py b/sktime/transformations/base.py
--- a/sktime/transformations/base.py
+++ b/sktime/transformations/base.py
@@ -469,9 +469,18 @@ def transform(self, X, y=None, Z=None):
             Xt = convert_Panel_to_Series(Xt)
 
         if output_scitype == "Series":
+            # if the transformer outputs multivariate series,
+            #   we cannot convert back to pd.Series, do pd.DataFrame instead then
+            _, _, metadata = check_is_mtype(
+                Xt, ["pd.DataFrame", "pd.Series", "np.ndarray"], return_metadata=True
+            )
+            if not metadata["is_univariate"] and X_input_mtype == "pd.Series":
+                X_output_mtype = "pd.DataFrame"
+            else:
+                X_output_mtype = X_input_mtype
             Xt = convert_to(
                 Xt,
-                to_type=X_input_mtype,
+                to_type=X_output_mtype,
                 as_scitype=X_input_scitype,
             )
         elif output_scitype == "Primitives":


Test patch:
Repository: sktime/sktime

Issue:
[BUG] MiniRocket does not comply with sklearn interface: modifies random_state in constructor
`clone(MiniRocket)` errors out with the following:

```
RuntimeError: Cannot clone object MiniRocket(max_dilations_per_kernel=32, n_jobs=1, num_kernels=10000,
random_state=0), as the constructor either does not set or modifies parameter random_state
```

since it modifies the parameter `random_state` in the constructor.

We should probably also have a test for this, or check why current tests do not catch this.

FYI @angus924.


Discussion:

Resolving patch:
diff --git a/sktime/transformations/panel/rocket/_minirocket.py b/sktime/transformations/panel/rocket/_minirocket.py
--- a/sktime/transformations/panel/rocket/_minirocket.py
+++ b/sktime/transformations/panel/rocket/_minirocket.py
@@ -53,9 +53,7 @@ def __init__(
         self.max_dilations_per_kernel = max_dilations_per_kernel
 
         self.n_jobs = n_jobs
-        self.random_state = (
-            np.int32(random_state) if isinstance(random_state, int) else None
-        )
+        self.random_state = random_state
         super(MiniRocket, self).__init__()
 
     def fit(self, X, y=None):
@@ -71,6 +69,11 @@ def fit(self, X, y=None):
         self
         """
         X = check_X(X, enforce_univariate=True, coerce_to_numpy=True)
+
+        random_state = (
+            np.int32(self.random_state) if isinstance(self.random_state, int) else None
+        )
+
         X = X[:, 0, :].astype(np.float32)
         _, n_timepoints = X.shape
         if n_timepoints < 9:
@@ -81,7 +84,7 @@ def fit(self, X, y=None):
                 )
             )
         self.parameters = _fit(
-            X, self.num_kernels, self.max_dilations_per_kernel, self.random_state
+            X, self.num_kernels, self.max_dilations_per_kernel, random_state
         )
         self._is_fitted = True
         return self


Test patch:
Repository: sktime/sktime

Issue:
[BUG] forecasting API docs page is broken
**Describe the bug**
<!--
No ARIMA, BATS and Prophet documentation in the API References
-->


Hello, 
In your API documentation (https://www.sktime.org/en/v0.10.0/api_reference/forecasting.html) there is no references for prophet, ARIMA and BATS/TBATS


![unknown](https://user-images.githubusercontent.com/89520785/152760511-00c6d7db-9114-4efb-9225-921ad5d45e89.png)


</details>

<!-- Thanks for contributing! -->



Discussion:

Resolving patch:
diff --git a/sktime/forecasting/fbprophet.py b/sktime/forecasting/fbprophet.py
--- a/sktime/forecasting/fbprophet.py
+++ b/sktime/forecasting/fbprophet.py
@@ -19,7 +19,9 @@ class Prophet(_ProphetAdapter):
 
     Parameters
     ----------
-    freq: String of DatetimeIndex frequency. Refer [2]_ for possible values:
+    freq: str, default=None
+        A DatetimeIndex frequency. For possible values see
+        https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html
     add_seasonality: dict or None, default=None
         Dict with args for Prophet.add_seasonality().
         Dict can have the following keys/values:
@@ -99,7 +101,6 @@ class Prophet(_ProphetAdapter):
     References
     ----------
     .. [1] https://facebook.github.io/prophet
-    .. [2] https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html
 
     Examples
     --------


Test patch: