## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 6,
  fig.height = 4
)

## -----------------------------------------------------------------------------
library(CircularRegression)

wrap_angle <- function(x) atan2(sin(x), cos(x))

set.seed(123)
n <- 150
x1 <- runif(n, -pi, pi)
x2 <- runif(n, -pi, pi)
z2 <- runif(n, 0.2, 1.8)
beta <- 0.35

mu <- atan2(
  sin(x1) + beta * z2 * sin(x2),
  cos(x1) + beta * z2 * cos(x2)
)
y <- wrap_angle(mu + rnorm(n, sd = 0.12))

dat <- data.frame(y = y, x1 = x1, x2 = x2, z2 = z2)

## -----------------------------------------------------------------------------
fit <- circular_regression(y ~ x1 + x2:z2, data = dat)
fit

## -----------------------------------------------------------------------------
coef(fit)
head(fitted(fit))
head(residuals(fit))
head(predict(fit))

## -----------------------------------------------------------------------------
new_dat <- dat[1:5, c("x1", "x2", "z2")]
predict(fit, newdata = new_dat)

## -----------------------------------------------------------------------------
fit_hom <- angular(
  y ~ x1 + x2:z2,
  data = dat,
  reference = c("name", "x1")
)

summary(fit_hom)

## -----------------------------------------------------------------------------
fit_cons <- consensus(y ~ x1 + x2:z2, data = dat)
summary(fit_cons)

