Specify a stratification method

lcMethodStratify(
  response,
  stratify,
  center = meanNA,
  nClusters = NaN,
  clusterNames = NULL,
  time = getOption("latrend.time"),
  id = getOption("latrend.id"),
  name = "stratify"
)

Arguments

response

The name of the response variable.

stratify

An expression returning a number or factor value per trajectory, representing the cluster assignment. Alternatively, a function can be provided that takes separate trajectory data.frame as input.

center

The function for computing the longitudinal cluster centers, used for representing the cluster trajectories.

nClusters

The number of clusters. This is optional, as this can be derived from the largest assignment number by default, or the number of factor levels.

clusterNames

The names of the clusters. If a factor assignment is returned, the levels are used as the cluster names.

time

The name of the time variable.

id

The name of the trajectory identification variable.

name

The name of the method.

Examples

data(latrendData)
# Stratification based on the mean response level
method <- lcMethodStratify(
  "Y",
  mean(Y) > 0,
  clusterNames = c("Low", "High"),
  id = "Id",
  time = "Time"
)
model <- latrend(method, latrendData)
summary(model)
#> Longitudinal cluster model using stratify
#> lcMethodStratify specifying "stratify"
#>  center:         function (x) {    mean(x, na.rm = TRUE)}
#>  nClusters:      NaN
#>  clusterNames:   "Low", "High"
#>  time:           "Time"
#>  id:             "Id"
#>  name:           "stratify"
#>  response:       "Y"
#>  stratify:       mean(Y) > 0
#> 
#> Cluster sizes (K=2):
#>         Low        High 
#> 119 (59.5%)  81 (40.5%) 
#> 
#> Number of obs: 2000, strata (Id): 200
#> 
#> Scaled residuals:
#>     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
#> -3.85807 -0.57074  0.08278  0.00000  0.65266  2.90961 
#> 

# Stratification function
stratfun <- function(trajdata) {
   trajmean <- mean(trajdata$Y)
   factor(
     trajmean > 1.7,
     levels = c(FALSE, TRUE),
     labels = c("Low", "High")
   )
}
method <- lcMethodStratify("Y", stratfun, id = "Id", time = "Time")

# Multiple clusters
stratfun3 <- function(trajdata) {
   trajmean <- mean(trajdata$Y)
   cut(
     trajmean,
     c(-Inf, .5, 2, Inf),
     labels = c("Low", "Medium", "High")
   )
}
method <- lcMethodStratify("Y", stratfun3, id = "Id", time = "Time")