<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Python API
Prophet follows the sklearn model API.  We create an instance of the Prophet class and then call its fit and predict methods.  
The input to Prophet is always a dataframe with two columns
Step1:  We fit the model by instantiating a new Prophet object.  Any settings to the forecasting procedure are passed into the constructor.  Then you call its fit method and pass in the historical dataframe. Fitting should take 1-5 seconds.
Step2:  Predictions are then made on a dataframe with a column ds containing the dates for which a prediction is to be made. You can get a suitable dataframe that extends into the future a specified number of days using the helper method Prophet.make_future_dataframe. By default it will also include the dates from the history, so we will see the model fit as well.
Step3:  The predict method will assign each row in future a predicted value which it names yhat.  If you pass in historical dates, it will provide an in-sample fit. The forecast object here is a new dataframe that includes a column yhat with the forecast, as well as columns for components and uncertainty intervals.
Step4:  You can plot the forecast by calling the Prophet.plot method and passing in your forecast dataframe.
Step5:  If you want to see the forecast components, you can use the Prophet.plot_components method.  By default you'll see the trend, yearly seasonality, and weekly seasonality of the time series.  If you include holidays, you'll see those here, too.
Step6:  An interactive figure of the forecast and components can be created with plotly. You will need to install plotly 4.0 or above separately, as it will not by default be installed with prophet. You will also need to install the notebook and ipywidgets packages.
Step7:  More details about the options available for each method are available in the docstrings, for example, via help(Prophet) or help(Prophet.fit). The R reference manual on CRAN provides a concise list of all of the available functions, each of which has a Python equivalent.
R API
In R, we use the normal model fitting API.  We provide a prophet function that performs fitting and returns a model object.  You can then call predict and plot on this model object.
Step8:  First we read in the data and create the outcome variable. As in the Python API, this is a dataframe with columns ds and y, containing the date and numeric value respectively. The ds column should be YYYY-MM-DD for a date, or YYYY-MM-DD HH
Step9:  We call the prophet function to fit the model.  The first argument is the historical dataframe.  Additional arguments control how Prophet fits the data and are described in later pages of this documentation.
Step10:  Predictions are made on a dataframe with a column ds containing the dates for which predictions are to be made. The make_future_dataframe function takes the model object and a number of periods to forecast and produces a suitable dataframe. By default it will also include the historical dates so we can evaluate in-sample fit.
Step11:  As with most modeling procedures in R, we use the generic predict function to get our forecast. The forecast object is a dataframe with a column yhat containing the forecast. It has additional columns for uncertainty intervals and seasonal components.
Step12:  You can use the generic plot function to plot the forecast, by passing in the model and the forecast dataframe.
Step13:  You can use the prophet_plot_components function to see the forecast broken down into trend, weekly seasonality, and yearly seasonality.
<ASSISTANT_TASK:>
Python Code:
import pandas as pd
from prophet import Prophet
df = pd.read_csv('../examples/example_wp_log_peyton_manning.csv')
df.head()
Explanation: Python API
Prophet follows the sklearn model API.  We create an instance of the Prophet class and then call its fit and predict methods.  
The input to Prophet is always a dataframe with two columns: ds and y.  The ds (datestamp) column should be of a format expected by Pandas, ideally YYYY-MM-DD for a date or YYYY-MM-DD HH:MM:SS for a timestamp. The y column must be numeric, and represents the measurement we wish to forecast.
As an example, let's look at a time series of the log daily page views for the Wikipedia page for Peyton Manning.  We scraped this data using the Wikipediatrend package in R.  Peyton Manning provides a nice example because it illustrates some of Prophet's features, like multiple seasonality, changing growth rates, and the ability to model special days (such as Manning's playoff and superbowl appearances). The CSV is available here.
First we'll import the data:
End of explanation
m = Prophet()
m.fit(df)
Explanation: We fit the model by instantiating a new Prophet object.  Any settings to the forecasting procedure are passed into the constructor.  Then you call its fit method and pass in the historical dataframe. Fitting should take 1-5 seconds.
End of explanation
future = m.make_future_dataframe(periods=365)
future.tail()
Explanation: Predictions are then made on a dataframe with a column ds containing the dates for which a prediction is to be made. You can get a suitable dataframe that extends into the future a specified number of days using the helper method Prophet.make_future_dataframe. By default it will also include the dates from the history, so we will see the model fit as well.
End of explanation
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Explanation: The predict method will assign each row in future a predicted value which it names yhat.  If you pass in historical dates, it will provide an in-sample fit. The forecast object here is a new dataframe that includes a column yhat with the forecast, as well as columns for components and uncertainty intervals.
End of explanation
fig1 = m.plot(forecast)
Explanation: You can plot the forecast by calling the Prophet.plot method and passing in your forecast dataframe.
End of explanation
fig2 = m.plot_components(forecast)
Explanation: If you want to see the forecast components, you can use the Prophet.plot_components method.  By default you'll see the trend, yearly seasonality, and weekly seasonality of the time series.  If you include holidays, you'll see those here, too.
End of explanation
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m, forecast)
plot_components_plotly(m, forecast)
Explanation: An interactive figure of the forecast and components can be created with plotly. You will need to install plotly 4.0 or above separately, as it will not by default be installed with prophet. You will also need to install the notebook and ipywidgets packages.
End of explanation
%%R
library(prophet)
Explanation: More details about the options available for each method are available in the docstrings, for example, via help(Prophet) or help(Prophet.fit). The R reference manual on CRAN provides a concise list of all of the available functions, each of which has a Python equivalent.
R API
In R, we use the normal model fitting API.  We provide a prophet function that performs fitting and returns a model object.  You can then call predict and plot on this model object.
End of explanation
%%R
df <- read.csv('../examples/example_wp_log_peyton_manning.csv')
Explanation: First we read in the data and create the outcome variable. As in the Python API, this is a dataframe with columns ds and y, containing the date and numeric value respectively. The ds column should be YYYY-MM-DD for a date, or YYYY-MM-DD HH:MM:SS for a timestamp. As above, we use here the log number of views to Peyton Manning's Wikipedia page, available here.
End of explanation
%%R
m <- prophet(df)
Explanation: We call the prophet function to fit the model.  The first argument is the historical dataframe.  Additional arguments control how Prophet fits the data and are described in later pages of this documentation.
End of explanation
%%R
future <- make_future_dataframe(m, periods = 365)
tail(future)
Explanation: Predictions are made on a dataframe with a column ds containing the dates for which predictions are to be made. The make_future_dataframe function takes the model object and a number of periods to forecast and produces a suitable dataframe. By default it will also include the historical dates so we can evaluate in-sample fit.
End of explanation
%%R
forecast <- predict(m, future)
tail(forecast[c('ds', 'yhat', 'yhat_lower', 'yhat_upper')])
Explanation: As with most modeling procedures in R, we use the generic predict function to get our forecast. The forecast object is a dataframe with a column yhat containing the forecast. It has additional columns for uncertainty intervals and seasonal components.
End of explanation
%%R -w 10 -h 6 -u in
plot(m, forecast)
Explanation: You can use the generic plot function to plot the forecast, by passing in the model and the forecast dataframe.
End of explanation
%%R -w 9 -h 9 -u in
prophet_plot_components(m, forecast)
Explanation: You can use the prophet_plot_components function to see the forecast broken down into trend, weekly seasonality, and yearly seasonality.
End of explanation
<END_TASK>