powerlink.RdComputes the power transformation, including its inverse and the first two derivatives.
powerlink(theta, power = 1, inverse = FALSE, deriv = 0,
short = TRUE, tag = FALSE)Numeric or character. See below for further details.
This denotes the power or exponent.
Details at Links.
The power link function raises a parameter by a certain value of
power.
Care is needed because it is very easy to get numerical
problems, e.g., if power=0.5 and theta is
negative.
For powerlink with deriv = 0, then theta raised
to the power of power.
And if inverse = TRUE then
theta raised to the power of 1/power.
For deriv = 1, then the function returns
d theta / d eta as a function of theta
if inverse = FALSE,
else if inverse = TRUE then it returns the reciprocal.
Numerical problems may occur for certain combinations of
theta and power.
Consequently this link function should be used with caution.
powerlink("a", power = 2, short = FALSE, tag = TRUE)
#> [1] "Power link: a^(2)"
powerlink(x <- 1:5)
#> [1] 1 2 3 4 5
powerlink(x, power = 2)
#> [1] 1 4 9 16 25
max(abs(powerlink(powerlink(x, power = 2),
power = 2, inverse = TRUE) - x)) # Should be 0
#> [1] 0
powerlink(x <- (-5):5, power = 0.5) # Has NAs
#> [1] NaN NaN NaN NaN NaN 0.000000 1.000000 1.414214
#> [9] 1.732051 2.000000 2.236068
# 1/2 = 0.5
pdata <- data.frame(y = rbeta(n = 1000, shape1 = 2^2, shape2 = 3^2))
fit <- vglm(y ~ 1, betaR(lshape1 = "powerlink(power = 0.5)", i1 = 3,
lshape2 = "powerlink(power = 0.5)", i2 = 7),
data = pdata)
t(coef(fit, matrix = TRUE))
#> (Intercept)
#> powerlink(shape1, power = 0.5) 1.980062
#> powerlink(shape2, power = 0.5) 2.965573
Coef(fit) # Useful for intercept-only models
#> shape1 shape2
#> 3.920644 8.794624
vcov(fit, untransform = TRUE)
#> shape1 shape2
#> shape1 0.02853005 0.06048112
#> shape2 0.06048112 0.15412419