extraTests {FSA} | R Documentation |
Likelihood ratio and extra sum-of-squares tests.
Description
Likelihood ratio and extra sum-of-squares tests with multiple lm
or nls
models nested within one common model. This function is most useful when the nested functions are all at the same level; otherwise use anova()
or lrtest()
which are more flexible.
Usage
lrt(sim, ..., com, sim.names = sim.name, sim.name = NULL, com.name = NULL)
extraSS(sim, ..., com, sim.names = sim.name, sim.name = NULL, com.name = NULL)
## S3 method for class 'extraTest'
print(x, ...)
Arguments
sim |
The results of one |
... |
More model results that are nested subsets of the model in |
com |
The results of one |
sim.name , sim.names |
A string vector of “names” for simple model in |
com.name |
A single “name” string for the complex model in |
x |
An object from |
Details
anova
and lrtest
(from lmtest) provide simple methods for conducting extra sum-of-squares or likelihood ratio tests when one model is nested within another model or when there are several layers of simple models all sequentially nested within each other. However, to compare several models that are nested at the same level with one common more complex model, then anova()
and lrtest()
must be repeated for each comparison. This repetition can be eliminated with lapply()
but then the output is voluminous. This function is designed to remove the repetitiveness and to provide output that is compact and easy to read.
Value
The main function returns a matrix with as many rows as model comparisons and columns of the following types:
-
DfO
The error degrees-of-freedom from the subset (more simple) model. -
RSSO
,logLikO
The residual sum-of-squares (fromextraSS
) or log-likelihood (fromlrt
) from the subset (more simple) model. -
DfA
The error degrees-of-freedom from thecom=
model. -
RSSA
,logLikA
The residual sum-of-squares (fromextraSS
) or log-likelihood (fromlrt
) from thecom=
model. -
Df
The difference in error degrees-of-freedom between the two models. -
SS
,logLik
The difference in residual sum-of-squares (fromextraSS
) or log-likelihood (fromlrt
) between the two models. -
F
,Chisq
The corresponding F- (fromextraSS
) or Chi-square (fromlrt
) test statistic. -
Pr(>F)
,Pr(>Chisq)
The corresponding p-value.
Note
This function is experimental at this point. It seems to work fine for lm
and nls
models. An error will be thrown by extraSS
for other model classes, but lrt
will not (but it has not been thoroughly tests for other models).
Author(s)
Derek H. Ogle, DerekOgle51@gmail.com
Examples
## Example data
df <- data.frame(x=c(1,2,3,4,5,6,7,8,9,10),
y=c(4,6,5,7,9,8,7,12,16,22),
z=as.factor(rep(c("A","B"),each=5)),
w=as.factor(rep(c("A","B"),times=5)))
df$x2 <- df$x^2
## Linear (lm()) models
# ... regression
fit.0 <- lm(y~1,data=df)
fit.1 <- lm(y~x,data=df)
fit.2 <- lm(y~x2+x,data=df)
extraSS(fit.0,fit.1,com=fit.2)
lrt(fit.0,fit.1,com=fit.2)
# ... show labels for models
extraSS(fit.0,fit.1,com=fit.2,
sim.names=c("Null Model","Linear"),com.name="Quadratic")
lrt(fit.0,fit.1,com=fit.2,
sim.names=c("Null Model","Linear"),com.name="Quadratic")
# ... dummy variable regression
fit.2b <- lm(y~x*z,data=df)
extraSS(fit.0,fit.1,com=fit.2b)
lrt(fit.0,fit.1,com=fit.2b)
# ... ANOVAs
fit.1 <- lm(y~w,data=df)
fit.2 <- lm(y~w*z,data=df)
extraSS(fit.0,fit.1,com=fit.2)
lrt(fit.0,fit.1,com=fit.2)
## Non-linear (nls()) models
fit.0 = nls(y~c,data=df,start=list(c=10))
fit.1 = nls(y~a*x+c,data=df,start=list(a=1,c=1))
fit.2 = nls(y~b*x2+a*x+c,data=df,start=list(a=-1,b=0.3,c=10))
extraSS(fit.0,fit.1,com=fit.2)
lrt(fit.0,fit.1,com=fit.2)
## General least-squares (gls()) models
## Not run:
require(nlme)
fit.0 <- gls(y~1,data=df,method="ML")
fit.1 <- gls(y~x,data=df,method="ML")
fit.2 <- gls(y~x2+x,data=df,method="ML")
lrt(fit.0,fit.1, com=fit.2)
## will return an error ... does not work with gls() models
# extraSS(fit.0,fit.1, com=fit.2)
## End(Not run)