Learn R Programming

piecewiseSEM (version 1.1.1)

sem.fisher.c: Goodness-of-fit test for piecewise SEM

Description

Evaluates independence claims for a piecewise structural equation model (SEM), and calculates Fisher's C and associated p-value to evaluate model fit.

Usage

sem.fisher.c(modelList, data, corr.errors, add.vars, grouping.vars, 
  adjust.p, basis.set, pvalues.df, model.control, .progressBar)

Arguments

modelList
a list of regressions representing the structural equation model.
data
a data.frame used to construct the structured equations.
corr.errors
a vector of variables with correlated errors (separated by "~~").
add.vars
a vector of additional variables whose independence claims should be evaluated, but which do not appear in the model list.
grouping.vars
an optional variable that represents the highest level of a hierarchical dataset.
adjust.p
whether p-values degrees of freedom should be adjusted (see below). Default is FALSE.
basis.set
provide an optional basis set.
pvalues.df
an optional data.frame corresponding to p-values for independence claims.
model.control
a list of model control arguments to be passed to d-sep models.
.progressBar
enable optional text progress bar. Default is TRUE.

Value

  • Returns a data.frame with the first entry corresponding to Fisher's C statistic, the second corresponding to the Chi-squared test degrees of freedom, and the third corresponding to the outcome (p-value) of the significance test derived from a Chi-squared distribution. For linear mixed effects models, p-values can be adjusted to accommodate the full model degrees of freedom using the argument p.adjust = TRUE. For more information, see Shipley 2013.

References

Shipley, Bill. "Confirmatory path analysis in a generalized multilevel context." Ecology 90.2 (2009): 363-368.

Examples

Run this code
# Load example data
data(shipley2009)

# Reduce dataset for example
shipley2009.reduced = shipley2009[1:200, ]

# Load model packages
library(lme4)
library(nlme)

# Create list of models 
  shipley2009.reduced.modlist = list(
    
    lme(DD ~ lat, random = ~1|site/tree, na.action = na.omit, 
        data = shipley2009.reduced),
    
    lme(Date ~ DD, random = ~1|site/tree, na.action = na.omit, 
        data = shipley2009.reduced),
    
    lme(Growth ~ Date, random = ~1|site/tree, na.action = na.omit, 
        data = shipley2009.reduced),
    
    glmer(Live ~ Growth+(1|site)+(1|tree), 
          family=binomial(link = "logit"), data = shipley2009.reduced) 
    
  )
  
# Get goodness-of-fit statistics
sem.fisher.c(shipley2009.reduced.modlist, shipley2009.reduced)

# Repeat with full dataset as in Shipley (2009)

  # Create list of models 
  shipley2009.modlist = list(
    
    lme(DD ~ lat, random = ~1|site/tree, na.action = na.omit, 
        data = shipley2009),
    
    lme(Date ~ DD, random = ~1|site/tree, na.action = na.omit, 
        data = shipley2009),
    
    lme(Growth ~ Date, random = ~1|site/tree, na.action = na.omit, 
        data = shipley2009),
    
    glmer(Live ~ Growth+(1|site)+(1|tree), 
          family=binomial(link = "logit"), data = shipley2009) 
    
  )

  # Get goodness-of-fit statistics
  sem.fisher.c(shipley2009.modlist, shipley2009)

Run the code above in your browser using DataLab