knsmooth | R Documentation |
This function estimates the nonparametric trend function in an equidistant time series with Nadaraya-Watson kernel regression.
knsmooth(y, mu = 1, b = 0.15, bb = c(0, 1))
y |
a numeric vector that contains the time series data ordered from past to present. | ||||||||||||
mu |
an integer
| ||||||||||||
b |
a real number | ||||||||||||
bb |
can be set to
|
The trend is estimated based on the additive nonparametric regression model for an equidistant time series
y_t = m(x_t) + \epsilon_t,
where y_t
is the observed time series, x_t
is the rescaled time
on the interval [0, 1]
, m(x_t)
is a smooth and deterministic
trend function and \epsilon_t
are stationary errors with
E(\epsilon_t) = 0
.
This function is part of the package smoots
and is used for
the estimation of trends in equidistant time series. The applied method
is a kernel regression with arbitrarily selectable second order
kernel, relative bandwidth and boundary method. Especially the chosen
bandwidth has a strong impact on the final result and has thus to be
selected carefully. This approach is not recommended by the authors of this
package.
The output object is a list with different components:
the chosen (relative) bandwidth; input argument.
the chosen bandwidth option at the boundaries; input argument.
the chosen smoothness parameter for the second order kernel; input argument.
the number of observations.
the original input series; input argument.
a vector with the estimated residual series.
a vector with the estimates of the nonparametric trend.
Yuanhua Feng (Department of Economics, Paderborn University),
Author of the Algorithms
Website: https://wiwi.uni-paderborn.de/en/dep4/feng/
Dominik Schulz (Research Assistant) (Department of Economics, Paderborn
University),
Package Creator and Maintainer
Feng, Y. (2009). Kernel and Locally Weighted Regression. Verlag für Wissenschaft und Forschung, Berlin.
# Logarithm of test data
test_data <- gdpUS
y <- log(test_data$GDP)
#Applied knmooth function for the trend with two different bandwidths
trend1 <- knsmooth(y, mu = 1, b = 0.28, bb = 1)$ye
trend2 <- knsmooth(y, mu = 1, b = 0.05, bb = 1)$ye
# Plot of the results
t <- seq(from = 1947, to = 2019.25, by = 0.25)
plot(t, y, type = "l", xlab = "Year", ylab = "log(US-GDP)", bty = "n",
lwd = 2,
main = "Estimated trend for log-quarterly US-GDP, Q1 1947 - Q2 2019")
points(t, trend1, type = "l", col = "red", lwd = 1)
points(t, trend2, type = "l", col = "blue", lwd = 1)
legend("bottomright", legend = c("Trend (b = 0.28)", "Trend (b = 0.05)"),
fill = c("red", "blue"), cex = 0.6)
title(sub = expression(italic("Figure 1")), col.sub = "gray47",
cex.sub = 0.6, adj = 0)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.