Computes linear functions (i.e. weighted sums) of the estimated regression parameters. Can also test the hypothesis, that such a function is equal to a specific value.

esticon(obj, L, beta0, conf.int = TRUE, level = 0.95, joint.test = FALSE, ...)

# S3 method for esticon_class
coef(object, ...)

# S3 method for esticon_class
summary(object, ...)

# S3 method for esticon_class
confint(object, parm, level = 0.95, ...)

# S3 method for esticon_class
vcov(object, ...)

Arguments

obj

Regression object (of type lm, glm, lme, geeglm).

L

Matrix (or vector) specifying linear functions of the regression parameters (one linear function per row). The number of columns must match the number of fitted regression parameters in the model. See 'details' below.

beta0

A vector of numbers

conf.int

TRUE

level

The confidence level

joint.test

Logical value. If TRUE a 'joint' Wald test for the hypothesis L beta = beta0 is made. Default is that the 'row-wise' tests are made, i.e. (L beta)i=beta0i. If joint.test is TRUE, then no confidence interval etc. is calculated.

...

Additional arguments; currently not used.

object

An esticon_class object.

parm

a specification of which parameters are to be given confidence intervals, either a vector of numbers or a vector of names. If missing, all parameters are considered.

Value

Returns a matrix with one row per linear function. Columns contain estimated coefficients, standard errors, t values, degrees of freedom, two-sided p-values, and the lower and upper endpoints of the 1-alpha confidence intervals.

Details

Let the estimated parameters of the model be $$\beta_1, \beta_2, \dots, \beta_p$$

A linear function of the estimates is of the form $$l=\lambda_1 \beta_1+\lambda_2 \beta_2+ \dots+\lambda_p \beta_p$$ where \(\lambda_1, \lambda_2, \dots,\lambda_p\) is specified by the user.

The esticon function calculates l, its standard error and by default also a 95 pct confidence interval. It is sometimes of interest to test the hypothesis \(H_0: l=\beta_0\) for some value \(\beta_0\) given by the user. A test is provided for the hypothesis \(H_0: l=0\) but other values of \(\beta_0\) can be specified.

In general, one can specify r such linear functions at one time by specifying L to be an \(r\times p\) matrix where each row consists of p numbers \(\lambda_1,\lambda_2,\dots, \lambda_p\). Default is then that \(\beta_0\) is a p vector of 0s but other values can be given.

It is possible to test simultaneously that all specified linear functions are equal to the corresponding values in \(\beta_0\).

For computing contrasts among levels of a single factor, 'contrast.lm' may be more convenient.

Author

Søren Højsgaard, sorenh@math.aau.dk

Examples


data(iris)
lm1  <- lm(Sepal.Length ~ Sepal.Width + Species + Sepal.Width : Species, data=iris)
## Note that the setosa parameters are set to zero
coef(lm1)
#>                   (Intercept)                   Sepal.Width 
#>                     2.6390012                     0.6904897 
#>             Speciesversicolor              Speciesvirginica 
#>                     0.9007335                     1.2678352 
#> Sepal.Width:Speciesversicolor  Sepal.Width:Speciesvirginica 
#>                     0.1745880                     0.2110448 

## Estimate the intercept for versicolor
lambda1 <- c(1, 0, 1, 0, 0, 0)
esticon(lm1, L=lambda1)
#>        estimate  std.error  statistic    p.value      beta0  df
#> [1,] 3.5397e+00 5.5802e-01 6.3434e+00 2.7352e-09 0.0000e+00 144

## Estimate the difference between versicolor and virgica intercept
## and test if the difference is 1
lambda2 <- c(0, 1, -1, 0, 0, 0)
esticon(lm1, L=lambda2, beta0=1)
#>      estimate std.error statistic  p.value    beta0  df
#> [1,] -0.21024   0.69077  -1.75202  0.08190  1.00000 144

## Do both estimates at one time
esticon(lm1, L=rbind(lambda1, lambda2), beta0=c(0, 1))
#>            estimate   std.error   statistic     p.value       beta0  df
#> lambda1  3.5397e+00  5.5802e-01  6.3434e+00  2.7352e-09  0.0000e+00 144
#> lambda2 -2.1024e-01  6.9077e-01 -1.7520e+00  8.1900e-02  1.0000e+00 144

## Make a combined test for that the difference between versicolor and virgica intercept
## and difference between versicolor and virginica slope is zero:
lambda3 <- c(0, 0, 0, 0, 1, -1)
esticon(lm1, L=rbind(lambda2, lambda3), joint.test=TRUE)
#>      X2.stat DF Pr(>|X^2|)
#> 1 0.09560902  2  0.9533201

# Example using esticon on coxph objects (thanks to Alessandro A. Leidi).
# Using dataset 'veteran' in the survival package
# from the Veterans' Administration Lung Cancer study

if (require(survival)){
data(veteran)
sapply(veteran, class)
levels(veteran$celltype)
attach(veteran)
veteran.s <- Surv(time, status)
coxmod <- coxph(veteran.s ~ age + celltype + trt, method='breslow')
summary(coxmod)

# compare a subject 50 years old with celltype 1
# to a subject 70 years old with celltype 2
# both subjects on the same treatment
AvB <- c(-20, -1, 0, 0, 0)

# compare a subject 40 years old with celltype 2 on treat=0
# to a subject 35 years old with celltype 3 on treat=1
CvB <- c(5, 1, -1, 0, -1)

est <- esticon(coxmod, L=rbind(AvB, CvB))
est
##exp(est[, c(2, 7, 8)])
}
#> Loading required package: survival
#> Warning: data set ‘veteran’ not found
#>        estimate   std.error   statistic     p.value       beta0 df
#> AvB -1.15579745  0.31242070 13.68623052  0.00021603  0.00000000  1
#> CvB -0.24580560  0.28171444  0.76131664  0.38291680  0.00000000  1