VGAM (version 1.1-6)

Trunc: Truncated Values for the GT-Expansion Method


Given the minimum and maximum values in a response variable, and a positive multiplier, returns the truncated values for generally-truncated regression


Trunc(Range, mux = 2, location = 0, omits = TRUE)



Numeric, of length 2 containing the minimum and maximum (in that order) of the untransformed data. Alternatively, if length(Range) > 2 then it is assumed that the entire untransformed data is passed in so that range is applied.


Numeric, the multiplier. A positive integer.


Numeric, the location parameter, allows a shift to the right.


Logical. The default is to return the truncated values (those being omitted). If FALSE then the multiples are returned.


A vector of values to be fed into the truncate argument of a VGAM family function such as gaitdpoisson. If mux = 1 then the function will return a NULL rather than integer(0).


Generally-truncated regression can handle underdispersion with respect to some parent or base distribution such as the Poisson. Yee and Ma (2022) call this the GT-Expansion (GTE) method, which is a special case of the GT-location-scale (GT-LS) method. This is a utility function to help make life easier. It is assumed that the response is a count variable.

See Also

gaitdpoisson, gaitdlog, gaitdzeta, range, setdiff, goffset.


Run this code
Trunc(c(1, 8), 2)

set.seed(1)  # The following example is based on the normal
mymean <- 20; m.truth <- 3  # approximation to the Poisson.
gdata <- data.frame(y1 = round(rnorm((nn <- 1000), mymean,
                                     sd = sqrt(mymean / m.truth))))
org1 <- with(gdata, range(y1))  # Original range of the raw data
m.max <- 5  # Try multipliers 1:m.max
logliks <- numeric(m.max)
names(logliks) <- as.character(1:m.max)
for (i in 1:m.max) {
  logliks[i] <- logLik(vglm(i * y1 ~ offset(rep(log(i), nn)),
    gaitdpoisson(truncate = Trunc(org1, i)), data = gdata))
sort(logliks, decreasing = TRUE)  # Best to worst
# }
 par(mfrow = c(1, 2))
plot(with(gdata, table(y1)))  # Underdispersed wrt Poisson
plot(logliks, col = "blue", type = "b", xlab = "Multiplier") 
# }

Run the code above in your browser using DataLab