Lform | R Documentation |
Creates an L matrix using expressions evaluated in 'data' for each column of the L matrix
Lform(fit, form, data = getData(fit))
fit |
a fitted model with a 'getFix' method. |
data |
the data frame in which expressions are evaluated. |
expr.list |
a list of expressions with one component for each column (or groups of columns) of the hypothesis matrix corresponding to each term of the model. A term with multiple degrees of freedom can either be generated as separate single terms or with an expression that evaluates to a suitable matrix. |
formula |
as an argument of |
expr |
as an argument of |
If Lform
is called with only a fit
argument, it outputs code
consisting of an expression that would, if used as the fmla
argument
to Lform
would generate the full design matrix for the linear model.
If Lform
is called with two or three arguments, it generates a
hypothesis matrix by evaluating the expressions in form
in the
environment data
. The function M
is designed to facilitate the
generation of blocks of the hypothesis matrix corresponding to main effects
or interaction effects of factors.
Creates a linear hypothesis
matrix, i.e. an L matrix, using formulas evaluated in 'data' for each column
of the L matrix. This approach lends itself to creating hypotheses and
estimates based on data such as partial derivatives with respect to
variables evaluated at each data point.
An example is the estimation of growth rates in longitudinal models.
library(car) library(spida) fit <- lm( income ~ (education + I(education^2)
)* type, Prestige) summary(fit)
. . . Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 891.3
23889.1 0.037 0.97032 education 210.0 5638.8 0.037 0.97037 I(education^2)
38.3 328.3 0.117 0.90740 typeprof 191523.2 63022.0 3.039 0.00312 ** typewc
25692.3 73888.0 0.348 0.72887 education:typeprof -28133.0 10236.0 -2.748
0.00725 ** education:typewc -4485.4 14007.9 -0.320 0.74956
I(education^2):typeprof 1017.5 451.8 2.252 0.02679 * I(education^2):typewc
170.9 671.6 0.255 0.79967 . . .
# estimate the marginal value of occupation for each occupation in the data
set
L <- list( 'marginal value of education' =Lform( fit, form = list(
0,1,2*education, 0,0, type == 'prof', type == 'wc', 2*education
*(type=='prof'), 2* education * (type == 'wc')), data = Prestige)) wald(
fit, L ) chat <- coef( wald( fit, L ), se = 2) xyplot( coef +coefp+coefm ~
education | type, cbind(Prestige,chat)[order(Prestige$education),], type =
'l') xyplot( chat~ education | type, Prestige)
hypothesis matrix
wald,Leff
and Lfx
for a new
improved but experimental version.
## Not run:
library(car)
mod <- lm( income ~ (education + I(education^2) )* type, Prestige)
summary(mod)
# estimate the marginal value of an extra year of education for a
# range of years for each type
years.type <- expand.grid( education = seq(6,18,2), type = levels(Prestige$type))
Lf <- Lform( mod,
list( 0, 1, 2*education, 0, 0, type =="prof", type =="wc",
2*education*(type =="prof"), 2*education*(type =="wc")),
years.type)
Lf
ww <- wald( mod, Lf)
ww
ytderiv <- as.data.frame( ww, se = 2)
head( ytderiv )
xyplot( coef ~ education, ytderiv, groups = type, type = 'l',
auto.key = list(columns = 3, lines = TRUE, points = FALSE)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.