sla: Two-Group, Straight-Line ANCOVA: Four Models

Description Usage Arguments Value Note Author(s) References Examples

View source: R/sla.R

Description

Fits four linear models ("A", "B", "C", and "D") for the two-group, straight-line ANCOVA problem. (A) Model "A", the full model - fits two intercepts and two slopes (separate intercepts and slopes for each group); (B) Model "B", a reduced model - fits single intercept and single slope to all the data (ignoring group designation); (C) Model "C", a reduced model - fits two different intercepts and a single, common slope; (D) Model "D", a reduced model - fits a single, common intercept and two different slopes.

Usage

1
2
3
4
5
6
7
8
9
sla(facxy, ...)
## Default S3 method:
sla(facxy, ...)
## S3 method for class 'sla'
print(x, ...)
## S3 method for class 'sla'
summary(object, ...)
## S3 method for class 'sla'
plot(x, modelType2Plot = "A", ...)

Arguments

facxy

a data frame with three columns in specific order: (1) factor (Group) variable, (2) numeric x-axis predictor, regressor (or independent) variable, and (3) numeric y-axis criterion (or dependent) variable.

x

an object of class 'sla', i.e., a list containing data frames, coefficients, and fitted models.

object

an object of class 'sla', i.e., a list containing data frames, coefficients, and fitted models.

modelType2Plot

a character letter, "A", "B", "C", or "D", to indicate which model, with its associated fitted lines (abline), to plot.

...

not used.

Value

Returns an object of class "sla", which is a list containing the following components:

Call

model call

INPUT.df

input data frame

Summary of Input Data Frame

produced from the generic function summary().

Mod.A

an object of class "lm" for the fit of Model A.

Mod.B

an object of class "lm" for the fit of Model B.

Mod.C

an object of class "lm" for the fit of Model C.

Mod.D

an object of class "lm" for the fit of Model D.

Fit.Table

a data frame containing a description of the fit, number of parameters estimated, residual degrees of freedom, residual sum of squares, and residual mean square for each model "lm" fit, i.e., for models A, B, C and D.

Test.Table

a data frame containing a description of three tests of (reduced) models B, C, and D vs. the (full) model A, the degrees of freedom associated with the anova() comparison of the reduced and full models [note: always 2, 1, and 1], the difference between the residual sums of squares between the reduced and full models, the F statistic associated with the test, and the probability associated with the corresponding F statistic for the test.

Fit.Table.Pretty

a data frame containing essentially the same information as in Fit.Table but displayed in a prettier format.

Test.Table.Pretty

a data frame containing essentially the same information as in Test.Table but displayed in a prettier format.

Note

(1) The hellung data frame with conc and diameter raw values is available in the ISwR library from Dalgaard P (2002) Introductory Statistics with R. Springer.
(2) Simulated data sets (without setting the seed) using the code provided in the examples yield the desired outcomes 95 percent of the time.

Author(s)

W Greg Alvord

References

Dalgaard P (2002) Introductory Statistics with R. Springer.
Draper NR and Smith H (1998) Applied Regression Analysis. 3rd ed. Wiley.
Fox J (2008) Applied Regression Analysis and General Linear Models, 2nd ed. Sage.
Fox J and Weisberg S (2011) An R Companion to Applied Regression, 2nd ed. Sage.
Searle SR (1971) Linear Models, Wiley.
Venables WN and Ripley BD (2002) Modern Applied Statistics with S. 4th ed. Springer.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
data(eqslo)
eqsloObj <- sla(eqslo)
eqsloObj
summary(eqsloObj)
attributes(eqsloObj)
eqsloObj$Mod.C # best fitting reduced model, equivalent slopes, different intercepts
summary(eqsloObj$Mod.C) # lm summary of Model C
plot(eqsloObj, mod = 'C') # plot of data eqslo, fitted lines with equal slopes, different intercepts
##
data(eqint)
eqintObj <- sla(eqint)
eqintObj
summary(eqintObj)
attributes(eqintObj)
eqintObj$Mod.D # best fitting reduced model, equivalent intercepts, different slopes
summary(eqintObj$Mod.D) # lm summary of Model D
plot(eqintObj, mod = 'D') # plot of data eqint, fitted lines with equal intercepts, different slopes
##
## See MASS, 4th ed., pp 139-144 for ANCOVA of whiteside data
##
library(MASS)
data(whiteside) 
whitesideObj <- sla(whiteside)
summary(whitesideObj) # See MASS, 4th ed., pp 139-144 for ANCOVA of whiteside data
par(mfrow = c(2,2))
plot(whitesideObj, "A") # different intercepts and different slopes
plot(whitesideObj, "B") # common intercept and common slope
plot(whitesideObj, "C") # different intercepts, common slope
plot(whitesideObj, "D") # different slopes, common intercept
##
## See Dalgaard, pp. 172-182 for ANCOVA of (log10) hellung data
##
data(hellunglog)
hellunglogObj <- sla(hellunglog)
hellunglogObj
summary(hellunglogObj) # See Dalgaard, pp. 172-182 for ANCOVA of (log10) hellung data
par(mfrow = c(2,2))
plot(hellunglogObj, "A") # different intercepts and different slopes
plot(hellunglogObj, "B") # common intercept and common slope
plot(hellunglogObj, "C") # different intercepts, common slope
plot(hellunglogObj, "D") # different slopes, common intercept
##
## Simulate data for common slope, different intercepts 
## 
group <- c(rep('A', 50), rep('B', 50))
x <- rep(1:50, 2)
set.seed(50) #
y1 <- rnorm(50) + 4*.05*x[1:50]
set.seed(100)
y2 <- rnorm(50) + 7 + y1
y <- c(y1, y2)
esdf <- data.frame(group, x, y)
esdfObj <- sla(esdf)
esdfObj
summary(esdfObj)
par(mfrow = c(2,2))
plot(esdfObj, mod = 'A')
plot(esdfObj, mod = 'B')
plot(esdfObj, mod = 'C')
plot(esdfObj, mod = 'D')
##
## Simulate data for common intercept, different slopes
## 
group <- c(rep('A', 50), rep('B', 50))
x <- rep(1:50, 2)
set.seed(49) # 
y1 <- rnorm(50) + 1*.03*x[1:50]
set.seed(99) #
y2 <- rnorm(50) + 1*.25*x[51:100]
y <- c(y1, y2)
eidf <- data.frame(group, x, y)
eidfObj <- sla(eidf)
eidfObj
summary(eidfObj)
par(mfrow = c(2,2))
plot(eidfObj, mod = 'A')
plot(eidfObj, mod = 'B')
plot(eidfObj, mod = 'C')
plot(eidfObj, mod = 'D')

wgalvord/sla documentation built on May 4, 2019, 5:22 a.m.