diff --git a/README.Rmd b/README.Rmd index 1483ea5..af3d744 100644 --- a/README.Rmd +++ b/README.Rmd @@ -222,6 +222,8 @@ iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ heplot(iris.mod) ``` +### Contrasts + Contrasts or other linear hypotheses can be shown as well, and the ellipses look better if they are filled. We create contrasts to test the differences between `versacolor` and `virginca` and also between @@ -246,7 +248,9 @@ heplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=0.1) ``` -All pairwise HE plots are produced using the `pairs` method for MLM +### All pairwise HE plots + +All pairwise HE plots are produced using the `pairs()` method for MLM objects. ```{r, iris3, out.width="100%"} @@ -254,6 +258,20 @@ pairs(iris.mod, hypotheses=hyp, hyp.labels=FALSE, fill=TRUE, fill.alpha=0.1) ``` +### Covariance ellipses + +MANOVA relies on the assumption that within-group covariance matrices are all equal. +It is useful to visualize these in the space of some of the predictors. +`covEllipses()` provides this both for classical and robust estimates. +The figure below shows these for the three Iris species and the +pooled covariance matrix, which is the same as the **E** matrix used +in MANOVA tests. +```{r iris4, out.width="80%"} +covEllipses(iris[,1:4], iris$Species) +covEllipses(iris[,1:4], iris$Species, + fill=TRUE, method="mve", add=TRUE, labels="") +``` + ## References Anderson, E. (1928). The Problem of Species in the Northern Blue Flags, @@ -288,5 +306,5 @@ Linear Models in Psychological Research: An R Tutorial.](https://doi.org/10.20982/tqmp.13.1.p020) *The Quantitative Methods for Psychology*, **13**, 20-45. -Friendly, M. & Sigal, M. (2018): Visualizing Tests for Equality of -Covariance Matrices, _The American Statistician_, [DOI](https://doi.org/10.1080/00031305.2018.1497537) +Friendly, M. & Sigal, M. (2018): [Visualizing Tests for Equality of +Covariance Matrices](https://www.datavis.ca/papers/EqCov-TAS.pdf), _The American Statistician_, [DOI](https://doi.org/10.1080/00031305.2018.1497537) diff --git a/README.md b/README.md index e3f4e1f..4703f12 100644 --- a/README.md +++ b/README.md @@ -202,6 +202,8 @@ heplot(iris.mod) +### Contrasts + Contrasts or other linear hypotheses can be shown as well, and the ellipses look better if they are filled. We create contrasts to test the differences between `versacolor` and `virginca` and also between @@ -232,7 +234,9 @@ heplot(iris.mod, hypotheses=hyp, -All pairwise HE plots are produced using the `pairs` method for MLM +### All pairwise HE plots + +All pairwise HE plots are produced using the `pairs()` method for MLM objects. ``` r @@ -242,6 +246,23 @@ pairs(iris.mod, hypotheses=hyp, hyp.labels=FALSE, +### Covariance ellipses + +MANOVA relies on the assumption that within-group covariance matrices +are all equal. It is useful to visualize these in the space of some of +the predictors. `covEllipses()` provides this both for classical and +robust estimates. The figure below shows these for the three Iris +species and the pooled covariance matrix, which is the same as the **E** +matrix used in MANOVA tests. + +``` r +covEllipses(iris[,1:4], iris$Species) +covEllipses(iris[,1:4], iris$Species, + fill=TRUE, method="mve", add=TRUE, labels="") +``` + + + ## References Anderson, E. (1928). The Problem of Species in the Northern Blue Flags, @@ -275,6 +296,7 @@ Linear Models in Psychological Research: An R Tutorial.](https://doi.org/10.20982/tqmp.13.1.p020) *The Quantitative Methods for Psychology*, **13**, 20-45. -Friendly, M. & Sigal, M. (2018): Visualizing Tests for Equality of -Covariance Matrices, *The American Statistician*, +Friendly, M. & Sigal, M. (2018): [Visualizing Tests for Equality of +Covariance Matrices](https://www.datavis.ca/papers/EqCov-TAS.pdf), *The +American Statistician*, [DOI](https://doi.org/10.1080/00031305.2018.1497537) diff --git a/docs/index.html b/docs/index.html index 861d7ef..ec3dfd0 100644 --- a/docs/index.html +++ b/docs/index.html @@ -416,6 +416,9 @@

Examples Species, data=iris) heplot(iris.mod)

+
+

Contrasts +

Contrasts or other linear hypotheses can be shown as well, and the ellipses look better if they are filled. We create contrasts to test the differences between versacolor and virginca and also between setosa and the average of the other two. Each 1 df contrast plots as degenerate 1D ellipse– a line.

Because these contrasts are orthogonal, they add to the total 2 df effect of Species. Note how the first contrast, labeled V:V, distinguishes the means of versicolor from virginica; the second contrast, S:VV distinguishes setosa from the other two.

@@ -434,12 +437,27 @@ 

Examplesheplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=0.1)

-

All pairwise HE plots are produced using the pairs method for MLM objects.

+
+
+

All pairwise HE plots +

+

All pairwise HE plots are produced using the pairs() method for MLM objects.

 pairs(iris.mod, hypotheses=hyp, hyp.labels=FALSE,
       fill=TRUE, fill.alpha=0.1)

+
+

Covariance ellipses +

+

MANOVA relies on the assumption that within-group covariance matrices are all equal. It is useful to visualize these in the space of some of the predictors. covEllipses() provides this both for classical and robust estimates. The figure below shows these for the three Iris species and the pooled covariance matrix, which is the same as the E matrix used in MANOVA tests.

+
+covEllipses(iris[,1:4], iris$Species)
+covEllipses(iris[,1:4], iris$Species, 
+            fill=TRUE, method="mve", add=TRUE, labels="")
+

+
+

References

@@ -450,7 +468,7 @@

ReferencesHE plots for repeated measures designs. Journal of Statistical Software, 37, 1–37.

Friendly, M.; Monette, G. & Fox, J. (2013). Elliptical Insights: Understanding Statistical Methods Through Elliptical Geometry Statistical Science, 28, 1-39.

Friendly, M. & Sigal, M. (2017). Graphical Methods for Multivariate Linear Models in Psychological Research: An R Tutorial. The Quantitative Methods for Psychology, 13, 20-45.

-

Friendly, M. & Sigal, M. (2018): Visualizing Tests for Equality of Covariance Matrices, The American Statistician, DOI

+

Friendly, M. & Sigal, M. (2018): Visualizing Tests for Equality of Covariance Matrices, The American Statistician, DOI

diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 8de99af..371fb96 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -4,7 +4,7 @@ pkgdown_sha: ~ articles: HE_manova: HE_manova.html HE_mmra: HE_mmra.html -last_built: 2023-09-04T16:16Z +last_built: 2023-09-04T16:50Z urls: reference: https://friendly.github.io/heplots/reference article: https://friendly.github.io/heplots/articles diff --git a/docs/reference/covEllipses-1.png b/docs/reference/covEllipses-1.png index 2953059..a2aced6 100644 Binary files a/docs/reference/covEllipses-1.png and b/docs/reference/covEllipses-1.png differ diff --git a/docs/reference/cqplot-5.png b/docs/reference/cqplot-5.png index 7a7e532..c0c7ce2 100644 Binary files a/docs/reference/cqplot-5.png and b/docs/reference/cqplot-5.png differ diff --git a/docs/reference/ellipse3d.axes.html b/docs/reference/ellipse3d.axes.html index 6718767..c24ab80 100644 --- a/docs/reference/ellipse3d.axes.html +++ b/docs/reference/ellipse3d.axes.html @@ -495,8 +495,8 @@

Examples#> arrow3d, bbox3d plot3d(iris3, type="s", size=0.4, col=col, cex=2, box=FALSE, aspect="iso") plot3d( ellipse3d(cov, centre=mu, level=0.68), col="gray", alpha=0.2, add = TRUE) -
- +
+ axes <- ellipse3d.axes(cov, centre=mu, level=0.68, color="gray", lwd=2) diff --git a/docs/reference/figures/README-iris4-1.png b/docs/reference/figures/README-iris4-1.png new file mode 100644 index 0000000..de04fb5 Binary files /dev/null and b/docs/reference/figures/README-iris4-1.png differ diff --git a/docs/search.json b/docs/search.json index 9deab34..5ff498e 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -[{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"multivariate-analysis-of-variance-designs","dir":"Articles","previous_headings":"","what":"Multivariate Analysis of Variance Designs","title":"HE plot MANOVA Examples","text":"vignette provides worked examples analysis multivariate linear models (MLMs) MANOVA designs predictors factors, goal determine group means differ several response variables relation factors possible interactions. Graphical methods visualizing results using heplots candisc packages illustrated. emphasis using methods R, understanding help reveal aspects models might apparent graphical displays. attempt made describe theory MLMs statistical details behind plots reduced-rank canonical cousins. , see Fox, Friendly, & Monette (2009); Friendly (2007); Friendly (2006).","code":""},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"plastic-film-data","dir":"Articles","previous_headings":"","what":"Plastic film data","title":"HE plot MANOVA Examples","text":"experiment conducted determine optimum conditions extruding plastic film. Three responses, tear resistance, film gloss film opacity measured relation two factors, rate extrusion amount additive, set two values, High Low. data set comes Johnson & Wichern (1992). design thus \\(2\\times 2\\) MANOVA, \\(n=5\\) per cell 3 numeric response variables. effects factors responses likely correlated, useful consider multivariate analysis, rather 3 separate univariate ones. example illustrates: 2D 3D plots, difference “effect” scaling “evidence” (significance) scaling, visualizing composite linear hypotheses. begin overall MANOVA two-way MANOVA model. analyses, use car::Anova() significance tests rather stats::anova(), provides -called “Type ” (sequential) tests terms linear models. example, effect 1 df, multivariate statistics (Roy’s maximum root test, Pillai Hotelling trace criteria, Wilks’ Lambda) equivalent, give \\(F\\) statistics \\(p\\)-values. specify test.statistic=\"Roy\" emphasize Roy’s test natural visual interpretation plots. three responses jointly, main effects rate additive significant, interaction . approaches testing effects multivariate linear models (MLMs), significant multivariate tests often followed univariate tests responses separately determine responses contribute significant effect. R, univariate analyses conveniently performed using update() method mlm object plastic.mod, re-fits model single outcome variable. results show significant main effects tear, significant main effect rate gloss, significant effects opacity, don’t shed light nature effects. Traditional univariate plots means variable separately useful, don’t allow visualization relations among response variables. can visualize effects pairs variables plot, showing “size” orientation hypothesis variation (\\(\\mathbf{H}\\)) relation error variation (\\(\\mathbf{E}\\)) ellipsoids. , , model terms 1 degree freedom, \\(\\mathbf{H}\\) ellipsoids degenerate line. plots, \\(\\mathbf{H}\\) ellipses can scaled relative \\(\\mathbf{E}\\) show significance effects (size=\"evidence\"), effect size (size=\"effect\"). former case, model term significant (using Roy’s maximum root test) iff \\(\\mathbf{H}\\) projects anywhere outside \\(\\mathbf{E}\\) ellipse. plot overlays scaling, using thicker lines effect scaling. Figure 1.1: plot effects tear gloss according factors rate, additive interaction, rate:additive. thicker lines show effect size scaling; thinner lines show significance scaling. interpretation can easily read plot, least two response variables (tear gloss) shown bivariate view. effect rate extrusion highly significant: high rate shows greater tear compared low rate. effect amount additive significant view, high level additive greater tear gloss. effect scaling, \\(\\mathbf{H}\\) \\(\\mathbf{E}\\) sums squares products matrices divided error df, giving multivariate analogs univariate measures effect size, e.g., \\((\\bar{y}_1-\\bar{y}_2) / s\\). significance scaling, \\(\\mathbf{H}\\) ellipse divided \\(\\lambda_\\alpha\\), critical value Roy’s largest root statistic. scaling property \\(\\mathbf{H}\\) ellipse protrude somewhere outside \\(\\mathbf{E}\\) ellipse iff multivariate test significant level \\(\\alpha\\). Figure 1.2 shows scalings, using thinner line significance scaling. Note (degenerate) ellipse additive significant, protrude outside \\(\\mathbf{E}\\) ellipse view. guaranteed protrude somewhere 3D space responses. design, means levels interaction terms shown plot, general can lead messy displays. can add term rate:additive follows: Figure 1.2: plot effects tear gloss according factors rate, additive interaction, rate:additive. Annotations added means combinations rate additive. factor means plot (Figure 1.2 simple interpretation: high rate level yields greater tear resistance lower gloss low level. high additive amount produces greater tear resistance greater gloss. rate:additive interaction significant overall, though approaches significance gloss. cell means combinations rate additive shown figure suggest explanation, tutorial purposes: low level rate, little difference gloss levels additive. high level rate, larger difference gloss. \\(\\mathbf{H}\\) ellipse interaction rate:additive therefore “points” direction gloss indicating variable contributes interaction multivariate tests. MANOVA models, interest test sub-hypotheses given main effect interaction, conversely test composite hypotheses pool together certain effects test jointly. tests (, indeed, tests terms given model) carried tests general linear hypotheses MLM. example, might useful test two composite hypotheses: one corresponding main effects jointly, another corresponding difference among means four groups (equivalent joint test overall model). tests specified terms subsets linear combinations model parameters. Thus, example, joint test main effects tests parameters rateHigh additiveHigh. Correspondingly, can display tests plot specifying tests hypothesis argument heplot(), shown Figure 1.3. Figure 1.3: plot tear gloss, supplemented ellipses representing joint tests main effects group differences Finally, 3D plot can produced heplot3d(), giving Figure 1.4. plot rotated interactively view shows main effects protruding outside error ellipsoid. Figure 1.4: 3D plot plastic MLM","code":"data(Plastic, package=\"heplots\") str(Plastic) #> 'data.frame': 20 obs. of 5 variables: #> $ tear : num 6.5 6.2 5.8 6.5 6.5 6.9 7.2 6.9 6.1 6.3 ... #> $ gloss : num 9.5 9.9 9.6 9.6 9.2 9.1 10 9.9 9.5 9.4 ... #> $ opacity : num 4.4 6.4 3 4.1 0.8 5.7 2 3.9 1.9 5.7 ... #> $ rate : Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 1 1 1 1 1 ... #> $ additive: Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 2 2 2 2 2 ... plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) Anova(plastic.mod, test.statistic=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> rate 1 1.619 7.55 3 14 0.003 ** #> additive 1 0.912 4.26 3 14 0.025 * #> rate:additive 1 0.287 1.34 3 14 0.302 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Anova(update(plastic.mod, tear ~ .)) #> Anova Table (Type II tests) #> #> Response: tear #> Sum Sq Df F value Pr(>F) #> rate 1.74 1 15.8 0.0011 ** #> additive 0.76 1 6.9 0.0183 * #> rate:additive 0.00 1 0.0 0.9471 #> Residuals 1.76 16 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Anova(update(plastic.mod, gloss ~ .)) #> Anova Table (Type II tests) #> #> Response: gloss #> Sum Sq Df F value Pr(>F) #> rate 1.301 1 7.92 0.012 * #> additive 0.612 1 3.73 0.071 . #> rate:additive 0.544 1 3.32 0.087 . #> Residuals 2.628 16 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Anova(update(plastic.mod, opacity ~ .)) #> Anova Table (Type II tests) #> #> Response: opacity #> Sum Sq Df F value Pr(>F) #> rate 0.4 1 0.10 0.75 #> additive 4.9 1 1.21 0.29 #> rate:additive 4.0 1 0.98 0.34 #> Residuals 64.9 16 ## Compare evidence and effect scaling colors = c(\"red\", \"darkblue\", \"darkgreen\", \"brown\") heplot(plastic.mod, size=\"evidence\", col=colors, cex=1.25, fill=TRUE, fill.alpha=0.1) heplot(plastic.mod, size=\"effect\", add=TRUE, lwd=5, term.labels=FALSE, col=colors) # Compare evidence and effect scaling colors = c(\"red\", \"darkblue\", \"darkgreen\", \"brown\") heplot(plastic.mod, size=\"evidence\", col=colors, cex=1.25, fill=TRUE, fill.alpha=0.05) heplot(plastic.mod, size=\"effect\", add=TRUE, lwd=5, term.labels=FALSE, col=colors) ## add interaction means intMeans <- termMeans(plastic.mod, 'rate:additive', abbrev.levels=2) points(intMeans[,1], intMeans[,2], pch=18, cex=1.2, col=\"brown\") text(intMeans[,1], intMeans[,2], rownames(intMeans), adj=c(0.5, 1), col=\"brown\") lines(intMeans[c(1,3),1], intMeans[c(1,3),2], col=\"brown\") lines(intMeans[c(2,4),1], intMeans[c(2,4),2], col=\"brown\") plastic.mod #> #> Call: #> lm(formula = cbind(tear, gloss, opacity) ~ rate * additive, data = Plastic) #> #> Coefficients: #> tear gloss opacity #> (Intercept) 6.30 9.56 3.74 #> rateHigh 0.58 -0.84 -0.60 #> additiveHigh 0.38 0.02 0.10 #> rateHigh:additiveHigh 0.02 0.66 1.78 print(linearHypothesis(plastic.mod, c(\"rateHigh\", \"additiveHigh\"), title=\"Main effects\"), SSP=FALSE) #> #> Multivariate Tests: Main effects #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.71161 2.7616 6 30 0.029394 * #> Wilks 2 0.37410 2.9632 6 28 0.022839 * #> Hotelling-Lawley 2 1.44400 3.1287 6 26 0.019176 * #> Roy 2 1.26253 6.3127 3 15 0.005542 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(plastic.mod, c(\"rateHigh\", \"additiveHigh\", \"rateHigh:additiveHigh\"), title=\"Groups\"), SSP=FALSE) #> #> Multivariate Tests: Groups #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 3 1.14560 3.2948 9 48.000 0.003350 ** #> Wilks 3 0.17802 3.9252 9 34.223 0.001663 ** #> Hotelling-Lawley 3 2.81752 3.9654 9 38.000 0.001245 ** #> Roy 3 1.86960 9.9712 3 16.000 0.000603 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(plastic.mod, hypotheses=list(\"Group\" = c(\"rateHigh\", \"additiveHigh\", \"rateHigh:additiveHigh \")), col=c(colors, \"purple\"), fill = TRUE, fill.alpha = 0.1, lwd=c(2, 3, 3, 3, 2), cex=1.25) heplot(plastic.mod, hypotheses=list(\"Main effects\" = c(\"rateHigh\", \"additiveHigh\")), add=TRUE, col=c(colors, \"darkgreen\"), cex=1.25) colors = c(\"pink\", \"darkblue\", \"darkgreen\", \"brown\") heplot3d(plastic.mod, col=colors)"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"effects-of-physical-attractiveness-on-mock-jury-decisions","dir":"Articles","previous_headings":"","what":"Effects of physical attractiveness on mock jury decisions","title":"HE plot MANOVA Examples","text":"social psychology study influences jury decisions Plaster (1989), male participants (prison inmates) shown picture one three young women. Pilot work indicated one woman beautiful, another average physical attractiveness, third unattractive. Participants rated woman saw twelve attributes scales 1–9. measures used check manipulation “attractiveness” photo. participants told person photo committed Crime, asked rate seriousness crime recommend prison sentence, Years. data contained data frame MockJury.1 Sample sizes roughly balanced independent variables three conditions attractiveness photo, combinations Crime: main questions interest : attractiveness “defendant” influence sentence perceived seriousness crime? attractiveness interact nature crime?","code":"data(MockJury, package = \"heplots\") str(MockJury) #> 'data.frame': 114 obs. of 17 variables: #> $ Attr : Factor w/ 3 levels \"Beautiful\",\"Average\",..: 1 1 1 1 1 1 1 1 1 1 ... #> $ Crime : Factor w/ 2 levels \"Burglary\",\"Swindle\": 1 1 1 1 1 1 1 1 1 1 ... #> $ Years : int 10 3 5 1 7 7 3 7 2 3 ... #> $ Serious : int 8 8 5 3 9 9 4 4 5 2 ... #> $ exciting : int 6 9 3 3 1 1 5 4 4 6 ... #> $ calm : int 9 5 4 6 1 5 6 9 8 8 ... #> $ independent : int 9 9 6 9 5 7 7 2 8 7 ... #> $ sincere : int 8 3 3 8 1 5 6 9 7 5 ... #> $ warm : int 5 5 6 8 8 8 7 6 1 7 ... #> $ phyattr : int 9 9 7 9 8 8 8 5 9 8 ... #> $ sociable : int 9 9 4 9 9 9 7 2 1 9 ... #> $ kind : int 9 4 2 9 4 5 5 9 5 7 ... #> $ intelligent : int 6 9 4 9 7 8 7 9 9 9 ... #> $ strong : int 9 5 5 9 9 9 5 2 7 5 ... #> $ sophisticated: int 9 5 4 9 9 9 6 2 7 6 ... #> $ happy : int 5 5 5 9 8 9 5 2 6 8 ... #> $ ownPA : int 9 7 5 9 7 9 6 5 3 6 ... table(MockJury$Attr) #> #> Beautiful Average Unattractive #> 39 38 37 table(MockJury$Attr, MockJury$Crime) #> #> Burglary Swindle #> Beautiful 21 18 #> Average 18 20 #> Unattractive 20 17"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"manipulation-check","dir":"Articles","previous_headings":"2 Effects of physical attractiveness on mock jury decisions","what":"Manipulation check","title":"HE plot MANOVA Examples","text":"first, check manipulation attractiveness, try assess ratings photos relation presumed categories independent variable Attr. questions : ratings photos physical attractiveness (phyattr) confirm original classification? ratings differentiate photos? keep things simple, consider ratings one-way MANOVA. Note Beautiful baseline category Attr, intercept term gives means level. see means significantly different four variables collectively, joint multivariate test. traditional analysis might follow univariate ANOVAs measure separately. aid interpretation MANOVA results can examine test Attr model plot pairs variables, e.g., phyattr happy (Figure 2.1). means plot show Beautiful rated higher physical attractiveness two photos, Unattractive rated less happy two. Comparing sizes ellipses, differences among group means physical attractiveness contributes significance ratings happy. Figure 2.1: plot ratings phyattr happy according classification photos Attr function pairs.mlm() produces pairwise plots. plot (Figure 2.2) shows means happy independent highly correlated, means phyattr sophisticated. pairwise plots, means form triangle rather line, suggesting attributes indeed measuring different aspects photos. Figure 2.2: plots pairs ratings according classification photos Attr 3 groups 4 variables, \\(\\mathbf{H}\\) ellipsoid \\(s=\\min(df_h, p)=2\\) dimensions. candisc() carries canonical discriminant analysis MLM returns object can used show plot space canonical dimensions. plotted Figure 2.3. heplot.candisc() plot method candisc objects Figure 2.3: Canonical discriminant plot MockJury data. Variable vectors show correlations predictors canonical dimensions. plot, variable vectors determined canonical structure coefficients represent correlations predictor variables canonical variables. Thus, angle near zero axis represents correlation close 1.0; angle near 90\\(^o\\) represent correlation close 0.0. (axes must scaled equal unit lengths angles interpretable.) lengths arrows scaled roughly fill plot, relative length represents overall strength relation variable canonical dimensions. Points represent means canonical scores two dimensions three groups photos. can see 91% variation among group means accounted first dimension, nearly completely aligned phyattr. second dimension, accounting remaining 9% determined nearly entirely ratings happy independent. display gives relatively simple account results MANOVA relations ratings discrimination among photos.","code":"(jury.mod1 <- lm( cbind(phyattr, happy, independent, sophisticated) ~ Attr, data=MockJury)) #> #> Call: #> lm(formula = cbind(phyattr, happy, independent, sophisticated) ~ #> Attr, data = MockJury) #> #> Coefficients: #> phyattr happy independent sophisticated #> (Intercept) 8.282 5.359 6.410 6.077 #> AttrAverage -4.808 0.430 0.537 -1.340 #> AttrUnattractive -5.390 -1.359 -1.410 -1.753 Anova(jury.mod1, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 1.77 48.2 4 109 <2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod1, main=\"HE plot for manipulation check\", fill = TRUE, fill.alpha = 0.1) pairs(jury.mod1) jury.can <- candisc(jury.mod1) jury.can #> #> Canonical Discriminant Analysis for Attr: #> #> CanRsq Eigenvalue Difference Percent Cumulative #> 1 0.639 1.767 1.6 91.33 91.3 #> 2 0.144 0.168 1.6 8.67 100.0 #> #> Test of H0: The canonical correlations in the #> current row and all that follow are zero #> #> LR test stat approx F numDF denDF Pr(> F) #> 1 0.309 21.53 8 216 < 2e-16 *** #> 2 0.856 6.09 3 109 0.00072 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.can, rev.axes = TRUE, fill = c(TRUE,FALSE), prefix=\"Canonical dimension\", main=\"Canonical HE plot\") #> Vector scale factor set to 8.8177"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"main-analysis","dir":"Articles","previous_headings":"2 Effects of physical attractiveness on mock jury decisions","what":"Main analysis","title":"HE plot MANOVA Examples","text":"Proceeding main questions interest, carry two-way MANOVA responses Years Serious relation independent variables Attr Crime. see nearly significant interaction Attr Crime strong effect Attr. Figure 2.4: plot two-way MANOVA Years Serious plot shows nearly significant interaction Attr:Crime mainly terms differences among groups response Years sentence, little contribution Serious. explore interaction bit detail . main effect Attr also dominated differences among groups Years. assume Years sentence main outcome interest, also makes sense carry step-test variable , controlling rating seriousness (Serious) crime. model jury.mod3 equivalent ANCOVA Years. Thus, even adjusting Serious rating, still significant main effect Attr photo, also hint interaction Attr Crime. coefficient Serious indicates participants awarded 0.84 additional years sentence 1 unit step scale seriousness crime. particularly useful method visualizing fitted effects univariate response models provided effects. default allEffects() calculates predicted values high-order terms given model, plot method produces plots values term. statements produce Figure 2.5. Figure 2.5: Effect plots Serious Attr * Crime interaction ANCOVA model jury.mod3. effect plot Serious shows expected linear relation variable Years. greater interest nature possible interaction Attr Crime Years sentence, controlling Serious. effect plot shows crime Swindle, much greater Years sentence awarded Unattractive defendants.","code":"# influence of Attr of photo and nature of crime on Serious and Years jury.mod2 <- lm( cbind(Serious, Years) ~ Attr * Crime, data=MockJury) Anova(jury.mod2, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 0.0756 4.08 2 108 0.020 * #> Crime 1 0.0047 0.25 2 107 0.778 #> Attr:Crime 2 0.0501 2.71 2 108 0.071 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod2) # stepdown test (ANCOVA), controlling for Serious jury.mod3 <- lm( Years ~ Serious + Attr * Crime, data=MockJury) t(coef(jury.mod3)) #> (Intercept) Serious AttrAverage AttrUnattractive CrimeSwindle #> [1,] 0.011612 0.83711 0.39586 0.60285 -0.26302 #> AttrAverage:CrimeSwindle AttrUnattractive:CrimeSwindle #> [1,] -0.53701 2.5123 Anova(jury.mod3) #> Anova Table (Type II tests) #> #> Response: Years #> Sum Sq Df F value Pr(>F) #> Serious 379 1 41.14 3.9e-09 *** #> Attr 74 2 4.02 0.021 * #> Crime 4 1 0.43 0.516 #> Attr:Crime 49 2 2.67 0.074 . #> Residuals 987 107 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 library(effects) jury.eff <- allEffects(jury.mod3) plot(jury.eff, ask=FALSE)"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"egyptian-skulls-from-five-epochs","dir":"Articles","previous_headings":"","what":"Egyptian skulls from five epochs","title":"HE plot MANOVA Examples","text":"example examines physical measurements size shape made 150 Egyptian skulls five epochs ranging 4000 BC 150 AD. measures : maximal breadth (mb), basibregmatic height (bh), basialiveolar length (bl), nasal height (nh) skull. See Figure 3.1 diagram. question interest whether measurements change time. Systematic changes time interest indicate interbreeding immigrant populations. Figure 3.1: Diagram skull measurements. Maximal breadth basibregmatic height basic measures “size” skull. Basialveolar length nasal height important anthropometric measures “shape”. Note epoch ordered factor, default contrasts orthogonal polynomials. assumes epoch values equally spaced, . However, examining linear quadratic trends useful first approximation. ease labeling various outputs, useful trim epoch values assign meaningful variable labels. start simple displays means epoch. numbers, means don’t seem vary much. pairs plot, Figure 3.2, joining points epoch somewhat revealing bivariate relations among means. Figure 3.2: Pairs plot means Skulls data, epoch. Perhaps better visualizing trends time set boxplots, joining means epoch. Using bwplot() lattice package requires reshaping data wide long format. following code produces Figure 3.3. Figure 3.3: Boxplots Skulls data, epoch, variable. trend lines aren’t linear, neither random, something systematic going ! Now, fit MANOVA model, test effect epoch car::Anova(). see multivariate means differ substantially. Perhaps greater interest focused tests trends time. based tests coefficients model sk.mod jointly equal zero, subsets (polynomial) contrasts epoch. use linearHypothesis() multivariate test epoch.L linear effect. linear trend highly significant. obvious Figure 3.2 maximal breadth nasal increasing time, two measurements negative slopes. linearHypothesis() can also used test composite hypotheses. test non-linear coefficients jointly. result indicates , collectively, non-linear terms significantly different zero. , plots can show patterns tests multivariate hypotheses. four response variables, easiest look pairwise plots pairs.mlm() function. statement produces Figure 3.4. plot, show hypothesis ellipsoids overall effect epoch, well tests just shown linear trend component epoch.L well joint test non-linear terms. Figure 3.4: Pairs plot Skulls data, showing multivariate tests epoch, well tests linear nonlinear trends. plots interesting geometric interpretation: \\(\\mathbf{H}\\) ellipses overall effect epoch representations additive decomposition effect \\(\\mathbf{H}\\) ellipses linear nonlinear linear hypothesis tests according \\[\\mathbf{H}_{\\textrm{epoch}} = \\mathbf{H}_{\\textrm{linear}} + \\mathbf{H}_{\\textrm{nonlinear}}\\] linear term rank 1 (plots line), nonlinear term rank 3. panel, can seen large direction \\(\\mathbf{H}_{\\textrm{epoch}}\\) leading significance effect corresponds essentially linear contrast. \\(\\mathbf{H}_{\\textrm{nonlinear}}\\) orthogonal complement \\(\\mathbf{H}_{\\textrm{linear}}\\) space \\(\\mathbf{H}_{\\textrm{epoch}}\\), nowhere protrude beyond boundary \\(\\mathbf{E}\\) ellipsoid.","code":"data(Skulls) str(Skulls) #> 'data.frame': 150 obs. of 5 variables: #> $ epoch: Ord.factor w/ 5 levels \"c4000BC\"<\"c3300BC\"<..: 1 1 1 1 1 1 1 1 1 1 ... #> $ mb : num 131 125 131 119 136 138 139 125 131 134 ... #> $ bh : num 138 131 132 132 143 137 130 136 134 134 ... #> $ bl : num 89 92 99 96 100 89 108 93 102 99 ... #> $ nh : num 49 48 50 44 54 56 48 48 51 51 ... table(Skulls$epoch) #> #> c4000BC c3300BC c1850BC c200BC cAD150 #> 30 30 30 30 30 # make shorter labels for epochs Skulls$epoch <- factor(Skulls$epoch, labels=sub(\"c\",\"\",levels(Skulls$epoch))) # assign better variable labels vlab <- c(\"maxBreadth\", \"basibHeight\", \"basialLength\", \"nasalHeight\") means <- aggregate(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls, FUN=mean)[,-1] rownames(means) <- levels(Skulls$epoch) means #> mb bh bl nh #> 4000BC 131.37 133.60 99.167 50.533 #> 3300BC 132.37 132.70 99.067 50.233 #> 1850BC 134.47 133.80 96.033 50.567 #> 200BC 135.50 132.30 94.533 51.967 #> AD150 136.17 130.33 93.500 51.367 pairs(means, vlab, panel = function(x, y) { text(x, y, levels(Skulls$epoch)) lines(x,y) }) library(lattice) library(reshape2) sklong <- melt(Skulls, id=\"epoch\") bwplot(value ~ epoch | variable, data=sklong, scales=\"free\", ylab=\"Variable value\", xlab=\"Epoch\", strip=strip.custom(factor.levels=paste(vlab, \" (\", levels(sklong$variable), \")\", sep=\"\")), panel = function(x,y, ...) { panel.bwplot(x, y, ...) panel.linejoin(x,y, col=\"red\", ...) }) # fit manova model sk.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) Anova(sk.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> epoch 4 0.353 3.51 16 580 4.7e-06 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 coef(sk.mod) #> mb bh bl nh #> (Intercept) 133.97333 132.54667 96.460000 50.93333 #> epoch.L 4.02663 -2.19251 -5.017481 1.07517 #> epoch.Q -0.46325 -1.26504 -0.089087 0.12472 #> epoch.C -0.46380 -0.78003 1.075174 -0.83273 #> epoch^4 0.34263 0.80479 -0.661360 -0.41833 coef(sk.mod)[\"epoch.L\",] #> mb bh bl nh #> 4.0266 -2.1925 -5.0175 1.0752 print(linearHypothesis(sk.mod, \"epoch.L\"), SSP=FALSE) # linear component #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.29138 14.597 4 142 5.195e-10 *** #> Wilks 1 0.70862 14.597 4 142 5.195e-10 *** #> Hotelling-Lawley 1 0.41119 14.597 4 142 5.195e-10 *** #> Roy 1 0.41119 14.597 4 142 5.195e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(sk.mod, c(\"epoch.Q\", \"epoch.C\", \"epoch^4\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 3 0.06819 0.83726 12 432.00 0.6119 #> Wilks 3 0.93296 0.83263 12 375.99 0.6167 #> Hotelling-Lawley 3 0.07063 0.82791 12 422.00 0.6216 #> Roy 3 0.04519 1.62676 4 144.00 0.1707 pairs(sk.mod, variables=c(1,4,2,3), hypotheses=list(Lin=\"epoch.L\", NonLin=c(\"epoch.Q\", \"epoch.C\", \"epoch^4\")), var.labels=vlab[c(1,4,2,3)])"},{"path":[]},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"multivariate-multiple-regression-designs","dir":"Articles","previous_headings":"","what":"Multivariate Multiple Regression Designs","title":"HE plot MMRA Examples","text":"ideas behind plots extend naturally multivariate multiple regression (MMRA) multivariate analysis covariance (MANCOVA). MMRA designs, \\(\\mathbf{X}\\) matrix contains quantitative predictors, MANCOVA designs, contains mixture factors quantitative predictors (covariates), typically just one “group” factor. MANCOVA case, often subtle difference emphasis: true MANCOVA analyses focus differences among groups defined factors, adjusting (controlling ) quantitative covariates. Analyses concerned homogeneity regression focus quantitative predictors attempt test whether regression relations groups defined factors.","code":""},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"rohwer-data-aptitude-and-achievement","dir":"Articles","previous_headings":"","what":"Rohwer data: Aptitude and achievement","title":"HE plot MMRA Examples","text":"illustrate homogeneity regression flavor, use data study Rohwer (given Timm (1975), Ex. 4.3, 4.7, 4.23) kindergarten children, designed determine well set paired-associate (PA) tasks predicted performance measures achievement: Peabody Picture Vocabulary test (PPVT), student achievement test (SAT), Raven Progressive matrices test (Raven). PA tasks considered measures learning aptitude varied stimuli presented, called named (n), still (s), named still (ns), named action (na), sentence still (ss). Two groups tested: group \\(n=37\\) children low socioeconomic status (SES) school, group \\(n=32\\) high SES children upper-class, white residential school. data data frame Rohwer heplots package:","code":"data(Rohwer) Rohwer |> dplyr::sample_n(6) #> group SES SAT PPVT Raven n s ns na ss #> 31 1 Lo 9 63 11 2 12 5 25 14 #> 7 1 Lo 6 71 21 0 1 20 23 18 #> 18 1 Lo 45 54 10 0 6 6 14 16 #> 17 1 Lo 19 66 13 7 12 21 35 27 #> 50 2 Hi 4 87 14 1 4 14 25 19 #> 59 2 Hi 36 89 15 1 6 15 23 28"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"preliminary-plots","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"Preliminary plots","title":"HE plot MMRA Examples","text":"fitting models, usually useful data exploration graphing. multivariate multiple regression data, among helpful plots scatterplots response variable, Y, predictor, X, can get better sense relationships adding linear regression lines, loess smooths enhancements. scatterplot matrix, using graphics::pairs() GGally::ggpairs() easy . However, 3 response variables, 4 predictors group factor (SES), can overwhelming. alternative compose rectangular matrix plots Y variables Xs. turned easy might seem, none pairs() methods allow possibility. trick reshape data wide long format use facets ggplot2 compose pairwise scatterplots desired rectangular matrix format.1 , can use ggplot2 make produce pairwise plots combination x y variables. Using color=SES aesthetic results separate regression line two SES groups produced geom_smooth(). Figure 1.1: Plot matrix response variables (SAT, PPVT Raven) three predictors (n, s, ns). lines show separate linear regressions SES group. plots form framework understanding model fits statistical tests turn now.","code":"library(tidyr) library(dplyr) library(ggplot2) yvars <- c(\"SAT\", \"PPVT\", \"Raven\" ) # outcome variables xvars <- c(\"n\", \"s\", \"ns\", \"na\", \"ss\") # predictors xvars <- c(\"n\", \"s\", \"ns\") # make a smaller example Rohwer_long <- Rohwer %>% dplyr::select(-group, -na, -ss) |> tidyr::pivot_longer(cols = all_of(xvars), names_to = \"xvar\", values_to = \"x\") |> tidyr::pivot_longer(cols = all_of(yvars), names_to = \"yvar\", values_to = \"y\") |> dplyr::mutate(xvar = factor(xvar, levels = xvars), yvar = factor(yvar, levels = yvars)) Rohwer_long #> # A tibble: 621 x 5 #> SES xvar x yvar y #> #> 1 Lo n 1 SAT 49 #> 2 Lo n 1 PPVT 48 #> 3 Lo n 1 Raven 8 #> 4 Lo s 2 SAT 49 #> 5 Lo s 2 PPVT 48 #> 6 Lo s 2 Raven 8 #> 7 Lo ns 6 SAT 49 #> 8 Lo ns 6 PPVT 48 #> 9 Lo ns 6 Raven 8 #> 10 Lo n 5 SAT 47 #> # i 611 more rows ggplot(Rohwer_long, aes(x, y, color = SES, shape = SES)) + geom_jitter(size=1.5) + geom_smooth(method = \"lm\", se = FALSE, formula = y ~ x, size=1.5) + facet_grid(yvar ~ xvar, # plot matrix of Y by X scales = \"free\") + theme_bw(base_size = 16) + theme(legend.position = \"bottom\")"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"separate-models","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"Separate models","title":"HE plot MMRA Examples","text":"one approach, might tempted fit separate regression models High Low SES groups. approach generally recommended lacks power (smaller sample sizes group combined analysis) allow hypotheses equality slopes intercepts tested directly. fits separate slopes intercepts two groups, difficult compare coefficients numerically. function heplots::coefplot() makes bit easier, plotting bivariate confidence ellipses coefficients multivariate linear model. problem, three response variables, 95% confidence regions 3D ellipsoids, plot 2D. 3D versions property given predictor significant multivariate test ellipsoid excludes point (0, 0, 0). Figure 1.2: Coefficient plots separate models High Low SES groups Rohwer data. ellipses 95% confidence regions pairs regression coefficients (SAT, PPVT) predictor model. Alternatively, can visualize results multivariate tests predictors plots. make use fact several plots can overlaid using option add=TRUE shown Figure 1.3. Figure 1.3: plot SAT PPVT, showing effects PA predictors High Low SES groups separately can readily see difference means two SES groups (Hi greater scores variables) also appears slopes predictor ellipses shallower High Low group, indicating greater relation SAT score.","code":"rohwer.ses1 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Hi\") Anova(rohwer.ses1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.202 2.02 3 24 0.1376 #> s 1 0.310 3.59 3 24 0.0284 * #> ns 1 0.358 4.46 3 24 0.0126 * #> na 1 0.465 6.96 3 24 0.0016 ** #> ss 1 0.089 0.78 3 24 0.5173 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 rohwer.ses2 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Lo\") Anova(rohwer.ses2) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.0384 0.39 3 29 0.764 #> s 1 0.1118 1.22 3 29 0.321 #> ns 1 0.2252 2.81 3 29 0.057 . #> na 1 0.2675 3.53 3 29 0.027 * #> ss 1 0.1390 1.56 3 29 0.220 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 coef(rohwer.ses1) #> SAT PPVT Raven #> (Intercept) -28.4675 39.69709 13.24384 #> n 3.2571 0.06728 0.05935 #> s 2.9966 0.36998 0.49244 #> ns -5.8591 -0.37438 -0.16402 #> na 5.6662 1.52301 0.11898 #> ss -0.6227 0.41016 -0.12116 coef(rohwer.ses2) #> SAT PPVT Raven #> (Intercept) 4.15106 33.00577 11.17338 #> n -0.60887 -0.08057 0.21100 #> s -0.05016 -0.72105 0.06457 #> ns -1.73240 -0.29830 0.21358 #> na 0.49456 1.47042 -0.03732 #> ss 2.24772 0.32396 -0.05214 coefplot(rohwer.ses1, fill=TRUE, cex.label=1.5, cex.lab=1.5) text(-10, 3, \"High SES group\", pos=4, cex=1.4) coefplot(rohwer.ses2, fill=TRUE, cex.label=1.5, cex.lab=1.5) text(-4.7, 2.5, \"Low SES group\", pos=4, cex=1.4) heplot(rohwer.ses1, ylim=c(40,110), # allow more room for 2nd plot col=c(\"red\", \"black\"), fill = TRUE, fill.alpha = 0.1, lwd=2, cex=1.2) heplot(rohwer.ses2, add=TRUE, col=c(\"brown\", \"black\"), grand.mean=TRUE, error.ellipse=TRUE, # not shown by default when add=TRUE fill = TRUE, fill.alpha = 0.1, lwd=2, cex=1.2) # label the groups at their centroid means <- aggregate(cbind(SAT,PPVT)~SES, data=Rohwer, mean) text(means[,2], means[,3], labels=means[,1], pos=3, cex=2, col=\"black\")"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"mancova-model","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"MANCOVA model","title":"HE plot MMRA Examples","text":"Alternatively (optimistically), can fit MANCOVA model allows different means two SES groups responses, constrains slopes PA covariates equal. Note , although multivariate tests two covariates (ns na) highly significant, univariate multiple regression tests separate responses [summary(rohwer.mod)] relatively weak. can also test global 5 df hypothesis, \\(\\mathbf{B}=\\mathbf{0}\\), covariates null effects responses linear hypothesis. First, extract names PA tests predictors model. car::linearHypothesis() takes vector names coefficients tested simultaneously. 2D views additive MANCOVA model rohwer.mod overall test covariates produced follows, giving plots Figure 1.4. Figure 1.4: plot SAT PPVT (left) SAT Raven (right) using MANCOVA model. ellipses labeled ‘Regr’ show test overall model, including predictors. positive orientation Regr ellipses shows predicted values three responses positively correlated (SAT PPVT). well, High SES group higher responses Low SES group. Alternatively, pairwise plots among responses drawn using pairs.mlm() function, 3D plot, using heplot3d() shown Figure 1.5. Figure 1.5: 3D plot MANCOVA model fit Rohwer data.","code":"# MANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.379 12.18 3 60 2.5e-06 *** #> n 1 0.040 0.84 3 60 0.4773 #> s 1 0.093 2.04 3 60 0.1173 #> ns 1 0.193 4.78 3 60 0.0047 ** #> na 1 0.231 6.02 3 60 0.0012 ** #> ss 1 0.050 1.05 3 60 0.3770 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 covariates <- c(\"n\", \"s\", \"ns\", \"na\", \"ss\") # or: covariates <- rownames(coef(rohwer.mod))[-(1:2)] Regr <- linearHypothesis(rohwer.mod, covariates) print(Regr, digits=4, SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 5 0.6658 3.537 15 186 2.31e-05 *** #> Wilks 5 0.4418 3.812 15 166 8.28e-06 *** #> Hotelling-Lawley 5 1.0309 4.032 15 176 2.79e-06 *** #> Roy 5 0.7574 9.392 5 62 1.06e-06 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 colors <- c(\"red\", \"blue\", rep(\"black\",5), \"#969696\") heplot(rohwer.mod, col=colors, variables=c(1,2), hypotheses=list(\"Regr\" = covariates), fill = TRUE, fill.alpha = 0.1, cex=1.5, lwd=c(2, rep(3,5), 4), main=\"(SAT, PPVT) in Rohwer MANCOVA model\") heplot(rohwer.mod, col=colors, variables=c(1,3), hypotheses=list(\"Regr\" = covariates), fill = TRUE, fill.alpha = 0.1, cex=1.5, lwd=c(2, rep(3,5), 4), main=\"(SAT, Raven) in Rohwer MANCOVA model\") pairs(rohwer.mod, col=colors, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), cex=1.3, lwd=c(2, rep(3,5), 4)) colors <- c(\"pink\", \"blue\", rep(\"black\",5), \"#969696\") heplot3d(rohwer.mod, col=colors, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")))"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"testing-homogeneity-of-regression","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"Testing homogeneity of regression","title":"HE plot MMRA Examples","text":"MANCOVA model, rohwer.mod, relatively simple interpretations (large effect SES, ns na major predictors) test relies assumption homogeneity slopes predictors. can test assumption follows, adding interactions SES covariates: appears weak evidence unequal slopes separate SES: terms. evidence heterogeneity stronger, however, terms tested collectively using linearHypothesis() function: model (rohwer.mod2) similar spirit two models (rohwer.ses1 rohwer.ses2) fit two SES groups separately show Figure 1.3, except model rohwer.mod2 assumes common within-groups error covariance matrix allows overall tests. illustrate model rohwer.mod2, construct plot SAT PPVT shown Figure 1.6. simplify display, show hypothesis ellipses overall effects PA tests baseline high-SES group, single combined ellipse SESLo: interaction terms tested previously, representing differences slopes low high-SES groups. SES “treatment-coded” model, ellipse covariate represents hypothesis slopes covariate zero high-SES baseline category. parameterization, ellipse Slopes represents joint hypothesis slopes covariates differ low-SES group. Figure 1.6: plot SAT PPVT, fitting model rohwer.mod2 allows unequal slopes covariates. Comparing Figure 1.6 heterogeneous slopes model Figure 1.4 (left) homogeneous slopes model, can seen covariates ellipses similar size orientation, reflecting similar evidence respective null hypotheses, effect SES, showing greater performance high-SES group response measures. Somewhat subtle, error ellipse noticeably smaller Figure 1.6, reflecting additional variation accounted differences slopes.","code":"rohwer.mod2 <- lm(cbind(SAT, PPVT, Raven) ~ SES * (n + s + ns + na + ss), data=Rohwer) Anova(rohwer.mod2) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.391 11.78 3 55 4.5e-06 *** #> n 1 0.079 1.57 3 55 0.20638 #> s 1 0.125 2.62 3 55 0.05952 . #> ns 1 0.254 6.25 3 55 0.00100 *** #> na 1 0.307 8.11 3 55 0.00015 *** #> ss 1 0.060 1.17 3 55 0.32813 #> SES:n 1 0.072 1.43 3 55 0.24417 #> SES:s 1 0.099 2.02 3 55 0.12117 #> SES:ns 1 0.118 2.44 3 55 0.07383 . #> SES:na 1 0.148 3.18 3 55 0.03081 * #> SES:ss 1 0.057 1.12 3 55 0.35094 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (coefs <- rownames(coef(rohwer.mod2))) #> [1] \"(Intercept)\" \"SESLo\" \"n\" \"s\" \"ns\" #> [6] \"na\" \"ss\" \"SESLo:n\" \"SESLo:s\" \"SESLo:ns\" #> [11] \"SESLo:na\" \"SESLo:ss\" print(linearHypothesis(rohwer.mod2, coefs[grep(\":\", coefs)]), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 5 0.4179 1.845 15 171.0 0.03209 * #> Wilks 5 0.6236 1.894 15 152.2 0.02769 * #> Hotelling-Lawley 5 0.5387 1.927 15 161.0 0.02396 * #> Roy 5 0.3846 4.385 5 57.0 0.00191 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 colors <- c(\"red\", \"blue\", rep(\"black\",5), \"#969696\") heplot(rohwer.mod2, col=c(colors, \"brown\"), terms=c(\"SES\", \"n\", \"s\", \"ns\", \"na\", \"ss\"), hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"), \"Slopes\" = coefs[grep(\":\", coefs)]))"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"recovery-from-hernia-repair","dir":"Articles","previous_headings":"","what":"Recovery from hernia repair","title":"HE plot MMRA Examples","text":"example uses Hernior data (Mosteller & Tukey (1977), Data Exhibit 8, p. 567-568), comprising data measures post-operative recovery 32 patients undergoing elective herniorrhaphy operation, relation pre-operative measures. outcome measures : leave, patient’s condition upon leaving recovery room (1-4 scale, 1=best), nurse, level nursing required one week operation (1-5 scale, 1=worst) los, length stay hospital operation (days) predictor variables : patient age, sex, `pstat, physical status ( 1-5 scale, 1=perfect health, …, 5=poor health), build, body build (1-5 scale, 1=emaciated, …, 5=obese), preoperative complications (cardiac) heart respiration (resp), 1-4 scales, 1=none, …, 4=severe.","code":"data(Hernior) str(Hernior) #> 'data.frame': 32 obs. of 9 variables: #> $ age : int 78 60 68 62 76 76 64 74 68 79 ... #> $ sex : Factor w/ 2 levels \"f\",\"m\": 2 2 2 2 2 2 2 1 2 1 ... #> $ pstat : int 2 2 2 3 3 1 1 2 3 2 ... #> $ build : int 3 3 3 5 4 3 2 3 4 2 ... #> $ cardiac: int 1 2 1 3 3 1 1 2 2 1 ... #> $ resp : int 1 2 1 1 2 1 2 2 1 1 ... #> $ leave : int 2 2 1 1 2 1 1 1 1 2 ... #> $ los : int 9 4 7 35 9 7 5 16 7 11 ... #> $ nurse : num 3 5 4 3 4 5 5 3 5 3 ..."},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"all-predictors-model","dir":"Articles","previous_headings":"2 Recovery from hernia repair","what":"All predictors model","title":"HE plot MMRA Examples","text":"begin model fitting predictors. Note ordinal predictors, pstat, build, cardiac resp arguably treated factors, rather linear, regression terms. give tests nonlinear effects relations responses. ignore possibility example. results multivariate tests somewhat disappointing. physical status predictor (pstat) appears significant conventional levels. univariate models response implicit MLM Hern.mod. can printed using summary(), can use summary() extract certain statistics univariate response model, . conveniently, function heplots::glance.mlm() extends broom::glance.lm() give one-line summary statistics response variable MLM. \\(R^2\\) \\(F\\) statistics overall model assessing impact predictors. Univariate tests predictors models (shown ) hard interpret, largely show significant effects leave variable. Yet, \\(R^2\\) values responses slightly promising. proceed multivariate overall test \\(\\mathbf{B} = 0\\) predictors, whose term names can easily extracted rownames coefficients. Figure 2.1: pairs plot Hernior data pairs() plot MLM gives set plots shown Figure 2.1 helps interpret relations among predictors lead highly significant overall test. Among predictors, age sex small insignificant effects outcome measures jointly. predictors contribute overall test \\(\\mathbf{B} = 0\\), though different ways various responses. example, panel (leave, los) Figure 2.1, can seen pstat individually outside \\(\\mathbf{E}\\) ellipse, build resp contribute overall test opposite direction.","code":"Hern.mod <- lm(cbind(leave, nurse, los) ~ age + sex + pstat + build + cardiac + resp, data=Hernior) Anova(Hern.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> age 1 0.143 1.27 3 23 0.307 #> sex 1 0.026 0.21 3 23 0.892 #> pstat 1 0.333 3.84 3 23 0.023 * #> build 1 0.257 2.65 3 23 0.073 . #> cardiac 1 0.228 2.26 3 23 0.108 #> resp 1 0.248 2.53 3 23 0.082 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Hern.summary <- summary(Hern.mod) unlist(lapply(Hern.summary, function(x) x$r.squared)) #> Response leave Response nurse Response los #> 0.5918 0.2474 0.3653 glance.mlm(Hern.mod) #> # A tibble: 3 x 9 #> response r.squared adj.r.squared sigma fstatistic numdf dendf p.value nobs #> #> 1 leave 0.592 0.494 0.388 6.04 6 25 0.000519 32 #> 2 nurse 0.247 0.0668 0.841 1.37 6 25 0.265 32 #> 3 los 0.365 0.213 5.62 2.40 6 25 0.0573 32 # test overall regression (predictors <- rownames(coef(Hern.mod))[-1]) #> [1] \"age\" \"sexm\" \"pstat\" \"build\" \"cardiac\" \"resp\" Regr <- linearHypothesis(Hern.mod, predictors) print(Regr, digits=5, SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 6 1.10198 2.4192 18 75.000 0.0041356 ** #> Wilks 6 0.21734 2.6046 18 65.539 0.0025239 ** #> Hotelling-Lawley 6 2.26797 2.7300 18 65.000 0.0016285 ** #> Roy 6 1.55434 6.4764 6 25.000 0.0003232 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 clr <- c(\"red\", \"darkgray\", \"blue\", \"darkgreen\", \"magenta\", \"brown\", \"black\") vlab <- c(\"LeaveCondition\\n(leave)\", \"NursingCare\\n(nurse)\", \"LengthOfStay\\n(los)\") hyp <- list(\"Regr\" = predictors) pairs(Hern.mod, hypotheses=hyp, col=clr, var.labels=vlab, fill=c(TRUE,FALSE), fill.alpha = 0.1, cex=1.25)"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"canonical-analysis","dir":"Articles","previous_headings":"2 Recovery from hernia repair","what":"Canonical analysis","title":"HE plot MMRA Examples","text":"multivariate regression example, terms model Hern.mod 1 df, plot lines plots. alternative view effects can seen canonical discriminant space, , predictor shows scores linear combination responses contributes multivariate test effect, together weights responses. use candiscList() calculate canonical analyses predictor terms Hern.mod. 1D canonical discriminant plots terms can obtained interactively menu, simply plotting Hern.canL object. Plots separate terms produced lines , shown Figure 2.2 Figure 2.3. pstat build: Figure 2.2: 1D Canonical discriminant plots physical status (pstat) build. canonical scores better outcomes associated smaller scores. Arrows show correlations responses 1D canonical scores. age cardiac: Figure 2.3: 1D Canonical discriminant plots age cardiac. canonical scores better outcomes associated smaller scores. plots, canonical scores panel shows linear combinations response variables largest possible \\(R^2\\). Better outcomes correspond numerically smaller canonical scores. arrows structure panel proportional canonical weights. plots provide simple interpretations results canonical combinations responses. Better physical status, smaller body build, lower age absence cardiac complications positively related better outcomes.","code":"Hern.canL <- candiscList(Hern.mod) plot(Hern.canL) plot(Hern.canL, term=\"pstat\") plot(Hern.canL, term=\"build\") plot(Hern.canL, term=\"age\") plot(Hern.canL, term=\"cardiac\")"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"grades-in-a-sociology-course","dir":"Articles","previous_headings":"","what":"Grades in a Sociology Course","title":"HE plot MMRA Examples","text":"data set SocGrades contains four outcome measures student performance introductory sociology course together six potential predictors. data used Marascuilo & Levin (1983) example canonical correlation analysis, also suitable examples multivariate multiple regression, MANOVA, MANCOVA step-analysis multivariate linear models. outcome measures used three test scores course, midterm1, midterm2, final, course evaluation (eval).2 Predictor variables : class, student’s social class (ordered factor levels 1 > 2 > 3) sex, gpa, grade point average, boards, College Board test scores, hssoc, previous high school unit sociology? (values , yes), pretest, score course pretest.","code":"str(SocGrades) #> 'data.frame': 40 obs. of 10 variables: #> $ class : Ord.factor w/ 3 levels \"3\"<\"2\"<\"1\": 2 2 2 1 2 1 3 2 1 2 ... #> $ sex : Factor w/ 2 levels \"F\",\"M\": 2 2 2 2 2 2 1 2 2 1 ... #> $ gpa : num 3.55 2.7 3.5 2.91 3.1 3.49 3.17 3.57 3.76 3.81 ... #> $ boards : int 410 390 510 430 600 610 610 560 700 460 ... #> $ hssoc : Factor w/ 2 levels \"no\",\"yes\": 1 1 1 1 1 1 1 1 2 2 ... #> $ pretest : int 17 20 22 13 16 28 14 10 28 30 ... #> $ midterm1: int 43 50 47 24 47 57 42 42 69 48 ... #> $ midterm2: int 61 47 79 40 60 59 61 79 83 67 ... #> $ final : int 129 60 119 100 79 99 92 107 156 110 ... #> $ eval : int 3 1 1 1 2 1 3 2 1 1 ..."},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"models","dir":"Articles","previous_headings":"3 Grades in a Sociology Course","what":"Models","title":"HE plot MMRA Examples","text":"basic MLM fit grades.mod predictor variables.","code":"data(SocGrades) grades.mod <- lm(cbind(midterm1, midterm2, final, eval) ~ class + sex + gpa + boards + hssoc + pretest, data=SocGrades) Anova(grades.mod, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 1.567 11.75 4 30 7.3e-06 *** #> sex 1 0.553 4.01 4 29 0.0104 * #> gpa 1 1.208 8.76 4 29 9.2e-05 *** #> boards 1 0.731 5.30 4 29 0.0025 ** #> hssoc 1 0.035 0.25 4 29 0.9052 #> pretest 1 0.313 2.27 4 29 0.0859 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"screening-for-interactions","dir":"Articles","previous_headings":"3 Grades in a Sociology Course > 3.1 Models","what":"Screening for interactions","title":"HE plot MMRA Examples","text":"univariate multivariate response models, often useful screen higher-order terms (interactions, non-linear predictors). can easily done using update(), . First, try extended model pairwise interactions predictors. model formula, ~.^2, . represents terms model, ^2 generates products terms, class:sex, class:gpa, forth. results , interaction class:sex significant, main effects hssoc pretest remain insignificant. revised model explore grades.mod3, pairwise plot responses (Figure 3.1 shows nearly effects expected directions: higher gpa, boards, class leads better performance outcomes. interaction class:sex seems confined largely midterm1. Figure 3.1: pairs plot SocGrade, model grades.mod3. effects easier appreciate three exam grades jointly 3D plot can rotate interactively. snapshot shown Figure 3.2. Figure 3.2: 3D plot SocGrades, model grades.mod3 Interactive rotation plot shows effect class two dimensional, , one dimension small. major axis class ellipsoid aligned increasing performance three grades, expected ordering three social classes.","code":"grades.mod2 <- update(grades.mod, . ~ .^2) Anova(grades.mod2, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 2.817 7.04 4 10 0.0058 ** #> sex 1 0.487 1.09 4 9 0.4152 #> gpa 1 1.998 4.49 4 9 0.0286 * #> boards 1 2.338 5.26 4 9 0.0183 * #> hssoc 1 0.281 0.63 4 9 0.6522 #> pretest 1 0.510 1.15 4 9 0.3946 #> class:sex 2 2.039 5.10 4 10 0.0168 * #> class:gpa 2 0.982 2.45 4 10 0.1137 #> class:boards 2 0.522 1.31 4 10 0.3321 #> class:hssoc 2 0.356 0.89 4 10 0.5041 #> class:pretest 2 1.005 2.51 4 10 0.1082 #> sex:gpa 1 0.269 0.60 4 9 0.6694 #> sex:boards 1 0.184 0.41 4 9 0.7944 #> sex:hssoc 1 0.909 2.04 4 9 0.1714 #> sex:pretest 1 0.885 1.99 4 9 0.1795 #> gpa:boards 1 0.447 1.00 4 9 0.4537 #> gpa:hssoc 1 0.596 1.34 4 9 0.3269 #> gpa:pretest 1 0.472 1.06 4 9 0.4291 #> boards:hssoc 1 0.353 0.80 4 9 0.5573 #> boards:pretest 1 0.705 1.59 4 9 0.2593 #> hssoc:pretest 1 1.464 3.29 4 9 0.0635 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 grades.mod3 <- update(grades.mod, . ~ . + class:sex - hssoc - pretest) Anova(grades.mod3, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 1.588 11.91 4 30 6.5e-06 *** #> sex 1 0.575 4.17 4 29 0.00864 ** #> gpa 1 1.434 10.40 4 29 2.4e-05 *** #> boards 1 0.895 6.49 4 29 0.00074 *** #> class:sex 2 0.450 3.38 4 30 0.02143 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 pairs(grades.mod3) heplot3d(grades.mod3, wire=FALSE)"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"canonical-analysis-1","dir":"Articles","previous_headings":"3 Grades in a Sociology Course","what":"Canonical analysis","title":"HE plot MMRA Examples","text":"representation effects canonical space particularly useful . , use candiscList() compute canonical decompositions terms model, extract canonical \\(R^2\\) terms result. use heplot() \"candiscList\" object show effects class canonical space, giving Figure 3.3. Figure 3.3: Canonical plot class effect grades.mod3 can seen Figure 3.3 nearly variation exam performance due class aligned first canonical dimension. three tests course evaluation similar weights dimension, course evaluation differs rest along second, small dimension. 1D plots canonical scores effects model also interest, provide simple interpretations effects response variables. statements produce plots shown Figure 3.4. Figure 3.4: 1D Canonical discriminant plots sex gpa. Higher canonical scores reflect better course performance. readily seen males perform better overall, effect sex strongest midterm2. well, increasing course performance tests strongly associated gpa.","code":"# calculate canonical results for all terms grades.can <- candiscList(grades.mod3) # extract canonical R^2s unlist(lapply(grades.can, function(x) x$canrsq)) #> class1 class2 sex gpa boards class:sex1 class:sex2 #> 0.61362 0.02419 0.36527 0.58915 0.47227 0.31046 0.13293 # plot class effect in canonical space heplot(grades.can, term=\"class\", scale=4, fill=TRUE, var.col=\"black\", var.lwd=2) plot(grades.can, term=\"sex\") plot(grades.can, term=\"gpa\")"},{"path":[]},{"path":"https://friendly.github.io/heplots/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Michael Friendly. Author, maintainer. John Fox. Author. Georges Monette. Author. Phil Chalmers. Contributor. Duncan Murdoch. Contributor.","code":""},{"path":"https://friendly.github.io/heplots/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Michael Friendly John Fox Georges Monette (2023). heplots: Visualizing Tests Multivariate Linear Models. R package version 1.6.0. URL https://CRAN.R-project.org/package=heplots Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 2007, 16, 421-444 Michael Friendly (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. DOI: 10.18637/jss.v037.i04","code":"@Manual{, title = {{heplots}: Visualizing Tests in Multivariate Linear Models}, author = {Michael Friendly and John Fox and Georges Monette}, year = {2023}, note = {R package version 1.6.0}, url = {https://CRAN.R-project.org/package=heplots}, } @Article{, title = {HE plots for Multivariate General Linear Models}, author = {Michael Friendly}, year = {2007}, journal = {Journal of Computational and Graphical Statistics}, volume = {16}, number = {4}, pages = {421--444}, } @Article{, title = {HE Plots for Repeated Measures Designs}, author = {Michael Friendly}, journal = {Journal of Statistical Software}, year = {2010}, volume = {37}, number = {4}, pages = {1--40}, doi = {10.18637/jss.v037.i04}, }"},{"path":[]},{"path":"https://friendly.github.io/heplots/index.html","id":"visualizing-hypothesis-tests-in-multivariate-linear-models","dir":"","previous_headings":"","what":"Visualizing Hypothesis Tests in Multivariate Linear Models","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"Version 1.6.0","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"description","dir":"","previous_headings":"","what":"Description","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"heplots package provides functions visualizing hypothesis tests multivariate linear models (MANOVA, multivariate multiple regression, MANCOVA, repeated measures designs). plots represent sums--squares--products matrices linear hypotheses (H) error (E) using ellipses (two dimensions), ellipsoids (three dimensions), line segments one dimension. theory applications, see: Fox, Friendly Monette (2009) brief introduction, Friendly (2010) application ideas repeated measure designs, Friendly, Monette Fox (2013) general discussion role elliptical geometry statistical understanding, Friendly & Sigal (2017) applied R tutorial, Friendly & Sigal (2018) theory examples visualizing equality covariance matrices. topics now addressed include: robust MLMs, using iteratively re-weighted least squared -weight observations large multivariate residuals, robmlm(). Mahalanobis() calculates classical robust Mahalanobis squared distances using MCD MVE estimators center covariance. visualizing tests equality covariance matrices MLMs (Box’s M test), boxM() plot.boxM(). χ2 Q-Q plots MLMs (cqplot()) detect outliers assess multivariate normality residuals. bivariate coefficient plots showing elliptical confidence regions (coefplot()). respect, heplots package now aims provide wide range tools analyzing visualizing multivariate response linear models, together packages: related candisc package provides plots canonical discriminant space, space linear combinations responses show maximum possible effects canonical correlation multivariate regression designs. Another package, mvinfluence, provides diagnostic measures plots influential observations MLM designs. Several tutorial vignettes also included. See vignette(package=\"heplots\").","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/index.html","id":"he-plot-functions","dir":"","previous_headings":"","what":"HE plot functions","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"graphical functions contained display multivariate model effects variable (data) space, one response variables (contrasts among response variables repeated measures designs). heplot() constructs two-dimensional plots model terms linear hypotheses pairs response variables multivariate linear models. heplot3d() constructs analogous 3D plots triples response variables. pairs method, pairs.mlm() constructs scatterplot matrix pairwise plots. heplot1d() constructs 1-dimensional analogs plots model terms linear hypotheses single response variables.","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"other-functions","dir":"","previous_headings":"","what":"Other functions","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"glance.mlm() extends broom::glance.lm() multivariate response models, giving one-line statistical summary response variable. boxM() Calculates Box’s M test homogeneity covariance matrices MANOVA design. plot method displays visual representation components test. Associated , bartletTests() levineTests() give univariate tests homogeneity variance response measure MLM. covEllipses() draw covariance (data) ellipses one group, optionally including ellipse pooled within-group covariance.","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"repeated-measure-designs","dir":"","previous_headings":"Other functions","what":"Repeated measure designs","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"repeated measure designs, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. terms involving within-subject effects, functions carry linear transformation matrix Y responses matrix Y M, M model matrix term intra-subject design produce plots H E matrices transformed space. vignette \"repeated\" describes graphical methods repeated measures designs. (present, vignette available plots repeated measures designs.)","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"datasets","dir":"","previous_headings":"","what":"Datasets","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"package also provides large collection data sets illustrating variety multivariate linear models types listed , together graphical displays. table classifies method tags. names linked documentation pkgdown website, [http://friendly.github.io/heplots].","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"examples","dir":"","previous_headings":"","what":"Examples","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"example illustrates plots using classic iris data set. means flower variables differ Species? dataset imputus R. . Fisher (1936) propose method discriminant analysis using data collected Edgar Anderson (1928). Though may rightly deprecate Fisher supporter eugenics, Anderson’s iris dataset blamed. basic plot shows H E ellipses first two response variables (: Sepal.Length Sepal.Width). multivariate test significant (Roy’s test) iff H ellipse projects anywhere outside E ellipse. positions group means show differ two response variables shown, provide interpretation orientation H ellipse: long directions differences among means. Contrasts linear hypotheses can shown well, ellipses look better filled. create contrasts test differences versacolor virginca also setosa average two. 1 df contrast plots degenerate 1D ellipse– line. contrasts orthogonal, add total 2 df effect Species. Note first contrast, labeled V:V, distinguishes means versicolor virginica; second contrast, S:VV distinguishes setosa two. pairwise plots produced using pairs method MLM objects.","code":"iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) heplot(iris.mod) par(mar=c(4,4,1,1)+.1) contrasts(iris$Species)<-matrix(c(0, -1, 1, 2, -1, -1), nrow=3, ncol=2) contrasts(iris$Species) #> [,1] [,2] #> setosa 0 2 #> versicolor -1 -1 #> virginica 1 -1 iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) hyp <- list(\"V:V\"=\"Species1\",\"S:VV\"=\"Species2\") heplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=0.1) pairs(iris.mod, hypotheses=hyp, hyp.labels=FALSE, fill=TRUE, fill.alpha=0.1)"},{"path":"https://friendly.github.io/heplots/index.html","id":"references","dir":"","previous_headings":"","what":"References","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"Anderson, E. (1928). Problem Species Northern Blue Flags, Iris versicolor L. Iris virginica L. Annals Missouri Botanical Garden, 13, 241–313. Fisher, R. . (1936). Use Multiple Measurements Taxonomic Problems. Annals Eugenics, 8, 379–388. Fox, J., Friendly, M. & Monette, G. (2009). Visualizing hypothesis tests multivariate linear models: heplots package R Computational Statistics, 24, 233-246. Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples. Journal Statistical Software, 17, 1-42. Friendly, M. (2010). plots repeated measures designs. Journal Statistical Software, 37, 1–37. Friendly, M.; Monette, G. & Fox, J. (2013). Elliptical Insights: Understanding Statistical Methods Elliptical Geometry Statistical Science, 28, 1-39. Friendly, M. & Sigal, M. (2017). Graphical Methods Multivariate Linear Models Psychological Research: R Tutorial. Quantitative Methods Psychology, 13, 20-45. Friendly, M. & Sigal, M. (2018): Visualizing Tests Equality Covariance Matrices, American Statistician, DOI","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":null,"dir":"Reference","previous_headings":"","what":"Adolescent Health Data — AddHealth","title":"Adolescent Health Data — AddHealth","text":"data taken National Longitudinal Study Adolescent Health. cross-sectional sample participants grades 7--12, described analyzed Warne (2014).","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Adolescent Health Data — AddHealth","text":"data frame 4344 observations following 3 variables. grade ordered factor levels 7 < 8 < 9 < 10 < 11 < 12 depression numeric vector anxiety numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Adolescent Health Data — AddHealth","text":"Warne, R. T. (2014). primer Multivariate Analysis Variance (MANOVA) Behavioral Scientists. Practical Assessment, Research & Evaluation, 19 (1). https://scholarworks.umass.edu/pare/vol19/iss1/17/","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Adolescent Health Data — AddHealth","text":"depression response question \"last month, often feel depressed blue?\" anxiety response question \"last month, often trouble relaxing?\" responses depression anxiety recorded 5-point Likert scale, categories 0=\"Never\", 1=\"Rarely\", 2=\"Occasionally\", 3=\"Often\", 4=\"Every day\"","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Adolescent Health Data — AddHealth","text":"","code":"data(AddHealth) # fit mlm AH.mod <- lm(cbind(depression, anxiety) ~ grade, data=AddHealth) car::Anova(AH.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> grade 5 0.022415 9.834 10 8676 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 summary(car::Anova(AH.mod)) #> #> Type II MANOVA Tests: #> #> Sum of squares and products for error: #> depression anxiety #> depression 6058.911 3021.691 #> anxiety 3021.691 5210.233 #> #> ------------------------------------------ #> #> Term: grade #> #> Sum of squares and products for the hypothesis: #> depression anxiety #> depression 112.76722 87.57399 #> anxiety 87.57399 75.02650 #> #> Multivariate Tests: grade #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 5 0.0224153 9.833964 10 8676 < 2.22e-16 *** #> Wilks 5 0.9776192 9.872584 10 8674 < 2.22e-16 *** #> Hotelling-Lawley 5 0.0228579 9.911186 10 8672 < 2.22e-16 *** #> Roy 5 0.0211939 18.387786 5 4338 < 2.22e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(AH.mod, hypotheses=\"grade.L\", fill=c(TRUE, FALSE))"},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":null,"dir":"Reference","previous_headings":"","what":"Adopted Children — Adopted","title":"Adopted Children — Adopted","text":"Data subset observational, longitudinal, study adopted children. child's intelligence related intelligence biological mother intelligence adoptive mother?","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Adopted Children — Adopted","text":"data frame 62 observations following 6 variables. AMED adoptive mother's years education (proxy IQ) BMIQ biological mother's score IQ test Age2IQ IQ child age 2 Age4IQ IQ child age 4 Age8IQ IQ child age 8 Age13IQ IQ child age 13","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Adopted Children — Adopted","text":"Ramsey, F.L. Schafer, D.W. (2002). Statistical Sleuth: Course Methods Data Analysis (2nd ed), Duxbury. data set identical ex1605 Sleuth2 package.","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Adopted Children — Adopted","text":"child's intelligence measured age 2, 4, 8, 13 sample. intelligence change time, changes related intelligence birth adoptive mother?","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Adopted Children — Adopted","text":"Friendly, M. (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Skodak, M. Skeels, H.M. (1949). Final Follow-Study One Hundred Adopted Children, Journal Genetic Psychology 75: 85--125.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Adopted Children — Adopted","text":"","code":"# Treat as multivariate regression problem Adopted.mod <- lm(cbind(Age2IQ, Age4IQ, Age8IQ, Age13IQ) ~ AMED + BMIQ, data=Adopted) Adopted.mod #> #> Call: #> lm(formula = cbind(Age2IQ, Age4IQ, Age8IQ, Age13IQ) ~ AMED + #> BMIQ, data = Adopted) #> #> Coefficients: #> Age2IQ Age4IQ Age8IQ Age13IQ #> (Intercept) 117.63046 93.33771 88.03739 76.84827 #> AMED -0.44136 -0.02073 -0.01216 -0.16063 #> BMIQ 0.04001 0.22172 0.30961 0.36747 #> require(car) #> Loading required package: car #> Loading required package: carData # test overall multivariate regression print(linearHypothesis(Adopted.mod, c(\"AMED\",\"BMIQ\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.1964576 1.552235 8 114 0.147134 #> Wilks 2 0.8065020 1.589253 8 112 0.135846 #> Hotelling-Lawley 2 0.2362528 1.624238 8 110 0.125939 #> Roy 2 0.2195371 3.128404 4 57 0.021426 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # show separate linear regressions op <- par(mfcol=c(2,4), mar=c(4,4,1,1)+.1) for (i in 3:6) { dataEllipse(as.matrix(Adopted[,c(1,i)]), col=\"black\", levels=0.68, ylim=c(70,140)) abline(lm(Adopted[,i] ~ Adopted[,1]), col=\"red\", lwd=2) dataEllipse(as.matrix(Adopted[,c(2,i)]), col=\"black\", levels=0.68, ylim=c(70,140)) abline(lm(Adopted[,i] ~ Adopted[,2]), col=\"red\", lwd=2) abline(a=0,b=1, lty=1, col=\"blue\") } par(op) # between-S (MMReg) plots heplot(Adopted.mod, hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\")), main=\"IQ scores of adopted children: MMReg\") pairs(Adopted.mod, hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\"))) if(requireNamespace(\"rgl\")){ heplot3d(Adopted.mod, hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\")), col = c(\"red\", \"blue\", \"black\", \"gray\"), wire=FALSE) } # Treat IQ at different ages as a repeated measure factor # within-S models & plots Age <- data.frame(Age=ordered(c(2,4,8,13))) car::Anova(Adopted.mod, idata=Age, idesign=~Age, test=\"Roy\") #> #> Type II Repeated Measures MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 115.669 6824.5 1 59 < 2.2e-16 *** #> AMED 1 0.002 0.1 1 59 0.737878 #> BMIQ 1 0.126 7.5 1 59 0.008302 ** #> Age 1 0.712 13.5 3 57 8.911e-07 *** #> AMED:Age 1 0.014 0.3 3 57 0.845454 #> BMIQ:Age 1 0.122 2.3 3 57 0.085792 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # within-S plots heplot(Adopted.mod, idata=Age, idesign=~Age, iterm=\"Age\", cex=1.25, cex.lab=1.4, fill=c(FALSE, TRUE), hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\")) )"},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw a 3D Arrow in an RGL Scene — arrow3d","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"Draws 3D arrow rgl scene barbs arrow head","code":""},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"","code":"arrow3d( p0 = c(0, 0, 0), p1 = c(1, 1, 1), barblen, s = 0.05, theta = pi/6, n = 3, ... )"},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"p0 Initial point (tail arrow) p1 Ending point (head arrow) barblen Length barb, data units s length barb fraction line length (unless barblen specified) theta opening angle barbs n number barbs ... args passed lines3d line styling, e.g., color, lwd, etc. See material3d.","code":""},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"Returns (invisibly): integer ID line added scene","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"Barry Rowlingson, posted R-help, 1/10/2010","code":""},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"","code":"arrow3d(c(0,0,0), c(2,2,2), barblen=.2, lwd=3, col=\"black\") arrow3d(c(0,0,0), c(-2,2,2), barblen=.2, lwd=3, col=\"red\")"},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":null,"dir":"Reference","previous_headings":"","what":"Bartlett Tests of Homogeneity of Variances — bartlettTests","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"function extends bartlett.test multivariate response setting. performs Bartlett test homogeneity variances set response variables, prints compact summary.","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"","code":"bartlettTests(y, group, ...)"},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"y data frame matrix numeric response variables multivariate linear model. group vector factor object giving group corresponding elements rows y ... arguments, passed bartlett.test","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"object classes \"anova\" \"data.frame\", one observation response variable y.","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"Bartlett's test univariate version Box's M test equality covariance matrices. function provides univariate follow-test Box's M test give one simple assessment response variables contribute significant differences variances among groups.","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"Bartlett, M. S. (1937). Properties sufficiency statistical tests. Proceedings Royal Society London Series , 160, 268-282.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"","code":"bartlettTests(iris[,1:4], iris$Species) #> Bartlett's Tests for Homogeneity of Variance #> #> Chisq df Pr(>Chisq) #> Sepal.Length 16.0057 2 0.0003345 *** #> Sepal.Width 2.0911 2 0.3515028 #> Petal.Length 55.4225 2 9.229e-13 *** #> Petal.Width 39.2131 2 3.055e-09 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 data(Skulls, package=\"heplots\") bartlettTests(Skulls[,-1], Skulls$epoch) #> Bartlett's Tests for Homogeneity of Variance #> #> Chisq df Pr(>Chisq) #> mb 7.3382 4 0.1191 #> bh 0.7315 4 0.9474 #> bl 3.5155 4 0.4755 #> nh 4.3763 4 0.3575"},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"Ellipsoids created rgl functions meshes points, segments, ... coordinates various forms. function calculates bounding box, defined range x, y, z coordinates.","code":""},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"","code":"bbox3d(x, ...)"},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"x mesh3d object ... ignored","code":""},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"2 x 3 matrix, giving minimum maximum values rows x, y, z coordinates columns.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":null,"dir":"Reference","previous_headings":"","what":"Captive and maltreated bees — Bees","title":"Captive and maltreated bees — Bees","text":"Pabalan, Davey Packe (2000) studied effects captivity maltreatment reproductive capabilities queen worker bees complex factorial design.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Captive and maltreated bees — Bees","text":"data frame 246 observations following 6 variables. caste factor levels Queen Worker treat factor levels \"\" CAP MAL time ordered factor: time treatment Iz index ovarian development Iy index ovarian reabsorption trtime factor levels 0 CAP05 CAP07 CAP10 CAP12 CAP15 MAL05 MAL07 MAL10 MAL12 MAL15","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Captive and maltreated bees — Bees","text":"Pabalan, N., Davey, K. G. & Packe, L. (2000). Escalation Aggressive Interactions Staged Encounters Halictus ligatus Say (Hymenoptera: Halictidae), Comparison Circle Tube Behaviors Halictine Species Journal Insect Behavior, 13, 627-650.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Captive and maltreated bees — Bees","text":"Bees placed small tube either held captive (CAP) shaken periodically (MAL) one 5, 7.5, 10, 12.5 15 minutes, sacrificed two measures: ovarian development (Iz) ovarian reabsorption (Iy), taken. single control group measured treatment, .e., time 0; n=10 per group. design thus nearly three-way factorial, factors caste (Queen, Worker), treat (CAP, MAL) time, except 11 combinations Treatment Time; call trtime . Models three-way factorial design, using formula cbind(Iz,Iy) ~ caste*treat*time ignore control condition time==0, treat==NA. handle additional control group time==0, separating effects Treatment Time, 10 contrasts can defined trtime factor model cbind(Iz,Iy) ~ caste*trtime See demo(bees.contrasts) details. heplot examples , default size=\"evidence\" displays crowded interpret, effects highly significant. alternative effect-size scaling, size=\"effect\", makes relations clearer.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Captive and maltreated bees — Bees","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17, 1-42.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Captive and maltreated bees — Bees","text":"","code":"data(Bees) require(car) # 3-way factorial, ignoring 0 group bees.mod <- lm(cbind(Iz,Iy) ~ caste*treat*time, data=Bees) car::Anova(bees.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> caste 1 0.72792 240.787 2 180 < 2.2e-16 *** #> treat 1 0.19313 21.542 2 180 4.098e-09 *** #> time 4 0.75684 27.548 8 362 < 2.2e-16 *** #> caste:treat 1 0.02506 2.313 2 180 0.1019 #> caste:time 4 0.28670 7.572 8 362 2.288e-09 *** #> treat:time 4 0.01941 0.443 8 362 0.8945 #> caste:treat:time 4 0.06796 1.592 8 362 0.1257 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 op<-palette(c(palette()[1:4],\"brown\",\"magenta\", \"olivedrab\",\"darkgray\")) heplot(bees.mod, xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*treat*time\") heplot(bees.mod, size=\"effect\", xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*treat*time\", ) # two-way design, using trtime bees.mod1 <- lm(cbind(Iz,Iy) ~ caste*trtime, data=Bees) Anova(bees.mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> caste 1 0.67976 236.673 2 223 < 2.2e-16 *** #> trtime 10 0.82851 15.842 20 448 < 2.2e-16 *** #> caste:trtime 10 0.32173 4.294 20 448 3.746e-09 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # HE plots for this model, with both significance and effect size scaling heplot(bees.mod1, xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*trtime\") heplot(bees.mod1, xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*trtime\", size=\"effect\") palette(op) # effect plots for separate responses if(require(effects)) { bees.lm1 <-lm(Iy ~ treat*caste*time, data=Bees) bees.lm2 <-lm(Iz ~ treat*caste*time, data=Bees) bees.eff1 <- allEffects(bees.lm1) plot(bees.eff1,multiline=TRUE,ask=FALSE) bees.eff2 <- allEffects(bees.lm2) plot(bees.eff2,multiline=TRUE,ask=FALSE) } #> Loading required package: effects #> lattice theme set by effectsTheme() #> See ?effectsTheme for details."},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":null,"dir":"Reference","previous_headings":"","what":"Box's M-test — boxM","title":"Box's M-test — boxM","text":"boxM performs Box's (1949) M-test homogeneity covariance matrices obtained multivariate normal data according one classification factors. test compares product log determinants separate covariance matrices log determinant pooled covariance matrix, analogous likelihood ratio test. test statistic uses chi-square approximation.","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Box's M-test — boxM","text":"","code":"boxM(Y, ...) # S3 method for default boxM(Y, group, ...) # S3 method for formula boxM(Y, data, ...) # S3 method for lm boxM(Y, ...) # S3 method for boxM summary(object, digits = getOption(\"digits\"), cov = FALSE, quiet = FALSE, ...)"},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Box's M-test — boxM","text":"Y response variable matrix default method, \"mlm\" \"formula\" object multivariate linear model. Y linear-model object formula, variables right-hand-side model must factors must completely crossed, e.g., :B ... Arguments passed methods. group factor defining groups, vector length n . data numeric data.frame matrix containing n observations p variables; expected n > p. object \"boxM\" object summary method digits number digits print summary method cov logical; TRUE covariance matrices printed. quiet logical; TRUE printing summary suppressed","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Box's M-test — boxM","text":"list class c(\"htest\", \"boxM\") containing following components: statistic approximated value chi-square distribution. parameter degrees freedom related test statistic case follows Chi-square distribution. p.value p-value test. cov list containing within covariance matrix level grouping. pooled pooled covariance matrix. logDet vector containing natural logarithm matrix cov, followed value pooled covariance matrix means matrix means groups, followed grand means df vector degrees freedom groups, followed pooled covariance matrix data.name character string giving names data. method character string \"Box's M-test Homogeneity Covariance Matrices\".","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Box's M-test — boxM","text":"object class \"htest\", statistical test printed normally default. object class \"boxM\", methods available. general provision yet handling missing data. Missing data simply removed, warning. well, computation assumes covariance matrix group non-singular, \\(log det(S_i)\\) can calculated group. minimum, requires \\(n > p\\) group. Box's M test multivariate linear model highly sensitive departures multivariate normality, just analogous univariate test. also affected adversely unbalanced designs. people recommend ignore result unless highly significant, e.g., p < .0001 worse. summary method prints variety additional statistics based eigenvalues covariance matrices. returned invisibly, list containing following components: logDet - log determinants eigs - eigenvalues covariance matrices eigstats - statistics computed eigenvalues covariance matrix:product: product eigenvalues, \\(\\prod{\\lambda_i}\\);sum: sum eigenvalues, \\(\\sum{\\lambda_i}\\);precision: average precision eigenvalues, \\(1/\\sum(1/\\lambda_i)\\);max: maximum eigenvalue, \\(\\lambda_1\\)","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Box's M-test — boxM","text":"Box, G. E. P. (1949). general distribution theory class likelihood criteria. Biometrika, 36, 317-346. Morrison, D.F. (1976) Multivariate Statistical Methods.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Box's M-test — boxM","text":"default method taken biotools package, Anderson Rodrigo da Silva anderson.agro@hotmail.com Generalized Michael Friendly John Fox","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Box's M-test — boxM","text":"","code":"data(iris) # default method res <- boxM(iris[, 1:4], iris[, \"Species\"]) res #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: iris[, 1:4] #> Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16 #> summary(res) #> Summary for Box's M-test of Equality of Covariance Matrices #> #> Chi-Sq:\t 140.943 #> df:\t 20 #> p-value: < 2.2e-16 #> #> log of Covariance determinants: #> setosa versicolor virginica pooled #> -13.067360 -10.874325 -8.927058 -9.958539 #> #> Eigenvalues: #> setosa versicolor virginica pooled #> 1 0.236455690 0.487873944 0.69525484 0.44356592 #> 2 0.036918732 0.072384096 0.10655123 0.08618331 #> 3 0.026796399 0.054776085 0.05229543 0.05535235 #> 4 0.009033261 0.009790365 0.03426585 0.02236372 #> #> Statistics based on eigenvalues: #> setosa versicolor virginica pooled #> product 2.113088e-06 1.893828e-05 0.0001327479 4.732183e-05 #> sum 3.092041e-01 6.248245e-01 0.8883673469 6.074653e-01 #> precision 5.576122e-03 7.338788e-03 0.0169121236 1.304819e-02 #> max 2.364557e-01 4.878739e-01 0.6952548382 4.435659e-01 # visualize (what is done in the plot method) dets <- res$logDet ng <- length(res$logDet)-1 dotchart(dets, xlab = \"log determinant\") points(dets , 1:4, cex=c(rep(1.5, ng), 2.5), pch=c(rep(16, ng), 15), col= c(rep(\"blue\", ng), \"red\")) # formula method boxM( cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Y #> Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16 #> ### Skulls dat data(Skulls) # lm method skulls.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) boxM(skulls.mod) #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Y #> Chi-Sq (approx.) = 45.667, df = 40, p-value = 0.2483 #>"},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Coefficient plots for Multivariate Linear Models — coefplot","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"Displays confidence ellipses parameters multivariate linear model, given pair variables. , generalization confidenceEllipse.","code":""},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"","code":"coefplot(object, ...) # S3 method for mlm coefplot( object, variables = 1:2, parm = NULL, df = NULL, level = 0.95, intercept = FALSE, Scheffe = FALSE, bars = TRUE, fill = FALSE, fill.alpha = 0.2, labels = !add, label.pos = NULL, xlab, ylab, xlim = NULL, ylim = NULL, axes = TRUE, main = \"\", add = FALSE, lwd = 1, lty = 1, pch = 19, col = palette(), cex = 2, cex.label = 1.5, lty.zero = 3, col.zero = 1, pch.zero = \"+\", verbose = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"object multivariate linear model, fit lm(cbind(y1, y2, ...) ~ ...) ... parameters passed methods variables Response variables plot, given indices names parm Parameters plot, given indices names df Degrees freedom hypothesis tests level Confidence level confidence ellipses intercept logical. Include intercept? Scheffe TRUE, confidence intervals parameters Scheffe coverage, otherwise, individual coverage. bars Draw univariate confidence intervals variables? fill logical value vector. TRUE means confidence ellipses filled. fill.alpha Opacity confidence ellipses labels Labels confidence ellipses label.pos Positions labels ellipse. See label.ellipse xlab, ylab x, y axis labels xlim, ylim Axis limits axes Draw axes? main Plot title add logical. Add existing plot? lwd Line widths lty Line types pch Point symbols parameter estimates col Colors confidence ellipses, points, lines cex Character size points showing parameter estimates cex.label Character size ellipse labels lty.zero, col.zero, pch.zero Line type, color point symbol horizontal vertical lines 0, 0. verbose logical. Print parameter estimates variance-covariance parameter?","code":""},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"Returns invisibly list coordinates ellipses drawn","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"","code":"rohwer.mlm <- lm(cbind(SAT,PPVT,Raven)~n+s+ns, data=Rohwer) coefplot(rohwer.mlm, lwd=2, main=\"Bivariate coefficient plot for SAT and PPVT\", fill=TRUE) coefplot(rohwer.mlm, add=TRUE, Scheffe=TRUE, fill=TRUE) coefplot(rohwer.mlm, var=c(1,3)) mod1 <- lm(cbind(SAT,PPVT,Raven)~n+s+ns+na+ss, data=Rohwer) coefplot(mod1, lwd=2, fill=TRUE, parm=(1:5), main=\"Bivariate 68% coefficient plot for SAT and PPVT\", level=0.68)"},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate column deviations from central values — colDevs","title":"Calculate column deviations from central values — colDevs","text":"colDevs calculates column deviations data values central value (mean, median, etc.), possibly stratified grouping variable.","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate column deviations from central values — colDevs","text":"","code":"colDevs(x, group, center = mean, ...)"},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate column deviations from central values — colDevs","text":"x numeric data frame matrix. group factor (variable can coerced factor) indicating membership observation x one groups. missing, data treated single group. center function used center values (group group specified. function must take vector argument return scalar result. ... Arguments passed ","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate column deviations from central values — colDevs","text":"numeric matrix containing deviations centering function.","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate column deviations from central values — colDevs","text":"Conceptually, function similar column-wise sweep, group, allowing arbitrary center function. Non-numeric columns x removed, warning.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate column deviations from central values — colDevs","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate column deviations from central values — colDevs","text":"","code":"data(iris) Species <- iris$Species irisdev <- colDevs(iris[,1:4], Species, mean) irisdev <- colDevs(iris[,1:4], Species, median) # trimmed mean, using an anonymous function irisdev <- colDevs(iris[,1:4], Species, function(x) mean(x, trim=0.25)) # no grouping variable: deviations from column grand means # include all variables (but suppress warning for this doc) irisdev <- suppressWarnings( colDevs(iris) )"},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"function draws covariance ellipses one groups optionally pooled total sample. uses either classical product-moment covariance estimate, robust alternative, provided cov.rob. Provisions provided two variables, scatterplot matrix format.","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"","code":"covEllipses(x, ...) # S3 method for data.frame covEllipses( x, group, pooled = TRUE, method = c(\"classical\", \"mve\", \"mcd\"), ... ) # S3 method for matrix covEllipses( x, group, pooled = TRUE, method = c(\"classical\", \"mve\", \"mcd\"), ... ) # S3 method for formula covEllipses(x, data, ...) # S3 method for boxM covEllipses(x, ...) # S3 method for default covEllipses( x, means, df, labels = NULL, variables = 1:2, level = 0.68, segments = 60, center = FALSE, center.pch = \"+\", center.cex = 2, col = getOption(\"heplot.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"brown\", \"magenta\", \"darkgray\")), lty = 1, lwd = 2, fill = FALSE, fill.alpha = 0.3, label.pos = 0, xlab, ylab, vlabels, var.cex = 2, main = \"\", xlim, ylim, axes = TRUE, offset.axes, add = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"x generic argument. default method, list covariance matrices. data.frame matrix methods, numeric matrix two columns supplying variables analyzed. ... arguments passed default method plot, text, points group factor defining groups, vector length n=nrow(x) . missing, single covariance ellipse drawn. pooled Logical; TRUE, pooled covariance matrix total sample also computed plotted method covariance method used: classical product-moment (\"classical\"), minimum volume ellipsoid (\"mve\"), minimum covariance determinant (\"mcd\"). data formula method, data.frame evaluate. means default method, matrix means groups (followed grand means, pooled=TRUE). Rows groups, columns variables. assumed means column names corresponding variables covariance matrices. df default method, vector degrees freedom covariance matrices labels Either character vector labels groups, TRUE, indicating group labels taken names covariance matrices. Use labels=\"\" suppress group labels, e.g., add=TRUE variables indices names response variables plotted; defaults 1:2. two variables supplied, function plots pairwise covariance ellipses scatterplot matrix format. level equivalent coverage data ellipse normally-distributed errors, defaults 0.68. segments number line segments composing ellipse; defaults 40. center TRUE, covariance ellipses centered centroid. center.pch character use plotting centroid data; defaults \"+\". center.cex size character use plotting centroid data; defaults 2. col color vector colors use plotting ellipses --- recycled necessary single color can given, case used ellipses. convenience, default colors plots produced given session can changed assigning color vector via options(heplot.colors =c(...). Otherwise, default colors c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lty vector line types use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line type can given. Defaults 2:1. lwd vector line widths use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line width can given. Defaults 1:2. fill logical vector indicating whether ellipse filled . first value used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single fill value can given. Defaults FALSE backward compatibility. See Details . fill.alpha Alpha transparency filled ellipses, numeric scalar vector values within [0,1], 0 means fully transparent 1 means fully opaque. Defaults 0.3. label.pos Label position, vector integers (0:4) character strings (c(\"center\", \"bottom\", \"left\", \"top\", \"right\")) use labeling ellipses, recycled necessary. Values 1, 2, 3 4, respectively indicate positions , left , right max/min coordinates ellipse; value 0 specifies centroid ellipse object. default, label.pos=NULL uses correlation ellipse determine \"top\" (r>=0) \"bottom\" (r<0). xlab x-axis label; defaults name x variable. ylab y-axis label; defaults name y variable. vlabels Labels variables can also supplied argument, convenient length(variables) > 2. var.cex character size variable labels pairs plot main main plot label; defaults \"\", presently effect. xlim x-axis limits; absent, computed data. ylim y-axis limits; absent, computed data. axes Whether draw x, y axes; defaults TRUE offset.axes proportion extend axes direction computed data; optional. add TRUE, add current plot; default FALSE. argument effect two variables plotted.","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"Nothing returned. function used side-effect producing plot.","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"plot methods provide one way visualize possible heterogeneity within-group covariance matrices one-way MANOVA design. covariance matrices nearly equal, covariance ellipses shape. centered common mean, also overlap. can also used visualize difference classical robust covariance matrices.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"","code":"data(iris) # compare classical and robust covariance estimates covEllipses(iris[,1:4], iris$Species) covEllipses(iris[,1:4], iris$Species, fill=TRUE, method=\"mve\", add=TRUE, labels=\"\") # method for a boxM object x <- boxM(iris[, 1:4], iris[, \"Species\"]) x #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: iris[, 1:4] #> Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16 #> covEllipses(x, fill=c(rep(FALSE,3), TRUE) ) covEllipses(x, fill=c(rep(FALSE,3), TRUE), center=TRUE, label.pos=1:4 ) # method for a list of covariance matrices cov <- c(x$cov, pooled=list(x$pooled)) df <- c(table(iris$Species)-1, nrow(iris)-3) covEllipses(cov, x$means, df, label.pos=3, fill=c(rep(FALSE,3), TRUE)) covEllipses(cov, x$means, df, label.pos=3, fill=c(rep(FALSE,3), TRUE), center=TRUE) # scatterplot matrix version covEllipses(iris[,1:4], iris$Species, fill=c(rep(FALSE,3), TRUE), variables=1:4, fill.alpha=.1)"},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Chi Square Quantile-Quantile plots — cqplot","title":"Chi Square Quantile-Quantile plots — cqplot","text":"chi square quantile-quantile plots show relationship data-based values distributed \\(\\chi^2\\) corresponding quantiles \\(\\chi^2\\) distribution. multivariate analyses, often used assess multivariate normality check outliers, using Mahalanobis squared distances (\\(D^2\\)) observations centroid.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Chi Square Quantile-Quantile plots — cqplot","text":"","code":"cqplot(x, ...) # S3 method for mlm cqplot(x, ...) # S3 method for default cqplot( x, method = c(\"classical\", \"mcd\", \"mve\"), detrend = FALSE, pch = 19, col = palette()[1], cex = par(\"cex\"), ref.col = \"red\", ref.lwd = 2, conf = 0.95, env.col = \"gray\", env.lwd = 2, env.lty = 1, env.fill = TRUE, fill.alpha = 0.2, fill.color = trans.colors(ref.col, fill.alpha), labels = if (!is.null(rownames(x))) rownames(x) else 1:nrow(x), id.n, id.method = \"y\", id.cex = 1, id.col = palette()[1], xlab, ylab, main, what = deparse(substitute(x)), ylim, ... )"},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Chi Square Quantile-Quantile plots — cqplot","text":"x either numeric data frame matrix default method, object class \"mlm\" representing multivariate linear model. latter case, residuals model plotted. ... arguments passed methods method estimation method used center covariance, one : \"classical\" (product-moment), \"mcd\" (minimum covariance determinant), \"mve\" (minimum volume ellipsoid). detrend logical; FALSE, plot shows values \\(D^2\\) vs. \\(\\chi^2\\). TRUE, ordinate shows values \\(D^2 - \\chi^2\\) pch plot symbol points Can vector length equal number rows x. col color points; default first entry current color palette (see palette par. cex character symbol size points. Can vector length equal number rows x. ref.col Color reference line ref.lwd Line width reference line conf confidence coverage approximate confidence envelope env.col line color boundary confidence envelope env.lwd line width confidence envelope env.lty line type confidence envelope env.fill logical; confidence envelope filled? fill.alpha transparency value fill.color fill.color color used fill confidence envelope labels vector text strings used identify points, defaults rownames(x) observation numbers rownames(x) NULL id.n number points labeled. id.n=0, default, point identification occurs. id.method point identification method. default id.method=\"y\" identify id.n points largest value abs(y-mean(y)). See showLabels options. id.cex size text point labels id.col color point labels xlab label horizontal (theoretical quantiles) axis ylab label vertical (empirical quantiles) axis main plot title name object plotted; used construction main specified. ylim limits vertical axis. specified, range confidence envelope used.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Chi Square Quantile-Quantile plots — cqplot","text":"Returns invisibly vector squared Mahalanobis distances corresponding rows x residuals model.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Chi Square Quantile-Quantile plots — cqplot","text":"cqplot general version similar functions packages produce chi square QQ plots. allows classical Mahalanobis squared distances well robust estimates based MVE MCD; provides approximate confidence (concentration) envelope around line unit slope, detrended version, reference line horizontal, ability identify label unusual points, graphical features. method \"mlm\" objects applies residuals model. calculation confidence envelope follows used SAS program, http://www.datavis.ca/sasmac/cqplot.html comes Chambers et al. (1983), Section 6.8. essential formula $$ SE ( z_{()} ) = \\frac{\\hat{\\delta}}{g ( q_i)) \\times \\sqrt{ frac{ p_i (1-p_i} }{n}} $$ \\(z_{()}\\) -th order value \\(D^2\\), \\(\\hat{\\delta}\\) estimate slope reference line obtained corresponding quartiles \\(g(q_i)\\) density chi square distribution quantile \\(q_i\\). Note confidence envelope applies \\(D^2\\) computed using classical estimates location scatter. car::qqPlot() function provides simulated envelopes, univariate measure. Oldford (2016) provides general theory methods QQ plots.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Chi Square Quantile-Quantile plots — cqplot","text":"J. Chambers, W. S. Cleveland, B. Kleiner, P. . Tukey (1983). Graphical methods data analysis, Wadsworth. R. W. Oldford (2016), \"Self calibrating quantile-quantile plots\", American Statistician, 70, 74-90.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Chi Square Quantile-Quantile plots — cqplot","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Chi Square Quantile-Quantile plots — cqplot","text":"","code":"cqplot(iris[, 1:4]) iris.mod <- lm(as.matrix(iris[,1:4]) ~ Species, data=iris) cqplot(iris.mod, id.n=3) # compare with car::qqPlot car::qqPlot(Mahalanobis(iris[, 1:4]), dist=\"chisq\", df=4) #> [1] 132 135 # Adopted data Adopted.mod <- lm(cbind(Age2IQ, Age4IQ, Age8IQ, Age13IQ) ~ AMED + BMIQ, data=Adopted) cqplot(Adopted.mod, id.n=3) cqplot(Adopted.mod, id.n=3, method=\"mve\") # Sake data Sake.mod <- lm(cbind(taste, smell) ~ ., data=Sake) cqplot(Sake.mod) cqplot(Sake.mod, method=\"mve\", id.n=2) # SocialCog data -- one extreme outlier data(SocialCog) SC.mlm <- lm(cbind(MgeEmotions,ToM, ExtBias, PersBias) ~ Dx, data=SocialCog) cqplot(SC.mlm, id.n=1) # data frame example: stackloss data data(stackloss) cqplot(stackloss[, 1:3], id.n=4) # very strange cqplot(stackloss[, 1:3], id.n=4, detrend=TRUE) cqplot(stackloss[, 1:3], id.n=4, method=\"mve\") cqplot(stackloss[, 1:3], id.n=4, method=\"mcd\")"},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw a 3D cross in an rgl scene — cross3d","title":"Draw a 3D cross in an rgl scene — cross3d","text":"Draws 3D cross axis vectors rgl scene.","code":""},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw a 3D cross in an rgl scene — cross3d","text":"","code":"cross3d(centre = rep(0, 3), scale = rep(1, 3), ...)"},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw a 3D cross in an rgl scene — cross3d","text":"centre scalar vector length 3, giving centre 3D cross scale scalar vector length 3, giving lengths arms 3D cross ... arguments, passed segments3d","code":""},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw a 3D cross in an rgl scene — cross3d","text":"Used side-effect, returns (invisibly) 6 3 matrix containing end-points three axes, pairs.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw a 3D cross in an rgl scene — cross3d","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":null,"dir":"Reference","previous_headings":"","what":"Diabetes Dataset — Diabetes","title":"Diabetes Dataset — Diabetes","text":"Reaven Miller (1979) examined relationship among blood chemistry measures glucose tolerance insulin 145 nonobese adults. used PRIM9 system Stanford Linear Accelerator Center visualize data 3D, discovered peculiar pattern looked like large blob two wings different directions.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Diabetes Dataset — Diabetes","text":"data frame 145 observations following 6 variables. relwt relative weight, expressed ratio actual weight expected weight, given person's height, numeric vector glufast fasting plasma glucose level, numeric vector glutest test plasma glucose level, measure glucose intolerance, numeric vector instest plasma insulin test, measure insulin response oral glucose, numeric vector sspg steady state plasma glucose, measure insulin resistance, numeric vector group diagnostic group, factor levels Normal Chemical_Diabetic Overt_Diabetic","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Diabetes Dataset — Diabetes","text":"Andrews, D. F. & Herzberg, . M. (1985). Data: Collection Problems Many Fields Student Research Worker, Springer-Verlag, Ch. 36. Friendly, M. (1991). SAS System Statistical Graphics, Cary, NC: SAS Institute.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Diabetes Dataset — Diabetes","text":"analysis, subjects classified subclinical (chemical) diabetics, overt diabetics normals. study influential defining stages development Type 2 diabetes. Overt diabetes advanced stage, characterized elevated fasting blood glucose concentration classical symptoms. Preceding overt diabetes latent chemical diabetic stage, symptoms diabetes demonstrable abnormality oral intravenous glucose tolerance. glutest defined \"area plasma glucose curve three hour oral glucose tolerance test.\" Reaven & Miller refer variable \"Glucose area\". instest defined \"area plasma insulin curve\", referred paper \"Insulin area\". study influential defining stages development Type 2 diabetes. Overt diabetes advanced stage, characterized elevated fasting blood glucose concentration classical symptoms. Preceding overt diabetes latent chemical diabetic stage, symptoms diabetes demonstrable abnormality oral intravenous glucose tolerance.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Diabetes Dataset — Diabetes","text":"Reaven, G. M. Miller, R. G. (1979). attempt define nature chemical diabetes using multidimensional analysis. Diabetologia, 16, 17-24.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Diabetes Dataset — Diabetes","text":"","code":"data(Diabetes) col <- c(\"blue\", \"red\", \"darkgreen\")[Diabetes$group] pch <- c(16,15,17)[Diabetes$group] # a perplexing plot, similar to Fig 2, but with a loess smooth plot(instest ~ glutest, data=Diabetes, pch=16, cex.lab=1.25, xlab=\"Glucose area (glutest)\", ylab=\"Insulin area (instest)\") lines( loess.smooth(Diabetes$glutest, Diabetes$instest), col=\"blue\", lwd=2) # scatterplot matrix, colored by group plot(Diabetes[,1:5], col=col, pch=pch) # covariance ellipses covEllipses(Diabetes[,2:5], Diabetes$group, fill=TRUE, pooled=FALSE, col=col) covEllipses(Diabetes[,2:5], Diabetes$group, fill=TRUE, pooled=FALSE, col=col, variables=1:4) # Box's M test diab.boxm <- boxM(Diabetes[,2:5], Diabetes$group) diab.boxm #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Diabetes[, 2:5] #> Chi-Sq (approx.) = 382.84, df = 20, p-value < 2.2e-16 #> plot(diab.boxm) # heplots diab.mlm <- lm(cbind(glufast, glutest, instest, sspg) ~ group, data=Diabetes) heplot(diab.mlm) pairs(diab.mlm, fill=TRUE, fill.alpha=0.1)"},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw axes of a 3D ellipsoid — ellipse3d.axes","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"function draw major axes 3D ellipsoid correlation, covariance sums squares cross products matrix.","code":""},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"","code":"ellipse3d.axes( x, centre = c(0, 0, 0), scale = c(1, 1, 1), level = 0.95, t = sqrt(qchisq(level, 3)), which = 1:3, labels = TRUE, label.ends = c(2, 4, 6), ... )"},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"x square positive definite matrix least 3x3 size. treated correlation covariance multivariate normal distribution. centre center ellipse scale x correlation matrix, standard deviations parameter can given scale parameter. defaults c(1, 1, 1), rescaling done. level confidence level simultaneous confidence region. default 0.95, 95% region. used control size ellipsoid. t size ellipsoid may also controlled specifying value t-statistic boundary. parameter selects variables object plotted. default first 3. labels Either logical value, character string, character vector length 3. TRUE, default, axes labeled PC1, PC2, PC3. single character string, digits 1, 2, 3 pasted end. label.ends vector length 3 indicating ends axes labeled, corresponding selection rows 6 x 3 matrix axes end points. Default: c(2,4,6). ... arguments passed segments3d text3d.","code":""},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"Returns 6 x 3 matrix containing end points three axis lines pairs rows.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"","code":"data(iris) iris3 <- iris[,1:3] cov <- cov(iris3) mu <- colMeans(iris3) col <-c(\"blue\", \"green\", \"red\")[iris$Species] library(rgl) #> #> Attaching package: 'rgl' #> The following objects are masked from 'package:heplots': #> #> arrow3d, bbox3d plot3d(iris3, type=\"s\", size=0.4, col=col, cex=2, box=FALSE, aspect=\"iso\") plot3d( ellipse3d(cov, centre=mu, level=0.68), col=\"gray\", alpha=0.2, add = TRUE) {\"x\":{\"material\":{\"color\":\"#000000\",\"alpha\":1,\"lit\":true,\"ambient\":\"#000000\",\"specular\":\"#FFFFFF\",\"emission\":\"#000000\",\"shininess\":50,\"smooth\":true,\"front\":\"filled\",\"back\":\"filled\",\"size\":3,\"lwd\":1,\"fog\":true,\"point_antialias\":false,\"line_antialias\":false,\"texture\":null,\"textype\":\"rgb\",\"texmipmap\":false,\"texminfilter\":\"linear\",\"texmagfilter\":\"linear\",\"texenvmap\":false,\"depth_mask\":true,\"depth_test\":\"less\",\"isTransparent\":false,\"polygon_offset\":[0,0],\"margin\":\"\",\"floating\":false,\"tag\":\"\",\"blend\":[\"src_alpha\",\"one_minus_src_alpha\"]},\"rootSubscene\":7,\"objects\":{\"44\":{\"id\":44,\"type\":\"spheres\",\"material\":{},\"vertices\":\"0\",\"colors\":\"1\",\"radii\":[[0.0281609129160643]],\"centers\":\"2\",\"ignoreExtent\":false,\"fastTransparency\":true,\"flags\":32771},\"46\":{\"id\":46,\"type\":\"text\",\"material\":{\"lit\":false,\"margin\":0,\"floating\":true,\"edge\":[0,1,1]},\"vertices\":\"3\",\"colors\":\"4\",\"texts\":[[\"Sepal.Length\"]],\"cex\":[[1]],\"adj\":[[0.5,0.5,0.5]],\"centers\":\"5\",\"family\":[[\"sans\"]],\"font\":[[1]],\"ignoreExtent\":true,\"flags\":33808},\"47\":{\"id\":47,\"type\":\"text\",\"material\":{\"lit\":false,\"margin\":1,\"floating\":true,\"edge\":[1,1,1]},\"vertices\":\"6\",\"colors\":\"7\",\"texts\":[[\"Sepal.Width\"]],\"cex\":[[1]],\"adj\":[[0.5,0.5,0.5]],\"centers\":\"8\",\"family\":[[\"sans\"]],\"font\":[[1]],\"ignoreExtent\":true,\"flags\":33808},\"48\":{\"id\":48,\"type\":\"text\",\"material\":{\"lit\":false,\"margin\":2,\"floating\":true,\"edge\":[1,1,1]},\"vertices\":\"9\",\"colors\":\"10\",\"texts\":[[\"Petal.Length\"]],\"cex\":[[1]],\"adj\":[[0.5,0.5,0.5]],\"centers\":\"11\",\"family\":[[\"sans\"]],\"font\":[[1]],\"ignoreExtent\":true,\"flags\":33808},\"49\":{\"id\":49,\"type\":\"quads\",\"material\":{\"alpha\":0.200000002980232,\"isTransparent\":true},\"vertices\":\"12\",\"colors\":\"14\",\"centers\":\"15\",\"normals\":\"13\",\"ignoreExtent\":false,\"flags\":32811},\"11\":{\"id\":11,\"type\":\"light\",\"vertices\":[[0,0,1]],\"colors\":[[1,1,1,1],[1,1,1,1],[1,1,1,1]],\"viewpoint\":true,\"finite\":false},\"15\":{\"id\":15,\"type\":\"background\",\"material\":{\"lit\":false,\"back\":\"lines\"},\"colors\":\"16\",\"centers\":\"17\",\"sphere\":false,\"fogtype\":\"none\",\"fogscale\":1,\"flags\":32768},\"45\":{\"id\":45,\"type\":\"bboxdeco\",\"material\":{\"front\":\"lines\",\"back\":\"lines\"},\"vertices\":\"18\",\"colors\":\"19\",\"axes\":{\"mode\":[\"pretty\",\"pretty\",\"pretty\"],\"step\":[1,0.5,1],\"nticks\":[5,5,5],\"marklen\":[15,15,15],\"expand\":[1.02999997138977,1.02999997138977,1.02999997138977]},\"draw_front\":false,\"flags\":32769},\"7\":{\"id\":7,\"type\":\"subscene\",\"par3d\":{\"antialias\":8,\"FOV\":30,\"ignoreExtent\":false,\"listeners\":7,\"mouseMode\":{\"none\":\"none\",\"left\":\"trackball\",\"right\":\"zoom\",\"middle\":\"fov\",\"wheel\":\"pull\"},\"observer\":[0,0,19.4337673187256],\"modelMatrix\":[[1,0,0,-6.09999990463257],[0,0.965925812721252,-0.258819043636322,-2.11832070350647],[0,0.258819043636322,0.965925812721252,-23.8919372558594],[0,0,0,1]],\"projMatrix\":[[3.73205089569092,0,0,0],[0,3.73205089569092,0,0],[0,0,-3.86370325088501,-70.0564804077148],[0,0,-1,0]],\"skipRedraw\":false,\"userMatrix\":[[1,0,0,0],[0,0.965925812721252,-0.258819043636322,0],[0,0.258819043636322,0.965925812721252,0],[0,0,0,1]],\"userProjection\":[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],\"scale\":[1,1,1],\"viewport\":{\"x\":0,\"y\":0,\"width\":1,\"height\":1},\"zoom\":1,\"bbox\":[4.2718391418457,7.92816114425659,1.97183907032013,4.42816114425659,0.453815817832947,7.06218433380127],\"windowRect\":[164,187,420,443],\"family\":\"sans\",\"font\":1,\"cex\":1,\"useFreeType\":false,\"fontname\":\"TT Arial\",\"maxClipPlanes\":8,\"glVersion\":4.6,\"activeSubscene\":0},\"embeddings\":{\"viewport\":\"replace\",\"projection\":\"replace\",\"model\":\"replace\",\"mouse\":\"replace\"},\"objects\":[15,45,44,46,47,48,49,11],\"subscenes\":[],\"flags\":34107}},\"crosstalk\":{\"key\":[],\"group\":[],\"id\":[],\"options\":[]},\"width\":700,\"height\":700,\"buffer\":{\"accessors\":[{\"bufferView\":0,\"componentType\":5126,\"count\":150,\"type\":\"VEC3\"},{\"bufferView\":1,\"componentType\":5121,\"count\":150,\"type\":\"VEC4\",\"normalized\":true},{\"bufferView\":2,\"componentType\":5126,\"count\":150,\"type\":\"VEC3\"},{\"bufferView\":3,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":4,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":5,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":6,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":7,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":8,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":9,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":10,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":11,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":12,\"componentType\":5126,\"count\":1536,\"type\":\"VEC3\"},{\"bufferView\":13,\"componentType\":5126,\"count\":1536,\"type\":\"VEC3\"},{\"bufferView\":14,\"componentType\":5126,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":15,\"componentType\":5126,\"count\":384,\"type\":\"VEC3\"},{\"bufferView\":16,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":17,\"componentType\":5121,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":18,\"componentType\":5126,\"count\":15,\"type\":\"VEC3\"},{\"bufferView\":19,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"}],\"bufferViews\":[{\"buffer\":0,\"byteLength\":1800,\"byteOffset\":0},{\"buffer\":0,\"byteLength\":600,\"byteOffset\":1800},{\"buffer\":0,\"byteLength\":1800,\"byteOffset\":2400},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4200},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":4212},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4216},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4228},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":4240},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4244},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4256},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":4268},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4272},{\"buffer\":0,\"byteLength\":18432,\"byteOffset\":4284},{\"buffer\":0,\"byteLength\":18432,\"byteOffset\":22716},{\"buffer\":0,\"byteLength\":16,\"byteOffset\":41148},{\"buffer\":0,\"byteLength\":4608,\"byteOffset\":41164},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":45772},{\"buffer\":0,\"byteLength\":3,\"byteOffset\":45776},{\"buffer\":0,\"byteLength\":180,\"byteOffset\":45780},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":45960}],\"buffers\":[{\"byteLength\":45964,\"bytes\":\"MzOjQAAAYEAzM7M/zcycQAAAQEAzM7M/ZmaWQM3MTEBmZqY/MzOTQGZmRkAAAMA/AACgQGZm\\nZkAzM7M/zcysQJqZeUCamdk/MzOTQJqZWUAzM7M/AACgQJqZWUAAAMA/zcyMQJqZOUAzM7M/\\nzcycQGZmRkAAAMA/zcysQM3MbEAAAMA/mpmZQJqZWUDNzMw/mpmZQAAAQEAzM7M/mpmJQAAA\\nQEDNzIw/mpm5QAAAgECamZk/Zma2QM3MjEAAAMA/zcysQJqZeUBmZqY/MzOjQAAAYEAzM7M/\\nZma2QDMzc0Camdk/MzOjQDMzc0AAAMA/zcysQJqZWUCamdk/MzOjQM3MbEAAAMA/MzOTQGZm\\nZkAAAIA/MzOjQDMzU0Camdk/mpmZQJqZWUAzM/M/AACgQAAAQEDNzMw/AACgQJqZWUDNzMw/\\nZmamQAAAYEAAAMA/ZmamQJqZWUAzM7M/ZmaWQM3MTEDNzMw/mpmZQGZmRkDNzMw/zcysQJqZ\\nWUAAAMA/ZmamQDMzg0AAAMA/AACwQGZmhkAzM7M/zcycQGZmRkAAAMA/AACgQM3MTECamZk/\\nAACwQAAAYEBmZqY/zcycQGZmZkAzM7M/zcyMQAAAQEBmZqY/MzOjQJqZWUAAAMA/AACgQAAA\\nYEBmZqY/AACQQDMzE0BmZqY/zcyMQM3MTEBmZqY/AACgQAAAYEDNzMw/MzOjQDMzc0AzM/M/\\nmpmZQAAAQEAzM7M/MzOjQDMzc0DNzMw/MzOTQM3MTEAzM7M/mpmpQM3MbEAAAMA/AACgQDMz\\nU0AzM7M/AADgQM3MTEBmZpZAzczMQM3MTEAAAJBAzczcQGZmRkDNzJxAAACwQDMzE0AAAIBA\\nAADQQDMzM0AzM5NAZma2QDMzM0AAAJBAmpnJQDMzU0BmZpZAzcycQJqZGUAzM1NAMzPTQJqZ\\nOUAzM5NAZmamQM3MLECamXlAAACgQAAAAEAAAGBAzcy8QAAAQEBmZoZAAADAQM3MDEAAAIBA\\nMzPDQJqZOUBmZpZAMzOzQJqZOUBmZmZAZmbWQGZmRkDNzIxAMzOzQAAAQEAAAJBAmpm5QM3M\\nLEAzM4NAZmbGQM3MDEAAAJBAMzOzQAAAIECamXlAzcy8QM3MTECamZlAMzPDQDMzM0AAAIBA\\nmpnJQAAAIEDNzJxAMzPDQDMzM0BmZpZAzczMQJqZOUCamYlAMzPTQAAAQEDNzIxAmpnZQDMz\\nM0CamZlAZmbWQAAAQEAAAKBAAADAQJqZOUAAAJBAZma2QGZmJkAAAGBAAACwQJqZGUAzM3NA\\nAACwQJqZGUDNzGxAmpm5QM3MLECamXlAAADAQM3MLEAzM6NAzcysQAAAQEAAAJBAAADAQJqZ\\nWUAAAJBAZmbWQGZmRkBmZpZAmpnJQDMzE0DNzIxAMzOzQAAAQEAzM4NAAACwQAAAIEAAAIBA\\nAACwQGZmJkDNzIxAMzPDQAAAQEAzM5NAmpm5QGZmJkAAAIBAAACgQDMzE0AzM1NAMzOzQM3M\\nLEBmZoZAZma2QAAAQEBmZoZAZma2QJqZOUBmZoZAZmbGQJqZOUCamYlAMzOjQAAAIEAAAEBA\\nZma2QDMzM0AzM4NAmpnJQDMzU0AAAMBAmpm5QM3MLEAzM6NAMzPjQAAAQEDNzLxAmpnJQJqZ\\nOUAzM7NAAADQQAAAQECamblAMzPzQAAAQEAzM9NAzcycQAAAIEAAAJBAmpnpQJqZOUCamclA\\nZmbWQAAAIECamblAZmbmQGZmZkAzM8NAAADQQM3MTEAzM6NAzczMQM3MLECamalAmpnZQAAA\\nQEAAALBAZma2QAAAIEAAAKBAmpm5QDMzM0AzM6NAzczMQM3MTECamalAAADQQAAAQEAAALBA\\nZmb2QDMzc0BmZtZAZmb2QGZmJkDNzNxAAADAQM3MDEAAAKBAzczcQM3MTEBmZrZAMzOzQDMz\\nM0DNzJxAZmb2QDMzM0BmZtZAmpnJQM3MLEDNzJxAZmbWQDMzU0BmZrZAZmbmQM3MTEAAAMBA\\nZmbGQDMzM0CamZlAMzPDQAAAQEDNzJxAzczMQDMzM0AzM7NAZmbmQAAAQECamblAzczsQDMz\\nM0AzM8NAzcz8QDMzc0DNzMxAzczMQDMzM0AzM7NAmpnJQDMzM0AzM6NAMzPDQGZmJkAzM7NA\\nZmb2QAAAQEAzM8NAmpnJQJqZWUAzM7NAzczMQGZmRkAAALBAAADAQAAAQECamZlAzczcQGZm\\nRkDNzKxAZmbWQGZmRkAzM7NAzczcQGZmRkAzM6NAmpm5QM3MLEAzM6NAmpnZQM3MTEDNzLxA\\nZmbWQDMzU0BmZrZAZmbWQAAAQEBmZqZAmpnJQAAAIEAAAKBAAADQQAAAQEBmZqZAZmbGQJqZ\\nWUDNzKxAzcy8QAAAQEAzM6NAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//\\nAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA\\n//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//\\nAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA\\n//8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/\\nAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/\\nAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/\\nAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A//8AAP//AAD//wAA//8A\\nAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/\\n/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8A\\nAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/\\n/wAA//8AAP//AAD//wAA//8AAP//AAD/MzOjQAAAYEAzM7M/zcycQAAAQEAzM7M/ZmaWQM3M\\nTEBmZqY/MzOTQGZmRkAAAMA/AACgQGZmZkAzM7M/zcysQJqZeUCamdk/MzOTQJqZWUAzM7M/\\nAACgQJqZWUAAAMA/zcyMQJqZOUAzM7M/zcycQGZmRkAAAMA/zcysQM3MbEAAAMA/mpmZQJqZ\\nWUDNzMw/mpmZQAAAQEAzM7M/mpmJQAAAQEDNzIw/mpm5QAAAgECamZk/Zma2QM3MjEAAAMA/\\nzcysQJqZeUBmZqY/MzOjQAAAYEAzM7M/Zma2QDMzc0Camdk/MzOjQDMzc0AAAMA/zcysQJqZ\\nWUCamdk/MzOjQM3MbEAAAMA/MzOTQGZmZkAAAIA/MzOjQDMzU0Camdk/mpmZQJqZWUAzM/M/\\nAACgQAAAQEDNzMw/AACgQJqZWUDNzMw/ZmamQAAAYEAAAMA/ZmamQJqZWUAzM7M/ZmaWQM3M\\nTEDNzMw/mpmZQGZmRkDNzMw/zcysQJqZWUAAAMA/ZmamQDMzg0AAAMA/AACwQGZmhkAzM7M/\\nzcycQGZmRkAAAMA/AACgQM3MTECamZk/AACwQAAAYEBmZqY/zcycQGZmZkAzM7M/zcyMQAAA\\nQEBmZqY/MzOjQJqZWUAAAMA/AACgQAAAYEBmZqY/AACQQDMzE0BmZqY/zcyMQM3MTEBmZqY/\\nAACgQAAAYEDNzMw/MzOjQDMzc0AzM/M/mpmZQAAAQEAzM7M/MzOjQDMzc0DNzMw/MzOTQM3M\\nTEAzM7M/mpmpQM3MbEAAAMA/AACgQDMzU0AzM7M/AADgQM3MTEBmZpZAzczMQM3MTEAAAJBA\\nzczcQGZmRkDNzJxAAACwQDMzE0AAAIBAAADQQDMzM0AzM5NAZma2QDMzM0AAAJBAmpnJQDMz\\nU0BmZpZAzcycQJqZGUAzM1NAMzPTQJqZOUAzM5NAZmamQM3MLECamXlAAACgQAAAAEAAAGBA\\nzcy8QAAAQEBmZoZAAADAQM3MDEAAAIBAMzPDQJqZOUBmZpZAMzOzQJqZOUBmZmZAZmbWQGZm\\nRkDNzIxAMzOzQAAAQEAAAJBAmpm5QM3MLEAzM4NAZmbGQM3MDEAAAJBAMzOzQAAAIECamXlA\\nzcy8QM3MTECamZlAMzPDQDMzM0AAAIBAmpnJQAAAIEDNzJxAMzPDQDMzM0BmZpZAzczMQJqZ\\nOUCamYlAMzPTQAAAQEDNzIxAmpnZQDMzM0CamZlAZmbWQAAAQEAAAKBAAADAQJqZOUAAAJBA\\nZma2QGZmJkAAAGBAAACwQJqZGUAzM3NAAACwQJqZGUDNzGxAmpm5QM3MLECamXlAAADAQM3M\\nLEAzM6NAzcysQAAAQEAAAJBAAADAQJqZWUAAAJBAZmbWQGZmRkBmZpZAmpnJQDMzE0DNzIxA\\nMzOzQAAAQEAzM4NAAACwQAAAIEAAAIBAAACwQGZmJkDNzIxAMzPDQAAAQEAzM5NAmpm5QGZm\\nJkAAAIBAAACgQDMzE0AzM1NAMzOzQM3MLEBmZoZAZma2QAAAQEBmZoZAZma2QJqZOUBmZoZA\\nZmbGQJqZOUCamYlAMzOjQAAAIEAAAEBAZma2QDMzM0AzM4NAmpnJQDMzU0AAAMBAmpm5QM3M\\nLEAzM6NAMzPjQAAAQEDNzLxAmpnJQJqZOUAzM7NAAADQQAAAQECamblAMzPzQAAAQEAzM9NA\\n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\\nb0B16yFAy7GZQDaYakDJ5rw/JLabQIA8aEBnuuY/8LSjQOdabUDvJApA+ZSiQH+HcECIBu4/\\nlvy6QK1YaEBz03VAlvy6QIuXb0B3pV5A3C2yQJ8tcEAheT1AyrOyQFrbaECh9VZAlvy6QG4q\\ndEBg40pAC6+xQCdvdED5GClA3C2yQJ8tcEAheT1Alvy6QIuXb0B3pV5A2xKqQOE0c0D+Cw9A\\nJLqqQGqFb0B16yFA3C2yQJ8tcEAheT1AC6+xQCdvdED5GClANFarQDhpaEDRYjtAyrOyQFrb\\naECh9VZA3C2yQJ8tcEAheT1AJLqqQGqFb0B16yFAlvy6QNyJd0AmFCtAJg+yQAHMd0CXBwtA\\nadCxQJ/edkBfoBlAlvy6QCOxdkDEDjpAN2OpQA9YdkAwXNw/Z6SpQPNtdUAMef0/adCxQJ/e\\ndkBfoBlAJg+yQAHMd0CXBwtA2xKqQOE0c0D+Cw9AC6+xQCdvdED5GClAadCxQJ/edkBfoBlA\\nZ6SpQPNtdUAMef0/lvy6QG4qdEBg40pAlvy6QCOxdkDEDjpAadCxQJ/edkBfoBlAC6+xQCdv\\ndED5GClATOeXQEmwbEA7EHQ/YmWYQN4cbECbxJg/5E+hQA5EckATPsk/dZigQL/bckBqP6c/\\ny7GZQDaYakDJ5rw/+ZSiQH+HcECIBu4/5E+hQA5EckATPsk/YmWYQN4cbECbxJg/2xKqQOE0\\nc0D+Cw9AZ6SpQPNtdUAMef0/5E+hQA5EckATPsk/+ZSiQH+HcECIBu4/N2OpQA9YdkAwXNw/\\ndZigQL/bckBqP6c/5E+hQA5EckATPsk/Z6SpQPNtdUAMef0/x6HXQBMSXkAnqa9ACUPaQJd+\\nYEB+7a1APETSQKiXZ0CumZtApXfRQD+VYUBIZ6RAYUfcQHxaYkDG96pAM2TTQPd8akAsN5ZA\\nPETSQKiXZ0CumZtACUPaQJd+YEB+7a1AUubLQBkFb0AIY4ZACD/LQAx/a0D7ZI1APETSQKiX\\nZ0CumZtAM2TTQPd8akAsN5ZA+KLKQHuJZECY3JdApXfRQD+VYUBIZ6RAPETSQKiXZ0CumZtA\\nCD/LQAx/a0D7ZI1A4BHeQBEBZEBG6KBAt2DVQFdTbEB754tASanUQA7pa0BbvZFAy5PdQNyM\\nY0DCwqZA9ZXMQM38cUDSAXFAxVTMQNUicUCqq39ASanUQA7pa0BbvZFAt2DVQFdTbEB754tA\\n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\\nb3npvlgKWD/QtJC+08FZvr0AdT9n1Em+IbL8vTe1ET4ta3u/GlM6v4rGDz/QeMm+b3npvlgK\\nWD/QtJC+8vllO2n8KT9qaj+/PNNLvyzkGj8AAAAAqTccv4DPSj8AAAAAb3npvlgKWD/QtJC+\\nGlM6v4rGDz/QeMm+uqOUPjLoZr/eo6O+NUi0PofYYb+mDaC+U25ePvg/cb/7Q4K+mTwiPniC\\ncr9vjI6+mXLOPlvQXL++fJy+ZemLPu4Hbr8ydXy+U25ePvg/cb/7Q4K+NUi0PofYYb+mDaC+\\nD5ATPpCveL9ZGUG+hcSaPbFKer86oUi+U25ePvg/cb/7Q4K+ZemLPu4Hbr8ydXy+aK92vHXc\\neb/oXl6+mTwiPniCcr9vjI6+U25ePvg/cb/7Q4K+hcSaPbFKer86oUi+nvj6PmNSUr89DZW+\\n4U3IPvFvY79M23W+YuCpPslLab9Ln3m+jhnlPnjLV78q7pi+QD+NPta3cb/0Mzi+Y15SPqcW\\ndr+XEDy+YuCpPslLab9Ln3m+4U3IPvFvY79M23W+D5ATPpCveL9ZGUG+ZemLPu4Hbr8ydXy+\\nYuCpPslLab9Ln3m+Y15SPqcWdr+XEDy+mXLOPlvQXL++fJy+jhnlPnjLV78q7pi+YuCpPslL\\nab9Ln3m+ZemLPu4Hbr8ydXy+A/98vd6Cf78AAAAABVEfvvbhfL8AAAAA1A1pPfAMfr+KvN+9\\ndQ0IPjtSfL86otW9Me2AvjjAd78AAAAATlRivFRDfr/qe+y91A1pPfAMfr+KvN+9BVEfvvbh\\nfL8AAAAAD5ATPpCveL9ZGUG+Y15SPqcWdr+XEDy+1A1pPfAMfr+KvN+9TlRivFRDfr/qe+y9\\nQD+NPta3cb/0Mzi+dQ0IPjtSfL86otW91A1pPfAMfr+KvN+9Y15SPqcWdr+XEDy+LjMBv2EB\\nXb8AAAAA2Kxxvsqadr/H8gK+cZzevbmrfL+aivK9zyC6viZ8br8AAAAAaK92vHXceb/oXl6+\\nhcSaPbFKer86oUi+cZzevbmrfL+aivK92Kxxvsqadr/H8gK+D5ATPpCveL9ZGUG+TlRivFRD\\nfr/qe+y9cZzevbmrfL+aivK9hcSaPbFKer86oUi+Me2AvjjAd78AAAAAzyC6viZ8br8AAAAA\\ncZzevbmrfL+aivK9TlRivFRDfr/qe+y9jXwiP6h2Or/KJIS+8gkcP222Qr8I6GS+xPQHP6tq\\n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\\nwH8AAOBAAAAAAQ==\"}]},\"context\":{\"shiny\":false,\"rmarkdown\":null},\"vertexShader\":\"#line 2 1\\n// File 1 is the vertex shader\\n#ifdef GL_ES\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nprecision highp float;\\n#else\\nprecision mediump float;\\n#endif\\n#endif\\n\\nattribute vec3 aPos;\\nattribute vec4 aCol;\\nuniform mat4 mvMatrix;\\nuniform mat4 prMatrix;\\nvarying vec4 vCol;\\nvarying vec4 vPosition;\\n\\n#ifdef NEEDS_VNORMAL\\nattribute vec3 aNorm;\\nuniform mat4 normMatrix;\\nvarying vec4 vNormal;\\n#endif\\n\\n#if defined(HAS_TEXTURE) || defined (IS_TEXT)\\nattribute vec2 aTexcoord;\\nvarying vec2 vTexcoord;\\n#endif\\n\\n#ifdef FIXED_SIZE\\nuniform vec3 textScale;\\n#endif\\n\\n#ifdef FIXED_QUADS\\nattribute vec3 aOfs;\\n#endif\\n\\n#ifdef IS_TWOSIDED\\n#ifdef HAS_NORMALS\\nvarying float normz;\\nuniform mat4 invPrMatrix;\\n#else\\nattribute vec3 aPos1;\\nattribute vec3 aPos2;\\nvarying float normz;\\n#endif\\n#endif // IS_TWOSIDED\\n\\n#ifdef FAT_LINES\\nattribute vec3 aNext;\\nattribute vec2 aPoint;\\nvarying vec2 vPoint;\\nvarying float vLength;\\nuniform float uAspect;\\nuniform float uLwd;\\n#endif\\n\\n\\nvoid main(void) {\\n \\n#ifndef IS_BRUSH\\n#if defined(NCLIPPLANES) || !defined(FIXED_QUADS) || defined(HAS_FOG)\\n vPosition = mvMatrix * vec4(aPos, 1.);\\n#endif\\n \\n#ifndef FIXED_QUADS\\n gl_Position = prMatrix * vPosition;\\n#endif\\n#endif // !IS_BRUSH\\n \\n#ifdef IS_POINTS\\n gl_PointSize = POINTSIZE;\\n#endif\\n \\n vCol = aCol;\\n \\n#ifdef NEEDS_VNORMAL\\n vNormal = normMatrix * vec4(-aNorm, dot(aNorm, aPos));\\n#endif\\n \\n#ifdef IS_TWOSIDED\\n#ifdef HAS_NORMALS\\n /* normz should be calculated *after* projection */\\n normz = (invPrMatrix*vNormal).z;\\n#else\\n vec4 pos1 = prMatrix*(mvMatrix*vec4(aPos1, 1.));\\n pos1 = pos1/pos1.w - gl_Position/gl_Position.w;\\n vec4 pos2 = prMatrix*(mvMatrix*vec4(aPos2, 1.));\\n pos2 = pos2/pos2.w - gl_Position/gl_Position.w;\\n normz = pos1.x*pos2.y - pos1.y*pos2.x;\\n#endif\\n#endif // IS_TWOSIDED\\n \\n#ifdef NEEDS_VNORMAL\\n vNormal = vec4(normalize(vNormal.xyz/vNormal.w), 1);\\n#endif\\n \\n#if defined(HAS_TEXTURE) || defined(IS_TEXT)\\n vTexcoord = aTexcoord;\\n#endif\\n \\n#if defined(FIXED_SIZE) && !defined(ROTATING)\\n vec4 pos = prMatrix * mvMatrix * vec4(aPos, 1.);\\n pos = pos/pos.w;\\n gl_Position = pos + vec4(aOfs*textScale, 0.);\\n#endif\\n \\n#if defined(IS_SPRITES) && !defined(FIXED_SIZE)\\n vec4 pos = mvMatrix * vec4(aPos, 1.);\\n pos = pos/pos.w + vec4(aOfs, 0.);\\n gl_Position = prMatrix*pos;\\n#endif\\n \\n#ifdef FAT_LINES\\n /* This code was inspired by Matt Deslauriers' code in \\n https://mattdesl.svbtle.com/drawing-lines-is-hard */\\n vec2 aspectVec = vec2(uAspect, 1.0);\\n mat4 projViewModel = prMatrix * mvMatrix;\\n vec4 currentProjected = projViewModel * vec4(aPos, 1.0);\\n currentProjected = currentProjected/currentProjected.w;\\n vec4 nextProjected = projViewModel * vec4(aNext, 1.0);\\n vec2 currentScreen = currentProjected.xy * aspectVec;\\n vec2 nextScreen = (nextProjected.xy / nextProjected.w) * aspectVec;\\n float len = uLwd;\\n vec2 dir = vec2(1.0, 0.0);\\n vPoint = aPoint;\\n vLength = length(nextScreen - currentScreen)/2.0;\\n vLength = vLength/(vLength + len);\\n if (vLength > 0.0) {\\n dir = normalize(nextScreen - currentScreen);\\n }\\n vec2 normal = vec2(-dir.y, dir.x);\\n dir.x /= uAspect;\\n normal.x /= uAspect;\\n vec4 offset = vec4(len*(normal*aPoint.x*aPoint.y - dir), 0.0, 0.0);\\n gl_Position = currentProjected + offset;\\n#endif\\n \\n#ifdef IS_BRUSH\\n gl_Position = vec4(aPos, 1.);\\n#endif\\n}\",\"fragmentShader\":\"#line 2 2\\n// File 2 is the fragment shader\\n#ifdef GL_ES\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nprecision highp float;\\n#else\\nprecision mediump float;\\n#endif\\n#endif\\nvarying vec4 vCol; // carries alpha\\nvarying vec4 vPosition;\\n#if defined(HAS_TEXTURE) || defined (IS_TEXT)\\nvarying vec2 vTexcoord;\\nuniform sampler2D uSampler;\\n#endif\\n\\n#ifdef HAS_FOG\\nuniform int uFogMode;\\nuniform vec3 uFogColor;\\nuniform vec4 uFogParms;\\n#endif\\n\\n#if defined(IS_LIT) && !defined(FIXED_QUADS)\\nvarying vec4 vNormal;\\n#endif\\n\\n#if NCLIPPLANES > 0\\nuniform vec4 vClipplane[NCLIPPLANES];\\n#endif\\n\\n#if NLIGHTS > 0\\nuniform mat4 mvMatrix;\\n#endif\\n\\n#ifdef IS_LIT\\nuniform vec3 emission;\\nuniform float shininess;\\n#if NLIGHTS > 0\\nuniform vec3 ambient[NLIGHTS];\\nuniform vec3 specular[NLIGHTS]; // light*material\\nuniform vec3 diffuse[NLIGHTS];\\nuniform vec3 lightDir[NLIGHTS];\\nuniform bool viewpoint[NLIGHTS];\\nuniform bool finite[NLIGHTS];\\n#endif\\n#endif // IS_LIT\\n\\n#ifdef IS_TWOSIDED\\nuniform bool front;\\nvarying float normz;\\n#endif\\n\\n#ifdef FAT_LINES\\nvarying vec2 vPoint;\\nvarying float vLength;\\n#endif\\n\\nvoid main(void) {\\n vec4 fragColor;\\n#ifdef FAT_LINES\\n vec2 point = vPoint;\\n bool neg = point.y < 0.0;\\n point.y = neg ? (point.y + vLength)/(1.0 - vLength) :\\n -(point.y - vLength)/(1.0 - vLength);\\n#if defined(IS_TRANSPARENT) && defined(IS_LINESTRIP)\\n if (neg && length(point) <= 1.0) discard;\\n#endif\\n point.y = min(point.y, 0.0);\\n if (length(point) > 1.0) discard;\\n#endif // FAT_LINES\\n \\n#ifdef ROUND_POINTS\\n vec2 coord = gl_PointCoord - vec2(0.5);\\n if (length(coord) > 0.5) discard;\\n#endif\\n \\n#if NCLIPPLANES > 0\\n for (int i = 0; i < NCLIPPLANES; i++)\\n if (dot(vPosition, vClipplane[i]) < 0.0) discard;\\n#endif\\n \\n#ifdef FIXED_QUADS\\n vec3 n = vec3(0., 0., 1.);\\n#elif defined(IS_LIT)\\n vec3 n = normalize(vNormal.xyz);\\n#endif\\n \\n#ifdef IS_TWOSIDED\\n if ((normz <= 0.) != front) discard;\\n#endif\\n \\n#ifdef IS_LIT\\n vec3 eye = normalize(-vPosition.xyz/vPosition.w);\\n vec3 lightdir;\\n vec4 colDiff;\\n vec3 halfVec;\\n vec4 lighteffect = vec4(emission, 0.);\\n vec3 col;\\n float nDotL;\\n#ifdef FIXED_QUADS\\n n = -faceforward(n, n, eye);\\n#endif\\n \\n#if NLIGHTS > 0\\n for (int i=0;i 0) {\\n fogF = (uFogParms.y - vPosition.z/vPosition.w)/(uFogParms.y - uFogParms.x);\\n if (uFogMode > 1)\\n fogF = mix(uFogParms.w, 1.0, fogF);\\n fogF = fogF*uFogParms.z;\\n if (uFogMode == 2)\\n fogF = 1.0 - exp(-fogF);\\n // Docs are wrong: use (density*c)^2, not density*c^2\\n // https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/src/mesa/swrast/s_fog.c#L58\\n else if (uFogMode == 3)\\n fogF = 1.0 - exp(-fogF*fogF);\\n fogF = clamp(fogF, 0.0, 1.0);\\n gl_FragColor = vec4(mix(fragColor.rgb, uFogColor, fogF), fragColor.a);\\n } else gl_FragColor = fragColor;\\n#else\\n gl_FragColor = fragColor;\\n#endif // HAS_FOG\\n \\n}\",\"players\":[],\"webGLoptions\":{\"preserveDrawingBuffer\":true}},\"evals\":[],\"jsHooks\":[]} axes <- ellipse3d.axes(cov, centre=mu, level=0.68, color=\"gray\", lwd=2)"},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"experimental function designed separate internal code link{heplot3d}.","code":""},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"","code":"Ellipsoid(x, ...) # S3 method for data.frame Ellipsoid(x, which = 1:3, method = c(\"classical\", \"mve\", \"mcd\"), ...) # S3 method for default Ellipsoid( x, center = c(0, 0, 0), which = 1:3, radius = 1, df = Inf, label = \"\", cex.label = 1.5, col = \"pink\", lwd = 1, segments = 40, shade = TRUE, alpha = 0.1, wire = TRUE, verbose = FALSE, warn.rank = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"x object. default method parameter x square positive definite matrix least 3x3 size. treated correlation covariance multivariate normal distribution. data.frame method, numeric data frame least 3 columns. ... arguments parameter selects variables object plotted. default first 3. method covariance method used: classical product-moment (\"classical\"), minimum volume ellipsoid (\"mve\"), minimum covariance determinant (\"mcd\" center center ellipsoid, vector length 3, typically mean vector data radius size ellipsoid df degrees freedom associated covariance matrix, used calculate appropriate F statistic label label ellipsoid cex.label text size label col color ellipsoid lwd line wire-frame version segments number segments composing ellipsoid; defaults 40. shade logical; ellipsoid smoothly shaded? alpha transparency shaded ellipsoid wire logical; ellipsoid drawn wire frame? verbose logical; debugging warn.rank logical; warn ellipsoid less rank 3?","code":""},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"returns bounding box ellipsoid invisibly; otherwise used side effect drawing ellipsoid","code":""},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"","code":"# none yet"},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":null,"dir":"Reference","previous_headings":"","what":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"Calculates partial eta-squared linear models multivariate analogs eta-squared (R^2), indicating partial association term multivariate linear model. different analog four standard multivariate test statistics: Pillai's trace, Hotelling-Lawley trace, Wilks' Lambda Roy's maximum root test.","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"","code":"etasq(x, ...) # S3 method for mlm etasq(x, ...) # S3 method for Anova.mlm etasq(x, anova = FALSE, ...) # S3 method for lm etasq(x, anova = FALSE, partial = TRUE, ...)"},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"x lm, mlm Anova.mlm object ... arguments passed Anova. anova logical, indicating whether result also contain test statistics produced Anova(). partial logical, indicating whether calculate partial classical eta^2.","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"anova=FALSE, one-column data frame containing eta-squared values term model. anova=TRUE, 5-column (lm) 7-column (mlm) data frame containing eta-squared values test statistics produced print.Anova() term model.","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"univariate linear models, classical \\(\\eta^2\\) = SSH / SST partial \\(\\eta^2\\) = SSH / (SSH + SSE). identical one-way designs. Partial eta-squared describes proportion total variation attributable given factor, partialing (excluding) factors total nonerror variation. commonly used measures effect size measures (non-linear) strength association ANOVA models. multivariate tests based \\(s=min(p, df_h)\\) latent roots \\(H E^{-1}\\). analogous multivariate partial \\(\\eta^2\\) measures calculated : Pillai's trace (V) \\(\\eta^2 = V/s\\) Hotelling-Lawley trace (T) \\(\\eta^2 = T/(T+s)\\) Wilks' Lambda (L) \\(\\eta^2 = L^{1/s}\\) Roy's maximum root (R) \\(\\eta^2 = R/(R+1)\\)","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"Muller, K. E. Peterson, B. L. (1984). Practical methods computing power testing Multivariate General Linear Hypothesis Computational Statistics Data Analysis, 2, 143-158. Muller, K. E. LaVange, L. M. Ramey, S. L. Ramey, C. T. (1992). Power Calculations General Linear Multivariate Models Including Repeated Measures Applications. Journal American Statistical Association, 87, 1209-1226.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"","code":"library(car) data(Soils, package=\"carData\") soils.mod <- lm(cbind(pH,N,Dens,P,Ca,Mg,K,Na,Conduc) ~ Block + Contour*Depth, data=Soils) #Anova(soils.mod) etasq(Anova(soils.mod)) #> eta^2 #> Block 0.5585973 #> Contour 0.6692989 #> Depth 0.5983772 #> Contour:Depth 0.2058495 etasq(soils.mod) # same #> eta^2 #> Block 0.5585973 #> Contour 0.6692989 #> Depth 0.5983772 #> Contour:Depth 0.2058495 etasq(Anova(soils.mod), anova=TRUE) #> #> Type II MANOVA Tests: Pillai test statistic #> eta^2 Df test stat approx F num Df den Df Pr(>F) #> Block 0.55860 3 1.6758 3.7965 27 81 1.777e-06 *** #> Contour 0.66930 2 1.3386 5.8468 18 52 2.730e-07 *** #> Depth 0.59838 3 1.7951 4.4697 27 81 8.777e-08 *** #> Contour:Depth 0.20585 6 1.2351 0.8640 54 180 0.7311 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 etasq(soils.mod, test=\"Wilks\") #> eta^2 #> Block 0.5701385 #> Contour 0.7434504 #> Depth 0.8294239 #> Contour:Depth 0.2250388 etasq(soils.mod, test=\"Hotelling\") #> eta^2 #> Block 0.5823516 #> Contour 0.8009753 #> Depth 0.9421533 #> Contour:Depth 0.2456774"},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":null,"dir":"Reference","previous_headings":"","what":"Head measurements of football players — FootHead","title":"Head measurements of football players — FootHead","text":"Data collected part preliminary study examining relation football helmet design neck injuries. 30 subjects three groups: High school football players, college players non-football players.","code":""},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Head measurements of football players — FootHead","text":"data frame 90 observations following 7 variables. group factor levels High school College Non-football width numeric vector: head width widest dimension circum numeric vector: head circumference front.back numeric vector: front back distance eye level eye.top numeric vector: eye top head ear.top numeric vector:ear top head jaw numeric vector: jaw width","code":""},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Head measurements of football players — FootHead","text":"Rencher, . C. (1995), Methods Multivariate Analysis, New York: Wiley, Table 8.3.","code":""},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Head measurements of football players — FootHead","text":"","code":"data(FootHead) str(FootHead) #> 'data.frame':\t90 obs. of 7 variables: #> $ group : Factor w/ 3 levels \"High school\",..: 1 1 1 1 1 1 1 1 1 1 ... #> $ width : num 13.5 15.5 14.5 15.5 14.5 14 15 15 15.5 15.5 ... #> $ circum : num 57.1 58.4 55.9 58.4 58.4 ... #> $ front.back: num 19.5 21 19 20 20 21 19.5 21 20.5 20.5 ... #> $ eye.top : num 12.5 12 10 13.5 13 12 13.5 13 13.5 13 ... #> $ ear.top : num 14 16 13 15 15.5 14 15.5 14 14.5 15 ... #> $ jaw : num 11 12 12 12 12 13 13 13 12.5 13 ... require(car) # use Helmert contrasts for group contrasts(FootHead$group) <- contr.helmert contrasts(FootHead$group) #> [,1] [,2] #> High school -1 -1 #> College 1 -1 #> Non-football 0 2 foot.mod <- lm(cbind(width, circum,front.back,eye.top,ear.top,jaw) ~ group, data=FootHead) Manova(foot.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.76116 8.4994 12 166 1.876e-12 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # show the HE plot for the first two variables heplot(foot.mod, main=\"HE plot for width and circumference\", fill=TRUE, col=c(\"red\", \"blue\")) # show it with tests of Helmert contrasts heplot(foot.mod, hypotheses=list(\"group.1\"=\"group1\",\"group.2\"=\"group2\"), col=c(\"red\", \"blue\", \"green3\", \"green3\" ), main=\"HE plot with orthogonal Helmert contrasts\") # show all pairwise HE plots pairs(foot.mod) # ... with tests of Helmert contrasts pairs(foot.mod, hypotheses=list(\"group.1\"=\"group1\",\"group.2\"=\"group2\"), col=c(\"red\", \"blue\", \"green3\", \"green3\"), hyp.labels=FALSE) # see that the hypothesis for groups really is 2D if(requireNamespace(\"rgl\")){ heplot3d(foot.mod, variables=c(1,2,6), hypotheses=list(\"group.1\"=\"group1\",\"group.2\"=\"group2\"), col=c(\"red\", \"blue\", \"green3\", \"green3\" ), wire=FALSE) }"},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Glance at an mlm object — glance.mlm","title":"Glance at an mlm object — glance.mlm","text":"function takes \"mlm\" object, fit lm multivariate response. goal return something analogous glance.lm univariate response linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Glance at an mlm object — glance.mlm","text":"","code":"# S3 method for mlm glance(x, ...)"},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Glance at an mlm object — glance.mlm","text":"x mlm object created lm, .e., multivariate response. ... Additional arguments. used.","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Glance at an mlm object — glance.mlm","text":"tibble one row response variable columns: r.squared R squared statistic, percent variation explained model. adj.r.squared Adjusted R squared statistic, like R squared statistic except taking degrees freedom account. sigma Estimated standard error residuals fstatitic Overall F statistic model numdf Numerator degrees freedom overall test dendf Denominator degrees freedom overall test p.value P-value corresponding F statistic nobs Number observations used","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Glance at an mlm object — glance.mlm","text":"multivariate case, returns tibble one row response variable, containing goodness fit measures, F-tests p-values.","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Glance at an mlm object — glance.mlm","text":"","code":"iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) glance(iris.mod) #> # A tibble: 4 x 9 #> response r.squared adj.r.squared sigma fstatistic numdf dendf p.value nobs #> #> 1 Sepal.Len~ 0.619 0.614 0.515 119. 2 147 1.67e-31 150 #> 2 Sepal.Wid~ 0.401 0.393 0.340 49.2 2 147 4.49e-17 150 #> 3 Petal.Len~ 0.941 0.941 0.430 1180. 2 147 2.86e-91 150 #> 4 Petal.Wid~ 0.929 0.928 0.205 960. 2 147 4.17e-85 150"},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":null,"dir":"Reference","previous_headings":"","what":"Orthogonalize successive columns of a data frame or matrix — gsorth","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"gsorth uses sequential, orthogonal projections, Gram-Schmidt method, transform matrix numeric columns data frame uncorrelated set, possibly retaining column means standard deviations original.","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"","code":"gsorth(y, order, recenter = TRUE, rescale = TRUE, adjnames = TRUE)"},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"y numeric data frame matrix order integer vector specifying order /subset columns y orthogonalized. missing, order=1:p p=ncol(y). recenter TRUE, result column means original; else means = 0 cols 2:p. rescale TRUE, result column standard deviations original; else sd = residual variance cols 2:p adjnames TRUE, column names result adjusted form Y1, Y2.1, Y3.12, adding suffixes '.1', '.12', etc. original column names.","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"Returns matrix data frame uncorrelated columns. Row column names copied result.","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"statistical applications, interpretation depends order variables orthogonalized. multivariate linear models, orthogonalizing response, Y variables provides equivalent step-tests, Y1 tested alone, Y2.1, Y3.12, etc. can tested determine additional contributions previous response variables. Similarly, orthogonalizing model X variables provides equivalent Type tests, provided anova. method equivalent setting columns 2:p residuals linear regression column prior columns, .e., z[,j] <- resid( lm( z[,j] ~ .matrix(z[,1:(j-1)]), data=z) ) However, accuracy speed transformation carried using QR decomposition.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"","code":"GSiris <- gsorth(iris[,1:4]) GSiris <- gsorth(iris, order=1:4) # same, using order str(GSiris) #> num [1:150, 1:4] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... #> - attr(*, \"dimnames\")=List of 2 #> ..$ : chr [1:150] \"1\" \"2\" \"3\" \"4\" ... #> ..$ : chr [1:4] \"Sepal.Length\" \"Sepal.Width.1\" \"Petal.Length.12\" \"Petal.Width.123\" zapsmall(cor(GSiris)) #> Sepal.Length Sepal.Width.1 Petal.Length.12 Petal.Width.123 #> Sepal.Length 1 0 0 0 #> Sepal.Width.1 0 1 0 0 #> Petal.Length.12 0 0 1 0 #> Petal.Width.123 0 0 0 1 colMeans(GSiris) #> Sepal.Length Sepal.Width.1 Petal.Length.12 Petal.Width.123 #> 5.843333 3.057333 3.758000 1.199333 # sd(GSiris) -- sd() now deprecated apply(GSiris, 2, sd) #> Sepal.Length Sepal.Width.1 Petal.Length.12 Petal.Width.123 #> 0.8280661 0.4358663 1.7652982 0.7622377 # orthogonalize Y side GSiris <- data.frame(gsorth(iris[,1:4]), Species=iris$Species) iris.mod1 <- lm(as.matrix(GSiris[,1:4]) ~ Species, data=GSiris) car::Anova(iris.mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Species 2 1.1919 53.466 8 290 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # orthogonalize X side rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer) car::Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.059964 1.2970 3 61 0.283582 #> s 1 0.097788 2.2039 3 61 0.096703 . #> ns 1 0.208820 5.3667 3 61 0.002406 ** #> na 1 0.183478 4.5690 3 61 0.005952 ** #> ss 1 0.091796 2.0552 3 61 0.115521 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # type I tests for Rohwer data Rohwer.orth <- cbind(Rohwer[,1:5], gsorth(Rohwer[, c(\"n\", \"s\", \"ns\", \"na\", \"ss\")], adjnames=FALSE)) rohwer.mod1 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer.orth) car::Anova(rohwer.mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.227735 5.9962 3 61 0.001195 ** #> s 1 0.088967 1.9857 3 61 0.125530 #> ns 1 0.112979 2.5898 3 61 0.060939 . #> na 1 0.302957 8.8375 3 61 5.958e-05 *** #> ss 1 0.091796 2.0552 3 61 0.115521 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # compare with anova() anova(rohwer.mod1) #> Analysis of Variance Table #> #> Df Pillai approx F num Df den Df Pr(>F) #> (Intercept) 1 0.97665 850.63 3 61 < 2.2e-16 *** #> n 1 0.22774 6.00 3 61 0.001195 ** #> s 1 0.08897 1.99 3 61 0.125530 #> ns 1 0.11298 2.59 3 61 0.060939 . #> na 1 0.30296 8.84 3 61 5.958e-05 *** #> ss 1 0.09180 2.06 3 61 0.115521 #> Residuals 63 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # compare heplots for original Xs and orthogonalized, Type I heplot(rohwer.mod) heplot(rohwer.mod1)"},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":null,"dir":"Reference","previous_headings":"","what":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"study conducted investigating effectiveness different kinds psychological treatment sensitivity headache sufferers noise, described Hand Taylor (1987), Study E.","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"data frame 98 observations following 6 variables. type Type headache, factor levels Migrane Tension treatment Treatment group, factor levels T1 T2 T3 Control. See Details u1 Noise level rated Uncomfortable, initial measure du1 Noise level rated Definitely Uncomfortable, initial measure u2 Noise level rated Uncomfortable, final measure du2 Noise level rated Definitely Uncomfortable, final measure","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"D. J. Hand C. C. Taylor (1987). Multivariate analysis variance repeated measures: practical approach behavioural scientists London: Chapman Hall. ISBN: 0412258005. Table E.1.","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"pre-post design, 98 patients first assessed volume noise found uncomfortable (U) definitely uncomfortable (DU). given relaxation training, listened noise DU level given instruction breathing techniques use visual imagery distract discomfort. One four treatments applied, patients reassessed noise volume considered uncomfortable (U) definitely uncomfortable (DU). treatments described follows: T1 Listened tone initial DU level, amount time able tolerate . T2 T1, one additional minute exposure T3 T2, explicitly instructed use relaxation techniques Control subject experienced exposure noise tone final sensitivity measures taken Hand Taylor described several substantive hypotheses related differences among treatments. Headache data frame, included contrasts(Headache$treatment)","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"","code":"library(car) data(Headache) str(Headache) #> 'data.frame':\t98 obs. of 6 variables: #> $ type : Factor w/ 2 levels \"Migrane\",\"Tension\": 1 1 2 1 1 1 1 1 1 2 ... #> $ treatment: Factor w/ 4 levels \"T1\",\"T2\",\"T3\",..: 3 1 1 3 3 3 2 1 1 3 ... #> ..- attr(*, \"contrasts\")= num [1:4, 1:3] 1 -1 0 0 1 1 0 -2 0 0 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : chr [1:4] \"T1\" \"T2\" \"T3\" \"Control\" #> .. .. ..$ : NULL #> $ u1 : num 2.34 2.73 0.37 7.5 4.63 3.6 2.45 2.31 1.38 0.85 ... #> $ du1 : num 5.3 6.85 0.53 9.12 7.21 7.3 3.75 3.25 2.33 1.42 ... #> $ u2 : num 5.8 4.68 0.55 5.7 5.63 4.83 2.5 2 2.23 1.37 ... #> $ du2 : num 8.52 6.68 0.84 7.88 6.75 7.32 3.18 3.3 3.98 1.89 ... # basic MLM, specifying between-S effects headache.mod <- lm(cbind(u1, du1, u2, du2) ~ type * treatment, data=Headache) ############################## ## between-S tests ############################## Anova(headache.mod, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> type 1 0.042678 0.9283 4 87 0.451426 #> treatment 3 0.136154 3.0294 4 89 0.021609 * #> type:treatment 3 0.161202 3.5867 4 89 0.009281 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test each contrast separately print(linearHypothesis(headache.mod, hypothesis=\"treatment1\", test=\"Roy\"), SSP=FALSE) #> #> Multivariate Test: #> Df test stat approx F num Df den Df Pr(>F) #> Roy 1 0.01305284 0.2838993 4 87 0.88769 print(linearHypothesis(headache.mod, hypothesis=\"treatment2\", test=\"Roy\"), SSP=FALSE) #> #> Multivariate Test: #> Df test stat approx F num Df den Df Pr(>F) #> Roy 1 0.08267735 1.798232 4 87 0.13645 print(linearHypothesis(headache.mod, hypothesis=\"treatment3\", test=\"Roy\"), SSP=FALSE) #> #> Multivariate Test: #> Df test stat approx F num Df den Df Pr(>F) #> Roy 1 0.1902026 4.136907 4 87 0.0040827 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(headache.mod, variables=c(1,3), hypotheses=paste(\"treatment\", 1:3, sep=\"\"), hyp.labels=c(\"extra.exp\", \"no.inst\", \"explicit.inst\"), xlab=\"u1: Initial sensitivity\", ylab=\"u2: Final sensitivity\", main=\"Headache data: Unpleasant levels\") abline(0, 1, lty=5, col=\"gray\") heplot(headache.mod, variables=c(2,4), hypotheses=paste(\"treatment\", 1:3, sep=\"\"), xlab=\"du1: Initial sensitivity\", ylab=\"du2: Final sensitivity\", main=\"Headache data: Definitely Unpleasant levels\") abline(0, 1, lty=5, col=\"gray\") pairs(headache.mod) ############################## # between-S and within-S tests ############################## idata = expand.grid(level=factor(c(\"U\", \"DU\")), phase=factor(1:2)) Anova(headache.mod, idata=idata, idesign=~level*phase) #> #> Type II Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.64648 164.580 1 90 < 2e-16 *** #> type 1 0.00691 0.627 1 90 0.43072 #> treatment 3 0.04122 1.290 3 90 0.28275 #> type:treatment 3 0.00118 0.035 3 90 0.99106 #> level 1 0.60226 136.276 1 90 < 2e-16 *** #> type:level 1 0.00000 0.000 1 90 0.99653 #> treatment:level 3 0.00660 0.199 3 90 0.89661 #> type:treatment:level 3 0.05360 1.699 3 90 0.17287 #> phase 1 0.02459 2.269 1 90 0.13546 #> type:phase 1 0.02267 2.088 1 90 0.15193 #> treatment:phase 3 0.08074 2.635 3 90 0.05459 . #> type:treatment:phase 3 0.06236 1.995 3 90 0.12033 #> level:phase 1 0.03465 3.231 1 90 0.07563 . #> type:level:phase 1 0.00820 0.744 1 90 0.39070 #> treatment:level:phase 3 0.02164 0.663 3 90 0.57669 #> type:treatment:level:phase 3 0.03475 1.080 3 90 0.36173 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":null,"dir":"Reference","previous_headings":"","what":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"heplots package provides functions visualizing hypothesis tests multivariate linear models (MANOVA, multivariate multiple regression, MANCOVA, repeated measures designs). plots represent sums--squares--products matrices linear hypotheses error using ellipses (two dimensions), ellipsoids (three dimensions), line segments one dimension. See Fox, Friendly Monette (2007) brief introduction Friendly, Monette Fox (2013) general discussion role elliptical geometry statistical understanding. topics now addressed include robust MLMs, tests equality covariance matrices MLMs, chi square Q-Q plots MLMs. package also provides collection data sets illustrating variety multivariate linear models types listed , together graphical displays. Several tutorial vignettes also included. See vignette(package=\"heplots\").","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"graphical functions contained display multivariate model effects variable (data) space, one response variables (contrasts among response variables repeated measures designs). heplot constructs two-dimensional plots model terms linear hypotheses pairs response variables multivariate linear models. heplot3d constructs analogous 3D plots triples response variables. pairs.mlm constructs ``matrix'' pairwise plots. heplot1d constructs 1-dimensional analogs plots model terms linear hypotheses single response variables. repeated measure designs, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. terms involving within-subject effects, functions carry linear transformation matrix Y responses matrix Y M, M model matrix term intra-subject design produce plots H E matrices transformed space. vignette repeated describes graphical methods repeated measures designs. related car package calculates Type II Type III tests multivariate linear hypotheses using Anova linearHypothesis functions. candisc-package package provides functions visualizing effects MLM model terms low-dimensional canonical space shows largest hypothesis relative error variation. candisc package now also includes related methods canonical correlation analysis. heplots package also contains large number multivariate data sets examples analyses graphic displays. Use data(package=\"heplots\") see current list.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"John Fox, Michael Friendly, Georges Monette Maintainer: Michael Friendly, friendly@yorku.ca, http://datavis.ca","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples. Journal Statistical Software, 17(6), 1-42. doi:10.18637/jss.v017.i06 Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf Fox, J., Friendly, M. & Monette, G. (2007). Visual hypothesis tests multivariate linear models: heplots package R. DSC 2007: Directions Statistical Computing. https://socialsciences.mcmaster.ca/jfox/heplots-dsc-paper.pdf Friendly, M. (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi:10.18637/jss.v037.i04 Fox, J., Friendly, M. & Weisberg, S. (2013). \tHypothesis Tests Multivariate Linear Models Using car Package. \tR Journal, 5(1), \thttps://journal.r-project.org/archive/2013-1/fox-friendly-weisberg.pdf. Friendly, M., Monette, G. & Fox, J. (2013). \tElliptical Insights: Understanding Statistical Methods Elliptical Geometry. \tStatistical Science, 2013, 28 (1), 1-39, \thttp://datavis.ca/papers/ellipses.pdf. Friendly, M. & Sigal, M. (2014). Recent Advances Visualizing Multivariate Linear Models. Revista Colombiana de Estadistica, 37, 261-283 Friendly, M. & Sigal, M. (2016). Graphical Methods Multivariate Linear Models Psychological Research: R Tutorial. Submitted publication.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Two-Dimensional HE Plots — heplot","title":"Two-Dimensional HE Plots — heplot","text":"function plots ellipses representing hypothesis error sums--squares--products matrices terms linear hypotheses multivariate linear model. include MANOVA models (explanatory variables factors), multivariate regression (quantitative predictors), MANCOVA models, homogeneity regression, well repeated measures designs treated multivariate perspective.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Two-Dimensional HE Plots — heplot","text":"","code":"heplot(mod, ...) # S3 method for mlm heplot( mod, terms, hypotheses, term.labels = TRUE, hyp.labels = TRUE, err.label = \"Error\", label.pos = NULL, variables = 1:2, error.ellipse = !add, factor.means = !add, grand.mean = !add, remove.intercept = TRUE, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = c(\"contr.sum\", \"contr.poly\"), imatrix = NULL, iterm = NULL, markH0 = !is.null(iterm), manova, size = c(\"evidence\", \"effect.size\"), level = 0.68, alpha = 0.05, segments = 60, center.pch = \"+\", center.cex = 2, col = getOption(\"heplot.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\")), lty = 2:1, lwd = 1:2, fill = FALSE, fill.alpha = 0.3, xlab, ylab, main = \"\", xlim, ylim, axes = TRUE, offset.axes, add = FALSE, verbose = FALSE, warn.rank = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Two-Dimensional HE Plots — heplot","text":"mod model object class \"mlm\". ... arguments pass plot, text, points. terms logical value character vector terms model plot hypothesis matrices; missing TRUE, defaults terms; FALSE, terms plotted. hypotheses optional list linear hypotheses plot hypothesis matrices; hypotheses specified linearHypothesis function car package; list elements can named, case names used. term.labels logical value character vector names terms plotted. TRUE (default) names terms used; FALSE, term labels plotted. hyp.labels logical value character vector names hypotheses plotted. TRUE (default) names components list hypotheses used; FALSE, hypothesis labels plotted. err.label Label error ellipse label.pos Label position, vector integers (0:4) character strings (c(\"center\", \"bottom\", \"left\", \"top\", \"right\"), c(\"C\", \"S\", \"W\", \"N\", \"E\") use labeling ellipses, recycled necessary. Values 1, 2, 3 4, respectively indicate positions , left , right max/min coordinates ellipse; value 0 specifies centroid ellipse object. default, label.pos=NULL uses correlation ellipse determine \"top\" (r>=0) \"bottom\" (r<0). Even flexible options described label.ellipse variables indices names two response variables plotted; defaults 1:2. error.ellipse TRUE, plot error ellipse; defaults TRUE, argument add FALSE (see ). factor.means logical value character vector names factors means plotted, TRUE FALSE; defaults TRUE, argument add FALSE (see ). grand.mean TRUE, plot centroid data; defaults TRUE, argument add FALSE (see ). remove.intercept TRUE (default), plot ellipse intercept even MANOVA table. type ``type'' sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Friendly (2010) Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. markH0 logical value (else list arguments mark.H0) used draw cross-hairs point indicating value point null hypothesis. default TRUE iterm non-NULL. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. size scale hypothesis ellipse relative error ellipse; \"evidence\", default, scaling done ``significant'' hypothesis ellipse level alpha extends outside error ellipse; \"effect.size\", hypothesis ellipse scale error ellipse. level equivalent coverage ellipse normally-distributed errors, defaults 0.68, giving standard 1 SD bivariate ellipse. alpha significance level Roy's greatest-root test statistic; size=\"evidence\", hypothesis ellipse scaled just touches error ellipse specified alpha level; larger hypothesis ellipse somewhere space response variables therefore indicates statistical significance; defaults 0.05. segments number line segments composing ellipse; defaults 60. center.pch character use plotting centroid data; defaults \"+\". center.cex size character use plotting centroid data; defaults 2. col color vector colors use plotting ellipses; first color used error ellipse; remaining colors --- recycled necessary --- used hypothesis ellipses. single color can given, case used ellipses. convenience, default colors heplots produced given session can changed assigning color vector via options(heplot.colors =c(...). Otherwise, default colors c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lty vector line types use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line type can given. Defaults 2:1. lwd vector line widths use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line width can given. Defaults 1:2. fill logical vector indicating whether ellipse filled . first value used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single fill value can given. Defaults FALSE backward compatibility. See Details . fill.alpha Alpha transparency filled ellipses, numeric scalar vector values within [0,1], 0 means fully transparent 1 means fully opaque. xlab x-axis label; defaults name x variable. ylab y-axis label; defaults name y variable. main main plot label; defaults \"\". xlim x-axis limits; absent, computed data. ylim y-axis limits; absent, computed data. axes Whether draw x, y axes; defaults TRUE offset.axes proportion extend axes direction computed data; optional. add TRUE, add current plot; default FALSE. TRUE, error ellipse plotted. verbose TRUE, print MANOVA table details hypothesis tests; default FALSE. warn.rank TRUE, suppress warnings rank hypothesis matrix ellipse collapses line; default FALSE.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Two-Dimensional HE Plots — heplot","text":"function invisibly returns object class \"heplot\", coordinates various hypothesis ellipses error ellipse, limits horizontal vertical axes. may useful adding additional annotations plot, using standard plotting functions. (methods manipulating objects currently available.) components : H list containing coordinates ellipse hypothesis terms E matrix containing coordinates error ellipse center x,y coordinates centroid xlim x-axis limits ylim y-axis limits radius radius unit circles used generate ellipses","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Two-Dimensional HE Plots — heplot","text":"heplot function plots representation covariance ellipses hypothesized model terms linear hypotheses (H) corresponding error (E) matrices two response variables multivariate linear model (mlm). plot helps visualize nature dimensionality response variation two variables jointly relation error variation summarized various multivariate test statistics (Wilks' Lambda, Pillai trace, Hotelling-Lawley trace, Roy maximum root). Roy's maximum root test particularly simple visual interpretation, exploited size=\"evidence\" version plot. See description argument alpha. 1 df hypothesis term (quantitative regressor, single contrast parameter test), H matrix rank 1 (one non-zero latent root \\(H E^{-1}\\)) H \"ellipse\" collapses degenerate line. Typically, fit mlm mymlm <- lm(cbind(y1, y2, y3, ...) ~ modelterms), plot modelterms heplot(mymlm, ...). Arbitrary linear hypotheses related terms model (e.g., contrasts effect) can included plot using hypotheses argument. See linearHypothesis details. repeated measure designs, response variables correspond one variates observed within-subject design, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. specify intra-subject term (iterm), analysis plots amount analysis matrix Y responses post-multiplied matrix M determined intra-subject design term. See Friendly (2010) vignette(\"repeated\") package extended discussion examples. related candisc package provides functions visualizing multivariate linear model low-dimensional view via generalized canonical discriminant analyses. heplot.candisc heplot3d.candisc provide low-rank 2D (3D) view effects given term space maximum discrimination. element fill TRUE, ellipse outline drawn using corresponding color col, interior filled transparent version color specified fill.alpha. produce filled (non-degenerate) ellipses without bounding outline, use value lty=0 corresponding position.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Two-Dimensional HE Plots — heplot","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17(6), 1--42. https://www.jstatsoft.org/v17/i06/ c(\"\\Sexpr[results=rd,stage=build]tools:::Rd_expr_doi(\\\"#1\\\")\", \"10.18637/jss.v017.i06\")doi: 10.18637/jss.v017.i06 Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421--444. http://datavis.ca/papers/jcgs-heplots.pdf Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Fox, J., Friendly, M. & Weisberg, S. (2013). Hypothesis Tests Multivariate Linear Models Using car Package. R Journal, 5(1), https://journal.r-project.org/archive/2013-1/fox-friendly-weisberg.pdf. Friendly, M. & Sigal, M. (2014) Recent Advances Visualizing Multivariate Linear Models. Revista Colombiana de Estadistica, 37, 261-283.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Two-Dimensional HE Plots — heplot","text":"","code":"## iris data contrasts(iris$Species)<-matrix(c(0,-1,1, 2, -1, -1), 3,2) contrasts(iris$Species) #> [,1] [,2] #> setosa 0 2 #> versicolor -1 -1 #> virginica 1 -1 iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) hyp <- list(\"V:V\"=\"Species1\",\"S:VV\"=\"Species2\") heplot(iris.mod, hypotheses=hyp) # compare with effect-size scaling heplot(iris.mod, hypotheses=hyp, size=\"effect\", add=TRUE) # try filled ellipses heplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=0.2, col=c(\"red\", \"blue\")) heplot(iris.mod, hypotheses=hyp, fill=TRUE, col=c(\"red\", \"blue\"), lty=c(0,0,1,1)) # vary label position and fill.alpha heplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=c(0.3,0.1), col=c(\"red\", \"blue\"), lty=c(0,0,1,1), label.pos=0:3) hep <-heplot(iris.mod, variables=c(1,3), hypotheses=hyp) str(hep) #> List of 6 #> $ H :List of 3 #> ..$ Species: num [1:61, 1:2] 9.66 9.68 9.66 9.6 9.5 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : NULL #> .. .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> ..$ V:V : num [1:61, 1:2] 7.41 7.4 7.38 7.33 7.27 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : NULL #> .. .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> ..$ S:VV : num [1:61, 1:2] 9.33 9.31 9.25 9.16 9.03 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : NULL #> .. .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> $ E : num [1:61, 1:2] 6.62 6.62 6.61 6.59 6.56 ... #> ..- attr(*, \"dimnames\")=List of 2 #> .. ..$ : NULL #> .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> $ center: Named num [1:2] 5.84 3.76 #> ..- attr(*, \"names\")= chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> $ xlim : Named num [1:2] 2.01 9.68 #> ..- attr(*, \"names\")= chr [1:2] \"Sepal.Length\" \"Sepal.Length\" #> $ ylim : Named num [1:2] -6.33 13.84 #> ..- attr(*, \"names\")= chr [1:2] \"Petal.Length\" \"Petal.Length\" #> $ radius: num 1.52 #> - attr(*, \"class\")= chr \"heplot\" # all pairs pairs(iris.mod, hypotheses=hyp, hyp.labels=FALSE) ## Pottery data, from car package data(Pottery, package = \"carData\") pottery.mod <- lm(cbind(Al, Fe, Mg, Ca, Na) ~ Site, data=Pottery) heplot(pottery.mod) heplot(pottery.mod, terms=FALSE, add=TRUE, col=\"blue\", hypotheses=list(c(\"SiteCaldicot = 0\", \"SiteIsleThorns=0\")), hyp.labels=\"Sites Caldicot and Isle Thorns\") ## Rohwer data, multivariate multiple regression/ANCOVA #-- ANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) car::Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.37853 12.1818 3 60 2.507e-06 *** #> n 1 0.04030 0.8400 3 60 0.477330 #> s 1 0.09271 2.0437 3 60 0.117307 #> ns 1 0.19283 4.7779 3 60 0.004729 ** #> na 1 0.23134 6.0194 3 60 0.001181 ** #> ss 1 0.04990 1.0504 3 60 0.376988 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 col <- c(\"red\", \"black\", \"blue\", \"cyan\", \"magenta\", \"brown\", \"gray\") heplot(rohwer.mod, col=col) # Add ellipse to test all 5 regressors heplot(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), col=col, fill=TRUE) # View all pairs pairs(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"))) # or 3D plot if(requireNamespace(\"rgl\")){ col <- c(\"pink\", \"black\", \"blue\", \"cyan\", \"magenta\", \"brown\", \"gray\") heplot3d(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), col=col) }"},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":null,"dir":"Reference","previous_headings":"","what":"One-Dimensional HE Plots — heplot1d","title":"One-Dimensional HE Plots — heplot1d","text":"function plots 1-dimensional representation hypothesis (H) error (E) sums--squares--products matrices terms linear hypotheses multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"One-Dimensional HE Plots — heplot1d","text":"","code":"heplot1d(mod, ...) # S3 method for mlm heplot1d( mod, terms, hypotheses, term.labels = TRUE, hyp.labels = TRUE, variables = 1, error.ellipse = !add, factor.means = !add, grand.mean = !add, remove.intercept = TRUE, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = c(\"contr.sum\", \"contr.poly\"), imatrix = NULL, iterm = NULL, manova, size = c(\"evidence\", \"effect.size\"), level = 0.68, alpha = 0.05, center.pch = \"|\", col = getOption(\"heplot.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\")), lty = 2:1, lwd = 1:2, xlab, main = \"\", xlim, axes = TRUE, offset.axes = 0.1, add = FALSE, verbose = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"One-Dimensional HE Plots — heplot1d","text":"mod model object class \"mlm\". ... arguments pass plot, text, points. terms logical value character vector terms model plot hypothesis matrices; missing TRUE, defaults terms; FALSE, terms plotted. hypotheses optional list linear hypotheses plot hypothesis matrices; hypotheses specified linearHypothesis function car package; list elements can named, case names used. term.labels logical value character vector names terms plotted. TRUE (default) names terms used; FALSE, term labels plotted. hyp.labels logical value character vector names hypotheses plotted. TRUE (default) names components list hypotheses used; FALSE, hypothesis labels plotted. variables indices names two response variables plotted; defaults 1:2. error.ellipse TRUE, plot error ellipse; defaults TRUE, argument add FALSE (see ). factor.means logical value character vector names factors means plotted, TRUE FALSE; defaults TRUE, argument add FALSE (see ). grand.mean TRUE, plot centroid data; defaults TRUE, argument add FALSE (see ). remove.intercept TRUE (default), plot ellipse intercept even MANOVA table. type ``type'' sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. size scale hypothesis ellipse relative error ellipse; \"evidence\", default, scaling done ``significant'' hypothesis ellipse extends outside error ellipse; \"effect.size\", hypothesis ellipse scale error ellipse. level equivalent coverage ellipse normally-distributed errors, defaults 0.68. alpha significance level Roy's greatest-root test statistic; size=\"evidence\", hypothesis ellipse scaled just touches error ellipse specified alpha level; larger hypothesis ellipse therefore indicates statistical significance; defaults 0.05. center.pch character use plotting centroid data; defaults \"|\". col color vector colors use plotting ellipses; first color used error ellipse; remaining colors --- recycled necessary --- used hypothesis ellipses. single color can given, case used ellipses. convenience, default colors heplots produced given session can changed assigning color vector via options(heplot.colors =c(...). Otherwise, default colors c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lty vector line types use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line type can given. Defaults 2:1. lwd vector line widths use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line width can given. Defaults 1:2. xlab x-axis label; defaults name x variable. main main plot label; defaults \"\". xlim x-axis limits; absent, computed data. axes Whether draw x, y axes; defaults TRUE offset.axes proportion extend axes direction computed data; optional. add TRUE, add current plot; default FALSE. TRUE, error ellipse plotted. verbose TRUE, print MANOVA table details hypothesis tests; default FALSE.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"One-Dimensional HE Plots — heplot1d","text":"function invisibly returns object class \"heplot1d\", coordinates various hypothesis ellipses error ellipse, limits horizontal vertical axes. (methods manipulating objects currently available.) components : H ranges hypothesis terms E range E xlim x-axis limits","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"One-Dimensional HE Plots — heplot1d","text":"particular, given response, 1-D representations H E matrices correspond line segments. E ``ellipse'' shown filled rectangle whose width equals mean squared error response. H ``ellipse'' model term shown line segment whose length represents either size effect evidence effect. version initial sketch. Details implementation subject change.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"One-Dimensional HE Plots — heplot1d","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"One-Dimensional HE Plots — heplot1d","text":"","code":"## Plastics data plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) heplot1d(plastic.mod, col=c(\"pink\",\"blue\")) heplot1d(plastic.mod, col=c(\"pink\",\"blue\"),variables=2) heplot1d(plastic.mod, col=c(\"pink\",\"blue\"),variables=3) ## Bees data bees.mod <- lm(cbind(Iz,Iy) ~ caste*treat*time, data=Bees) heplot1d(bees.mod) heplot1d(bees.mod, variables=2)"},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Three-Dimensional HE Plots — heplot3d","title":"Three-Dimensional HE Plots — heplot3d","text":"function plots ellipsoids 3D representing hypothesis error sums--squares--products matrices terms linear hypotheses multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Three-Dimensional HE Plots — heplot3d","text":"","code":"heplot3d(mod, ...) # S3 method for mlm heplot3d( mod, terms, hypotheses, term.labels = TRUE, hyp.labels = TRUE, err.label = \"Error\", variables = 1:3, error.ellipsoid = !add, factor.means = !add, grand.mean = !add, remove.intercept = TRUE, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = c(\"contr.sum\", \"contr.poly\"), imatrix = NULL, iterm = NULL, manova, size = c(\"evidence\", \"effect.size\"), level = 0.68, alpha = 0.05, segments = 40, col = getOption(\"heplot3d.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\")), lwd = c(1, 4), shade = TRUE, shade.alpha = 0.2, wire = c(TRUE, FALSE), bg.col = c(\"white\", \"black\"), fogtype = c(\"none\", \"exp2\", \"linear\", \"exp\"), fov = 30, offset = 0.01, xlab, ylab, zlab, xlim, ylim, zlim, cex.label = 1.5, add = FALSE, verbose = FALSE, warn.rank = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Three-Dimensional HE Plots — heplot3d","text":"mod model object class \"mlm\". ... arguments passed generic. terms logical value character vector terms model plot hypothesis matrices; missing TRUE, defaults terms; FALSE, terms plotted. hypotheses optional list linear hypotheses plot hypothesis matrices; hypotheses specified linearHypothesis function car package; list elements can named, case names used. term.labels logical value character vector names terms plotted. TRUE (default) names terms used; FALSE, term labels plotted. hyp.labels logical value character vector names hypotheses plotted. TRUE (default) names components list hypotheses used; FALSE, hypothesis labels plotted. err.label Label error ellipse variables indices names three response variables plotted; defaults 1:3. error.ellipsoid TRUE, plot error ellipsoid; defaults TRUE, argument add FALSE (see ). factor.means logical value character vector names factors means plotted, TRUE FALSE; defaults TRUE, argument add FALSE (see ). grand.mean TRUE, plot centroid data; defaults TRUE, argument add FALSE (see ). remove.intercept TRUE (default), plot ellipsoid intercept even MANOVA table. type ``type'' sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. size scale hypothesis ellipsoid relative error ellipsoid; \"evidence\", default, scaling done ``significant'' hypothesis ellipsoid extends outside error ellipsoid; \"effect.size\", hypothesis ellipsoid scale error ellipsoid. level equivalent coverage ellipsoid normally-distributed errors, defaults 0.68. alpha significance level Roy's greatest-root test statistic; size=\"evidence\", hypothesis ellipsoid scaled just touches error ellipsoid specified alpha level; larger hypothesis ellipsoid therefore indicates statistical significance; defaults 0.05. segments number segments composing ellipsoid; defaults 40. col color vector colors use plotting ellipsoids; first color used error ellipsoid; remaining colors --- recycled necessary --- used hypothesis ellipsoid. single color can given, case used ellipsoid. convenience, default colors heplots produced given session can changed assigning color vector via options(heplot3d.colors=c(...). Otherwise, default colors c(\"pink\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lwd two-element vector giving line width drawing ellipsoids (including degenerate ellipse) drawing ellipsoids degenerate line segment. default c(1, 4). shade logical scalar vector, indicating whether ellipsoids rendered shade3d. Works like col, except FALSE used 1 df degenerate ellipsoid. shade.alpha numeric value range [0,1], vector values, giving alpha transparency ellipsoids rendered shade=TRUE. wire logical scalar vector, indicating whether ellipsoids rendered wire3d. Works like col, except TRUE used 1 df degenerate ellipsoid. bg.col background colour, \"white\" \"black\", defaulting \"white\". fogtype type ``fog'' use depth-cueing; default \"none\". See bg. fov field view angle; controls perspective. See viewpoint. offset proportion axes set labels; defaults 0.01. xlab x-axis label; defaults name x variable. ylab y-axis label; defaults name y variable. zlab z-axis label; defaults name z variable. xlim x-axis limits; absent, computed data. ylim y-axis limits; absent, computed data. zlim z-axis limits; absent, computed data. cex.label text size ellipse labels add TRUE, add current plot; default FALSE. TRUE, error ellipsoid neither plotted returned output object. verbose TRUE, print MANOVA table details hypothesis tests; default FALSE. warn.rank TRUE, suppress warnings rank hypothesis matrix ellipsoid collapses ellipse line; default FALSE.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Three-Dimensional HE Plots — heplot3d","text":"heplot3d invisibly returns list containing bounding boxes error (E) ellipsoid term linear hypothesis specified call. 2 x 3 matrix rownames \"min\" \"max\" colnames corresponding variables plotted. additional component, center, contains coordinates centroid plot. function also leaves object named .frame global environment, containing rgl object IDs axes, axis labels, bounding box; deleted axes, etc. redrawn plot added .","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Three-Dimensional HE Plots — heplot3d","text":"H matrix term rank < 3, ellipsoid collapses ellipse (rank(H)=2) line (rank(H)=1). Rotating plot can particularly revealing, showing views H variation particularly large small relation E variation. See play3d movie3d details creating animations. arguments xlim, ylim, zlim can used expand bounding box axes, decrease .","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Three-Dimensional HE Plots — heplot3d","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17(6), 1-42. https://www.jstatsoft.org/v17/i06/ Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Three-Dimensional HE Plots — heplot3d","text":"","code":"# Soils data, from carData package data(Soils, package = \"carData\") soils.mod <- lm(cbind(pH,N,Dens,P,Ca,Mg,K,Na,Conduc) ~ Block + Contour*Depth, data=Soils) car::Anova(soils.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Block 3 1.6758 3.7965 27 81 1.777e-06 *** #> Contour 2 1.3386 5.8468 18 52 2.730e-07 *** #> Depth 3 1.7951 4.4697 27 81 8.777e-08 *** #> Contour:Depth 6 1.2351 0.8640 54 180 0.7311 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(soils.mod, variables=c(\"Ca\", \"Mg\")) pairs(soils.mod, terms=\"Depth\", variables=c(\"pH\", \"N\", \"P\", \"Ca\", \"Mg\")) heplot3d(soils.mod, variables=c(\"Mg\", \"Ca\", \"Na\"), wire=FALSE) # Plastic data plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) if (FALSE) { heplot3d(plastic.mod, col=c(\"red\", \"blue\", \"brown\", \"green3\"), wire=FALSE) }"},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal heplots functions — heplots-internal","title":"Internal heplots functions — heplots-internal","text":"Internal functions heplots package","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal heplots functions — heplots-internal","text":"","code":"lambda.crit( alpha, p, dfh, dfe, test.statistic = c(\"Roy\", \"HLT\", \"Hotelling-Lawley\") ) Roy.crit(alpha, p, dfh, dfe) HLT.crit(alpha, p, dfh, dfe) he.rep(x, n) Pillai(eig, q, df.res) Wilks(eig, q, df.res) HL(eig, q, df.res) Roy(eig, q, df.res)"},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal heplots functions — heplots-internal","text":"alpha significance level critical values multivariate statistics p Number variables dfh degrees freedom hypothesis dfe degrees freedom error test.statistic Test statistic used multivariate test x argument heplot heplot3d repeated Error hypothesis terms n Number hypothesis terms","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal heplots functions — heplots-internal","text":"critical value test statistic","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Internal heplots functions — heplots-internal","text":"functions calculate critical values multivariate test statistics (Wilks' Lambda, Hotelling-Lawley trace, Roy's maximum root test) used setting size H ellipses relative E. intended called user.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal heplots functions — heplots-internal","text":"Michael Friendly friendly@yorku.ca","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":null,"dir":"Reference","previous_headings":"","what":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"heplots package provides functions visualizing hypothesis tests multivariate linear models (MANOVA, multivariate multiple regression, MANCOVA, repeated measures designs). plots represent sums--squares--products matrices linear hypotheses error using ellipses (two dimensions), ellipsoids (three dimensions), line segments one dimension. See Fox, Friendly Monette (2007) brief introduction Friendly, Monette Fox (2013) general discussion role elliptical geometry statistical understanding.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"topics now addressed include robust MLMs, tests equality covariance matrices MLMs, chi square Q-Q plots MLMs. package also provides collection data sets illustrating variety multivariate linear models types listed , together graphical displays. Several tutorial vignettes also included. See vignette(package=\"heplots\"). graphical functions contained display multivariate model effects variable (data) space, one response variables (contrasts among response variables repeated measures designs). list(list(\"heplot\")) constructs two-dimensional plots model terms linear hypotheses pairs response variables multivariate linear models. list(list(\"heplot3d\")) constructs analogous 3D plots triples response variables. list(list(\"pairs.mlm\")) constructs ``matrix'' pairwise plots. list(list(\"heplot1d\")) constructs 1-dimensional analogs plots model terms linear hypotheses single response variables. repeated measure designs, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. terms involving within-subject effects, functions carry linear transformation matrix Y responses matrix Y M, M model matrix term intra-subject design produce plots H E matrices transformed space. vignette repeated describes graphical methods repeated measures designs. related car package calculates Type II Type III tests multivariate linear hypotheses using Anova linearHypothesis functions. candisc-package package provides functions visualizing effects MLM model terms low-dimensional canonical space shows largest hypothesis relative error variation. candisc package now also includes related methods canonical correlation analysis. heplots package also contains large number multivariate data sets examples analyses graphic displays. Use data(package=\"heplots\") see current list.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples. Journal Statistical Software, 17(6), 1-42. https://www.jstatsoft.org/v17/i06/ c(\"\\Sexpr[results=rd,stage=build]tools:::Rd_expr_doi(\\\"#1\\\")\", \"10.18637/jss.v017.i06\")doi: 10.18637/jss.v017.i06 Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf Fox, J., Friendly, M. & Monette, G. (2007). Visual hypothesis tests multivariate linear models: heplots package R. DSC 2007: Directions Statistical Computing. https://socialsciences.mcmaster.ca/jfox/heplots-dsc-paper.pdf Friendly, M. (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Fox, J., Friendly, M. & Weisberg, S. (2013). Hypothesis Tests Multivariate Linear Models Using car Package. R Journal, 5(1), https://journal.r-project.org/archive/2013-1/fox-friendly-weisberg.pdf. Friendly, M., Monette, G. & Fox, J. (2013). Elliptical Insights: Understanding Statistical Methods Elliptical Geometry. Statistical Science, 2013, 28 (1), 1-39, http://datavis.ca/papers/ellipses.pdf. Friendly, M. & Sigal, M. (2014). Recent Advances Visualizing Multivariate Linear Models. Revista Colombiana de Estadistica, 37, 261-283 Friendly, M. & Sigal, M. (2016). Graphical Methods Multivariate Linear Models Psychological Research: R Tutorial. Submitted publication.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"Michael Friendly, John Fox, Georges Monette Maintainer: Michael Friendly, friendly@yorku.ca, http://datavis.ca","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":null,"dir":"Reference","previous_headings":"","what":"Recovery from Elective Herniorrhaphy — Hernior","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"data set measures post-operative recovery 32 patients undergoing elective herniorrhaphy operation, relation pre-operative measures.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"data frame 32 observations following 9 variables. age patient age sex patient sex, factor levels f m pstat physical status (ignoring associated operation). 1-5 scale, 1=perfect health, 5=poor health. build body build, 1-5 scale, 1=emaciated, 2=thin, 3=average, 4=fat, 5=obese. cardiac preoperative complications heart, 1-4 scale, 1=none, 2=mild, 3=moderate, 4=severe. resp preoperative complications respiration, 1-4 scale, 1=none, 2=mild, 3=moderate, 4=severe. leave condition upon leaving recovery room, 1-4 scale, 1=routine recovery, 2=intensive care observation overnight, 3=intensive care, moderate care required, 4=intensive care, moderate care required. los length stay hospital operation (days) nurse level nursing required one week operation, 1-5 scale, 1=intense, 2=heavy, 3=moderate, 4=light, 5=none (?); see Details","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"Mosteller, F. Tukey, J. W. (1977), Data analysis regression, Reading, MA: Addison-Wesley. Data Exhibit 8, 567-568. source: study B. McPeek J. P. Gilbert Harvard Anesthesia Center.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"leave, nurse los outcome measures; remaining variables potential predictors recovery status. variable nurse recorded 1-4, remaining (20) entries entered \"-\" sources. clear whether means \"none\" NA. former interpretation used constructing R data frame, nurse==5 observations. Using Hernior$nurse[Hernior$nurse==5] <- NA change interpretation, render nurse useless multivariate analysis. ordinal predictors instead treated factors, also potential interactions explored.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"Hand, D. J., Daly, F., Lunn, . D., McConway, K. J. Ostrowski, E. (1994), Handbook Small Data Sets, Number 484, 390-391.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"","code":"library(car) data(Hernior) str(Hernior) #> 'data.frame':\t32 obs. of 9 variables: #> $ age : int 78 60 68 62 76 76 64 74 68 79 ... #> $ sex : Factor w/ 2 levels \"f\",\"m\": 2 2 2 2 2 2 2 1 2 1 ... #> $ pstat : int 2 2 2 3 3 1 1 2 3 2 ... #> $ build : int 3 3 3 5 4 3 2 3 4 2 ... #> $ cardiac: int 1 2 1 3 3 1 1 2 2 1 ... #> $ resp : int 1 2 1 1 2 1 2 2 1 1 ... #> $ leave : int 2 2 1 1 2 1 1 1 1 2 ... #> $ los : int 9 4 7 35 9 7 5 16 7 11 ... #> $ nurse : num 3 5 4 3 4 5 5 3 5 3 ... Hern.mod <- lm(cbind(leave, nurse, los) ~ age + sex + pstat + build + cardiac + resp, data=Hernior) car::Anova(Hern.mod, test=\"Roy\") # actually, all tests are identical #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> age 1 0.16620 1.2742 3 23 0.30668 #> sex 1 0.02681 0.2055 3 23 0.89150 #> pstat 1 0.50028 3.8355 3 23 0.02309 * #> build 1 0.34506 2.6455 3 23 0.07318 . #> cardiac 1 0.29507 2.2622 3 23 0.10820 #> resp 1 0.32969 2.5277 3 23 0.08245 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test overall regression print(linearHypothesis(Hern.mod, c(\"age\", \"sexm\", \"pstat\", \"build\", \"cardiac\", \"resp\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 6 1.1019849 2.419161 18 75.00000 0.00413563 ** #> Wilks 6 0.2173439 2.604648 18 65.53911 0.00252395 ** #> Hotelling-Lawley 6 2.2679660 2.729959 18 65.00000 0.00162850 ** #> Roy 6 1.5543375 6.476406 6 25.00000 0.00032318 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # joint test of age, sex & caridac print(linearHypothesis(Hern.mod, c(\"age\", \"sexm\", \"cardiac\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 3 0.3826974 1.218485 9 75.00000 0.296709 #> Wilks 3 0.6305421 1.301115 9 56.12656 0.257126 #> Hotelling-Lawley 3 0.5649409 1.360043 9 65.00000 0.224709 #> Roy 3 0.5249507 4.374589 3 25.00000 0.013162 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # HE plots clr <- c(\"red\", \"darkgray\", \"blue\", \"darkgreen\", \"magenta\", \"brown\", \"black\") heplot(Hern.mod, col=clr) pairs(Hern.mod, col=clr) ## Enhancing the pairs plot ... # create better variable labels vlab <- c(\"LeaveCondition\\n(leave)\", \"NursingCare\\n(nurse)\", \"LengthOfStay\\n(los)\") # Add ellipse to test all 5 regressors simultaneously hyp <- list(\"Regr\" = c(\"age\", \"sexm\", \"pstat\", \"build\", \"cardiac\", \"resp\")) pairs(Hern.mod, hypotheses=hyp, col=clr, var.labels=vlab) ## Views in canonical space for the various predictors if (require(candisc)) { Hern.canL <- candiscList(Hern.mod) plot(Hern.canL, term=\"age\") plot(Hern.canL, term=\"sex\") plot(Hern.canL, term=\"pstat\") # physical status } #> Loading required package: candisc #> #> Attaching package: 'candisc' #> The following object is masked from 'package:stats': #> #> cancor"},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot an Interpolation Between Two Related Data Sets — interpPlot","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Plot interpolation two related data sets, typically transformations . function designed used animations.","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"","code":"interpPlot( xy1, xy2, alpha, xlim, ylim, points = TRUE, add = FALSE, col = palette()[1], ellipse = FALSE, ellipse.args = NULL, abline = FALSE, col.lines = palette()[2], lwd = 2, id.method = \"mahal\", labels = rownames(xy1), id.n = 0, id.cex = 1, id.col = palette()[1], segments = FALSE, segment.col = \"darkgray\", ... )"},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"xy1 First data set, 2-column matrix data.frame xy2 Second data set, 2-column matrix data.frame alpha value interpolation fraction, typically (necessarily) 0 <= alpha <= 1). xlim, ylim x, y limits plot. specified, function uses ranges rbind(xy1, xy2). points Logical. Whether plot points current interpolation? add Logical. Whether add existing plot? col Color plotted points. ellipse logical. TRUE plot dataEllipse ellipse.args arguments passed dataEllipse abline logical. TRUE plot linear regression line XY col.lines line color lwd line width id.method points identified. See showLabels. labels observation labels id.n Number points identified. set zero, points identified. id.cex Controls size plotted labels. default 1 id.col Controls color plotted labels. segments logical. TRUE draw lines segments xy1 xy segment.col line color segments ... arguments passed plot()","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Returns invisibly interpolated XY points.","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Points plotted via linear interpolation, $$ XY = XY1 + \\alpha (XY2 - XY1)$$ function allows plotting data ellipse, linear regression line, line segments showing movement points. Interpolations linear can obtained using non-linear series alpha values. example alpha=sin(seq(0,1,.1)/sin(1) give sinusoid interpolation.","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"examples just use -screen animations console graphics window. animation package provides facilities save various formats.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"","code":"################################################# # animate an AV plot from marginal to conditional ################################################# data(Duncan, package=\"carData\") duncmod <- lm(prestige ~ income + education, data=Duncan) mod.mat <- model.matrix(duncmod) # function to do an animation for one variable dunc.anim <- function(variable, other, alpha=seq(0, 1, .1)) { var <- which(variable==colnames(mod.mat)) duncdev <- scale(Duncan[,c(variable, \"prestige\")], scale=FALSE) duncav <- lsfit(mod.mat[, -var], cbind(mod.mat[, var], Duncan$prestige), intercept = FALSE)$residuals colnames(duncav) <- c(variable, \"prestige\") lims <- apply(rbind(duncdev, duncav),2,range) for (alp in alpha) { main <- if(alp==0) paste(\"Marginal plot:\", variable) else paste(round(100*alp), \"% Added-variable plot:\", variable) interpPlot(duncdev, duncav, alp, xlim=lims[,1], ylim=lims[,2], pch=16, main = main, xlab = paste(variable, \"| \", alp, other), ylab = paste(\"prestige | \", alp, other), ellipse=TRUE, ellipse.args=(list(levels=0.68, fill=TRUE, fill.alpha=alp/2)), abline=TRUE, id.n=3, id.cex=1.2, cex.lab=1.25) Sys.sleep(1) } } # show these in the R console if(interactive()) { dunc.anim(\"income\", \"education\") dunc.anim(\"education\", \"income\") } ############################################ # correlated bivariate data with 2 outliers # show rotation from data space to PCA space ############################################ set.seed(123345) x <- c(rnorm(100), 2, -2) y <- c(x[1:100] + rnorm(100), -2, 2) XY <- cbind(x=x, y=y) rownames(XY) <- seq_along(x) XY <- scale(XY, center=TRUE, scale=FALSE) # start, end plots car::dataEllipse(XY, pch=16, levels=0.68, id.n=2) #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter mod <- lm(y~x, data=as.data.frame(XY)) abline(mod, col=\"red\", lwd=2) pca <- princomp(XY, cor=TRUE) scores <- pca$scores car::dataEllipse(scores, pch=16, levels=0.68, id.n=2) #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter abline(lm(Comp.2 ~ Comp.1, data=as.data.frame(scores)), lwd=2, col=\"red\") # show interpolation # functions for labels, as a function of alpha main <- function(alpha) {if(alpha==0) \"Original data\" else if(alpha==1) \"PCA scores\" else paste(round(100*alpha,1), \"% interpolation\")} xlab <- function(alpha) {if(alpha==0) \"X\" else if(alpha==1) \"PCA.1\" else paste(\"X +\", alpha, \"(X - PCA.1)\")} ylab <- function(alpha) {if(alpha==0) \"Y\" else if(alpha==1) \"PCA.2\" else paste(\"Y +\", alpha, \"(Y - PCA.2)\")} interpPCA <- function(XY, alpha = seq(0,1,.1)) { XY <- scale(XY, center=TRUE, scale=FALSE) if (is.null(rownames(XY))) rownames(XY) <- 1:nrow(XY) pca <- princomp(XY, cor=TRUE) scores <- pca$scores for (alp in alpha) { interpPlot(XY, scores, alp, pch=16, main = main(alp), xlab = xlab(alp), ylab = ylab(alp), ellipse=TRUE, ellipse.args=(list(levels=0.68, fill=TRUE, fill.alpha=(1-alp)/2)), abline=TRUE, id.n=2, id.cex=1.2, cex.lab=1.25, segments=TRUE) Sys.sleep(1) } } # show in R console if(interactive()) { interpPCA(XY) } if (FALSE) { library(animation) saveGIF({ interpPCA(XY, alpha <- seq(0,1,.1))}, movie.name=\"outlier-demo.gif\", ani.width=480, ani.height=480, interval=1.5) }"},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":null,"dir":"Reference","previous_headings":"","what":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"dataset, Grice & Iwasaki (2007), gives scores five personality scales NEO PI-r (Costa & McCrae, 1992), called \"Big Five\" personality traits: Neuroticism, Extraversion, Openness--Experience, Agreeableness, Conscientiousness.","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"data frame 203 observations following 7 variables. ID ID number Group factor levels Eur Asian_Amer Asian_Intl N Neuroticism score E Extraversion score O Openness score Agreeableness score C Conscientiousness score","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"Grice, J., & Iwasaki, M. (2007). truly multivariate approach MANOVA. Applied Multivariate Research, 12, 199-226. https://doi.org/10.22329/amr.v12i3.660.","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"groups : Eur European Americans (Caucasians living United States entire lives) Asian_Amer Asian Americans (Asians living United States since age 6 years) Asian_Intl Asian Internationals (Asians moved United States 6th birthday) factor Group set compare E vs. Asian two Asian groups","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"Costa Jr, P. T., & McCrae, R. R. (1992). Revised NEO Personality Inventory (NEO PI-R) NEO Five-Factor Inventory (NEOFFI) professional manual. Psychological Assessment Resources.","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"","code":"data(Iwasaki_Big_Five) str(Iwasaki_Big_Five) #> tibble [203 x 7] (S3: tbl_df/tbl/data.frame) #> $ ID : num [1:203] 1 2 3 4 5 6 7 8 9 10 ... #> $ Group: Factor w/ 3 levels \"Eur\",\"Asian_Amer\",..: 3 3 3 3 3 3 3 3 3 3 ... #> ..- attr(*, \"contrasts\")= num [1:3, 1:2] 2 -1 -1 0 1 -1 #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : chr [1:3] \"Eur\" \"Asian_Amer\" \"Asian_Intl\" #> .. .. ..$ : NULL #> $ N : num [1:203] 87 101 63 104 70 63 77 123 76 59 ... #> $ E : num [1:203] 117 134 135 118 114 131 140 122 141 133 ... #> $ O : num [1:203] 130 123 111 108 110 108 118 115 109 104 ... #> $ A : num [1:203] 124 115 71 107 119 125 131 99 134 130 ... #> $ C : num [1:203] 127 124 134 111 120 138 103 107 142 126 ... mod <- lm(cbind(N, E, O, A, C) ~ Group, data=Iwasaki_Big_Five) car::Anova(mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Group 2 0.41862 10.43 10 394 1.106e-15 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # heplots labs <- c(\"Neuroticism\", \"Extraversion\", \"Openness\", \"Agreeableness\", \"Consientiousness\" ) heplot(mod, fill = TRUE, fill.alpha = 0.2, cex.lab = 1.5, xlab = labs[1], ylab = labs[2]) heplot(mod, variables = c(2,5), fill = TRUE, fill.alpha = 0.2, cex.lab = 1.5, xlab = labs[2], ylab = labs[5]) pairs(mod, fill = TRUE, fill.alpha = 0.2, var.labels = labs)"},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":null,"dir":"Reference","previous_headings":"","what":"Label an ellipse — label.ellipse","title":"Label an ellipse — label.ellipse","text":"label.ellipse used draw text label ellipse center somewhere around periphery flexible way.","code":""},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label an ellipse — label.ellipse","text":"","code":"label.ellipse( ellipse, label, col = \"black\", label.pos = NULL, xpd = TRUE, tweak = 0.5 * c(strwidth(\"M\"), strheight(\"M\")), ... )"},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label an ellipse — label.ellipse","text":"ellipse two-column matrix coordinates ellipse boundary label Character string used ellipse label col Label color label.pos Label position relative ellipse. See details xpd label allowed extend beyond plot limits? tweak vector two lengths used tweak label positions ... parameters passed text, e.g., cex, ...","code":""},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Label an ellipse — label.ellipse","text":"label.pos=NULL, function uses sign correlation represented ellipse determine position top (\\(r>=0\\)) bottom (\\(r<0\\)) ellipse. Integer values 0, 1, 2, 3 4, respectively indicate positions center, , left , right max/min coordinates ellipse. Label positions can also specified corresponding character strings c(\"center\", \"bottom\", \"left\", \"top\", \"right\"), compass directions, c(\"C\", \"S\", \"W\", \"N\", \"E\"), integer label.pos values, 5:nrow(ellipse) taken indices row coordinates used ellipse label. Equivalently, label.pos can also fraction (0,1), interpreted fraction way around unit circle, counterclockwise point (1,0).","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Label an ellipse — label.ellipse","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label an ellipse — label.ellipse","text":"","code":"circle <- function(center=c(0,0), radius=1, segments=60) { angles <- (0:segments)*2*pi/segments circle <- radius * cbind( cos(angles), sin(angles)) t( c(center) + t( circle )) } label_demo <- function(ell) { plot(-2:2, -2:2, type=\"n\", asp=1, main=\"label.pos values and points (0:60)\") lines(ell, col=\"gray\") points(0, 0, pch=\"+\", cex=2) labs <- c(\"center\", \"bot\", \"left\", \"top\", \"right\") for (i in 0:4) { label.ellipse(ell, label=paste(i, \":\", labs[i+1]), label.pos = i) } for( i in 5*c(1,2, 4,5, 7,8, 10,11)) { points(ell[i,1], ell[i,2], pch=16) label.ellipse(ell, label=i, label.pos=i) } } circ <- circle(radius=1.8) label_demo(circ) ell <-circ %*% chol(matrix( c(1, .5, .5, 1), 2, 2)) label_demo(ell)"},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":null,"dir":"Reference","previous_headings":"","what":"Levene Tests of Homogeneity of Variances — leveneTests","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"function extends leveneTest multivariate response setting. performs Levene test homogeneity variances set response variables, prints compact summary.","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"","code":"leveneTests(y, group, center = median, ...)"},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"y data frame matrix numeric response variables multivariate linear model. group vector factor object giving group corresponding elements rows y center name function compute center group; mean gives original Levene's (1960) test; default, median, provides robust test suggested Brown Forsythe (1974). ... arguments, passed leveneTest","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"object classes \"anova\" \"data.frame\", one observation response variable y.","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"Levene, H. (1960). Robust Tests Equality Variances. Olkin, . et al. (Eds.), Contributions Probability Statistics: Essays Honor Harold Hotelling, Stanford University Press, 278-292. Brown, M. B. & Forsythe, . B. (1974). Robust Tests Equality Variances Journal American Statistical Association, 69, 364-367.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"","code":"leveneTests(iris[,1:4], iris$Species) #> Levene's Tests for Homogeneity of Variance (center = median) #> #> df1 df2 F value Pr(>F) #> Sepal.Length 2 147 6.3527 0.002259 ** #> Sepal.Width 2 147 0.5902 0.555518 #> Petal.Length 2 147 19.4803 3.129e-08 *** #> Petal.Width 2 147 19.8924 2.261e-08 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # handle a 1-column response? leveneTests(iris[,1, drop=FALSE], iris$Species) #> Levene's Tests for Homogeneity of Variance (center = median) #> #> df1 df2 F value Pr(>F) #> Sepal.Length 2 147 6.3527 0.002259 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 data(Skulls, package=\"heplots\") leveneTests(Skulls[,-1], Skulls$epoch) #> Levene's Tests for Homogeneity of Variance (center = median) #> #> df1 df2 F value Pr(>F) #> mb 4 145 1.0367 0.3905 #> bh 4 145 0.7171 0.5816 #> bl 4 145 0.6797 0.6071 #> nh 4 145 1.0418 0.3878"},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"function uses asymptotic results described Cai et. al (2016), Theorem 1, calculate approximate, normal theory confidence intervals (CIs) log determinant one sample covariance matrices.","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"","code":"logdetCI(cov, n, conf = 0.95, method = 1, bias.adj = TRUE)"},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"cov covariance matrix (named) list covariance matrices, size n sample size, vector sample sizes, one covariance matrix conf confidence level method Three methods provided, based Cai et. al Theorem 1 (method=1), Corollary 1 (method=2) Corollary 2 (method=3), different bias SE values. bias.adj logical; set FALSE exclude bias correction term.","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"data frame one row covariance matrix. lower upper boundaries confidence intervals. columns logdet, bias, se.","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"results translated CI via approximation $$ \\log det( \\widehat{\\Sigma} ) - bias \\pm z_{1 - \\alpha/2} \\times SE $$ \\(\\widehat{\\Sigma}\\) sample estimate population covariance matrix, \\(bias\\) bias correction constant \\(SE\\) width factor confidence interval. \\(bias\\) \\(SE\\) functions sample size, \\(n\\) number variables, \\(p\\). function included provide approximation graphical accuracy use Box's M test equality covariance matrices, boxM associated plot.boxM method. Cai et. al (2015) claim Theorem 1 holds either \\(p\\) fixed \\(p(n)\\) growing \\(n\\), long \\(p(n) \\le n\\). Corollary 1 (method=2) special case \\(p\\) fixed. Corollary 2 (method=3) special case \\(0 \\le p/n < 1\\) fixed. properties CI estimator unknown small moderate sample sizes, seems one available. therefore experimental version package subject change future. \\(bias\\) term offsets confidence interval sample estimate \\( \\log det( \\widehat{\\Sigma} ) \\). \\(p\\) large relative \\(n\\), confidence interval may overlap sample estimate. Strictly speaking, estimator applies MLE covariance matrix \\( \\widehat{\\Sigma}\\), .e., using \\(n\\) rather \\(n-1\\) divisor. factor \\((n-1 / n)\\) yet taken account .","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"Cai, T. T.; Liang, T. & Zhou, H. H. (2015) Law log determinant sample covariance matrix optimal estimation differential entropy high-dimensional Gaussian distributions. Journal Multivariate Analysis, 137, 161-172. doi: 10.1016/j.jmva.2015.02.003","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"","code":"data(iris) iris.mod <- lm(as.matrix(iris[,1:4]) ~ iris$Species) iris.boxm <- boxM(iris.mod) cov <- c(iris.boxm$cov, list(pooled=iris.boxm$pooled)) n <- c(rep(50, 3), 150) CI <- logdetCI( cov, n=n, conf=.95, method=1) CI #> logdet bias se lower upper #> setosa -13.067360 -0.20598584 0.4062465 -13.657603 -12.065146 #> versicolor -10.874325 -0.20598584 0.4062465 -11.464568 -9.872111 #> virginica -8.927058 -0.20598584 0.4062465 -9.517301 -7.924844 #> pooled -9.958539 -0.06731274 0.2321101 -10.346154 -9.436299 plot(iris.boxm, xlim=c(-14, -8), main=\"Iris data, Box's M test\", gplabel=\"Species\") arrows(CI$lower, 1:4, CI$upper, 1:4, lwd=3, angle=90, len=.1, code=3) CI <- logdetCI( cov, n=n, conf=.95, method=1, bias.adj=FALSE) CI #> logdet bias se lower upper #> setosa -13.067360 0 0.4062465 -13.863589 -12.271132 #> versicolor -10.874325 0 0.4062465 -11.670553 -10.078097 #> virginica -8.927058 0 0.4062465 -9.723287 -8.130830 #> pooled -9.958539 0 0.2321101 -10.413466 -9.503611 plot(iris.boxm, xlim=c(-14, -8), main=\"Iris data, Box's M test\", gplabel=\"Species\") arrows(CI$lower, 1:4, CI$upper, 1:4, lwd=3, angle=90, len=.1, code=3)"},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":null,"dir":"Reference","previous_headings":"","what":"Classical and Robust Mahalanobis Distances — Mahalanobis","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"function convenience wrapper mahalanobis offering also possibility calculate robust Mahalanobis squared distances using MCD MVE estimators center covariance (cov.rob)","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"","code":"Mahalanobis( x, center, cov, method = c(\"classical\", \"mcd\", \"mve\"), nsamp = \"best\", ... )"},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"x numeric matrix data frame , say, \\(p\\) columns center mean vector data; cov supplied, function simply calls mahalanobis calculate result cov covariance matrix (p x p) data method estimation method used center covariance, one : \"classical\" (product-moment), \"mcd\" (minimum covariance determinant), \"mve\" (minimum volume ellipsoid). nsamp passed cov.rob ... arguments passed cov.rob","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"vector length nrow(x) containing squared distances.","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"missing data row x causes NA returned row.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"","code":"summary(Mahalanobis(iris[, 1:4])) #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.3195 2.1871 3.0628 3.9733 4.8053 13.1011 summary(Mahalanobis(iris[, 1:4], method=\"mve\")) #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4461 2.5331 4.0110 5.5585 6.8295 25.7951 summary(Mahalanobis(iris[, 1:4], method=\"mcd\")) #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4352 2.7301 5.7160 19.2207 36.7121 98.0335"},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":null,"dir":"Reference","previous_headings":"","what":"Mark a point null hypothesis in an HE plot — mark.H0","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"utility function draw label point 2D (3D) plot corresponding point null hypothesis tested. useful repeated measure designs null hypotheses within-S effects often correspond (0,0).","code":""},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"","code":"mark.H0( x = 0, y = 0, z = NULL, label, cex = 2, pch = 19, col = \"green3\", lty = 2, pos = 2 )"},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"x Horizontal coordinate H0 y Vertical coordinate H0 z z coordinate H0. NULL, function assumes heplot3d plot drawn. label Text used label point. Defaults expression(H[0]) 2D plots. cex Point text size. 3D plots, function uses size=5*cex call points3d. pch Plot character. Ignored 3D plots. col Color text, character lines lty Line type vertical horizontal reference lines. drawn lty=0. pos Position text. Ignored 3D plots","code":""},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"None. Used side effect drawing current plot.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"","code":"Vocab.mod <- lm(cbind(grade8,grade9,grade10,grade11) ~ 1, data=VocabGrowth) idata <-data.frame(grade=ordered(8:11)) heplot(Vocab.mod, type=\"III\", idata=idata, idesign=~grade, iterm=\"grade\", main=\"HE plot for Grade effect\") mark.H0()"},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":null,"dir":"Reference","previous_headings":"","what":"Math scores for basic math and word problems — mathscore","title":"Math scores for basic math and word problems — mathscore","text":"Scores two groups school children taught different math teachers tested basic math (BM) problems solving word problems (WP).","code":""},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Math scores for basic math and word problems — mathscore","text":"data frame 12 observations following 3 variables. group factor levels 1 2 BM Basic Math score, numeric vector WP Word Problems score, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Math scores for basic math and word problems — mathscore","text":"Fictitious data","code":""},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Math scores for basic math and word problems — mathscore","text":"","code":"data(mathscore) str(mathscore) #> 'data.frame':\t12 obs. of 3 variables: #> $ group: Factor w/ 2 levels \"1\",\"2\": 1 1 1 1 1 1 2 2 2 2 ... #> $ BM : int 190 170 180 200 150 180 160 190 150 160 ... #> $ WP : int 90 80 80 120 60 70 120 150 90 130 ... math.mod <- lm(cbind(BM, WP) ~ group, data=mathscore) car::Anova(math.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 1 0.86518 28.878 2 9 0.0001213 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # scatterplot with data ellipses car::scatterplot(WP ~ BM | group, data=mathscore, ellipse=list(levels=0.68), smooth=FALSE, pch=c(15,16), legend=list(coords = \"topright\")) # HE plot heplot(math.mod, fill=TRUE, cex=2, cex.lab=1.8, xlab=\"Basic math\", ylab=\"Word problems\")"},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":null,"dir":"Reference","previous_headings":"","what":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"Male participants shown picture one three young women. Pilot work indicated one woman beautiful, another average physical attractiveness, third unattractive. Participants rated woman saw twelve attributes. measures used check manipulation photo.","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"data frame 114 observations following 17 variables. Attr Attractiveness photo, factor levels Beautiful Average Unattractive Crime Type crime, factor levels Burglary (theft items victim's room) Swindle (conned male victim) Years length sentence given defendant mock juror subject Serious rating serious subject thought defendant's crime exciting rating photo 'exciting' calm rating photo 'calm' independent rating photo 'independent' sincere rating photo 'sincere' warm rating photo 'warm' phyattr rating photo 'physical attractiveness' sociable rating photo 'exciting' kind rating photo 'kind' intelligent rating photo 'intelligent' strong rating photo 'strong' sophisticated rating photo 'sophisticated' happy rating photo 'happy' ownPA self-rating subject 'physical attractiveness'","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"Dr. Wuensch's StatData Page, http://core.ecu.edu/psyc/wuenschk/StatData/PLASTER.dat","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"participants told person photo committed Crime, asked rate seriousness crime recommend prison sentence, Years. attractiveness \"defendant\" influence sentence perceived seriousness crime? attractiveness interact nature crime?","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"Data thesis Plaster, M. E. (1989). Inmates mock jurors: effects physical attractiveness upon juridic decisions. M.. thesis, Greenville, NC: East Carolina University.","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"","code":"# manipulation check: test ratings of the photos classified by Attractiveness jury.mod1 <- lm( cbind(phyattr, happy, independent, sophisticated) ~ Attr, data=MockJury) car::Anova(jury.mod1, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 1.7672 48.156 4 109 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod1, main=\"HE plot for manipulation check\") pairs(jury.mod1) if (require(candisc)) { jury.can <- candisc(jury.mod1) jury.can heplot(jury.can, main=\"Canonical HE plot\") } #> Vector scale factor set to 8.817675 # influence of Attr of photo and nature of crime on Serious and Years jury.mod2 <- lm( cbind(Serious, Years) ~ Attr * Crime, data=MockJury) car::Anova(jury.mod2, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 0.075607 4.0828 2 108 0.01953 * #> Crime 1 0.004697 0.2513 2 107 0.77824 #> Attr:Crime 2 0.050104 2.7056 2 108 0.07136 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod2) # stepdown test (ANCOVA), controlling for Serious jury.mod3 <- lm( Years ~ Serious + Attr * Crime, data=MockJury) car::Anova(jury.mod3) #> Anova Table (Type II tests) #> #> Response: Years #> Sum Sq Df F value Pr(>F) #> Serious 379.49 1 41.1423 3.938e-09 *** #> Attr 74.22 2 4.0230 0.02067 * #> Crime 3.92 1 0.4255 0.51563 #> Attr:Crime 49.30 2 2.6723 0.07370 . #> Residuals 986.95 107 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # need to consider heterogeneous slopes? jury.mod4 <- lm( Years ~ Serious * Attr * Crime, data=MockJury) car::Anova(jury.mod3, jury.mod4) #> Anova Table (Type II tests) #> #> Response: Years #> Sum Sq Df F value Pr(>F) #> Serious 379.49 1 42.9427 2.338e-09 *** #> Attr 74.22 2 4.1991 0.01768 * #> Crime 3.92 1 0.4441 0.50667 #> Attr:Crime 49.30 2 2.7892 0.06616 . #> Residuals 901.38 102 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":null,"dir":"Reference","previous_headings":"","what":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"primary purpose study (Hartman, 2016, Heinrichs et al. (2015)) evaluate patterns levels performance neurocognitive measures among individuals schizophrenia schizoaffective disorder using well-validated, comprehensive neurocognitive battery specifically designed individuals psychosis (Heinrichs et al. (2008))","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"data frame 242 observations following 10 variables. Dx Diagnostic group, factor levels Schizophrenia Schizoaffective Control Speed Speed processing domain T score, numeric vector Attention Attention/Vigilance Domain T score, numeric vector Memory Working memory numeric vector Verbal Verbal Learning Domain T score, numeric vector Visual Visual Learning Domain T score, numeric vector ProbSolv Reasoning/Problem Solving Domain T score, numeric vector SocialCog Social Cognition Domain T score, numeric vector Age Subject age, numeric vector Sex Subject gender, factor levels Female Male","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"Hartman, L. . (2016). Schizophrenia Schizoaffective Disorder: One Condition Two? Unpublished PhD dissertation, York University. Heinrichs, R.W., Pinnock, F., Muharib, E., Hartman, L.., Goldberg, J.O., & McDermid Vaz, S. (2015). Neurocognitive normality schizophrenia revisited. Schizophrenia Research: Cognition, 2 (4), 227-232. doi: 10.1016/j.scog.2015.09.001","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"main interest determining well measures distinguished among groups whether variables distinguished schizophrenia schizoaffective groups. Neurocognitive function assessed using MATRICS Consensus Cognitive Battery (MCCB; Nuechterlein et al., 2008). MCCB consists 10 individually administered tests measure cognitive performance seven domains: speed processing, attention/vigilance, working memory, verbal learning, visual learning, reasoning problem solving, social cognition. clinical sample comprised 116 male female patients met following criteria: 1) diagnosis schizophrenia (n = 70) schizoaffective disorder (n = 46) confirmed Structured Clinical Interview DSM-IV-TR Axis Disorders; 2) outpatient status; 3) history free developmental learning disability; 4) age 18-65; 5) history free neurological endocrine disorder; 6) concurrent DSM-IV-TR diagnosis substance use disorder. Non-psychiatric control participants (n = 146) screened medical psychiatric illness history substance abuse. Patients recruited three outpatient clinics Hamilton, Ontario, Canada. Control participants recruited local newspaper online classified advertisements paid research participation.","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"Heinrichs, R. W., Ammari, N., McDermid Vaz, S. & Miles, . (2008). schizophrenia schizoaffective disorder neuropsychologically distinguishable? Schizophrenia Research, 99, 149-154. Nuechterlein K.H., Green M.F., Kern R.S., Baade L.E., Barch D., Cohen J., Essock S., Fenton W.S., Frese F.J., Gold J.M., Goldberg T., Heaton R., Keefe R.S.E., Kraemer H., Mesholam-Gately R., Seidman L.J., Stover E., Weinberger D.R., Young .S., Zalcman S., Marder S.R. (2008) MATRICS Consensus Cognitive Battery, Part 1: Test selection, reliability, validity. American Journal Psychiatry, 165 (2), 203-213. https://pubmed.ncbi.nlm.nih.gov/18172019/.","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"","code":"library(car) data(NeuroCog) NC.mlm <- lm(cbind( Speed, Attention, Memory, Verbal, Visual, ProbSolv) ~ Dx, data=NeuroCog) Anova(NC.mlm) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Dx 2 0.2992 6.8902 12 470 1.562e-11 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test contrasts contrasts(NeuroCog$Dx) #> [,1] [,2] #> Schizophrenia -0.5 1 #> Schizoaffective -0.5 -1 #> Control 1.0 0 print(linearHypothesis(NC.mlm, \"Dx1\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.2890821 15.85866 6 234 2.8146e-15 *** #> Wilks 1 0.7109179 15.85866 6 234 2.8146e-15 *** #> Hotelling-Lawley 1 0.4066322 15.85866 6 234 2.8146e-15 *** #> Roy 1 0.4066322 15.85866 6 234 2.8146e-15 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(NC.mlm, \"Dx2\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.0063518 0.2493025 6 234 0.95924 #> Wilks 1 0.9936482 0.2493025 6 234 0.95924 #> Hotelling-Lawley 1 0.0063924 0.2493025 6 234 0.95924 #> Roy 1 0.0063924 0.2493025 6 234 0.95924 # pairwise HE plots pairs(NC.mlm, var.cex=1.5) # canonical discriminant analysis if (require(candisc)) { NC.can <- candisc(NC.mlm) NC.can plot(NC.can, ellipse=TRUE, rev.axes=c(TRUE,FALSE), pch=c(7,9,10)) } #> Vector scale factor set to 4.128"},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":null,"dir":"Reference","previous_headings":"","what":"National Longitudinal Survey of Youth Data — NLSY","title":"National Longitudinal Survey of Youth Data — NLSY","text":"dataset come small random sample U.S. National Longitudinal Survey Youth.","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"National Longitudinal Survey of Youth Data — NLSY","text":"data frame 243 observations following 6 variables. math Math achievement test score read Reading achievement test score antisoc score measure child's antisocial behavior, 0:6 hyperact score measure child's hyperactive behavior, 0:5 income yearly income child's father educ years education child's father","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"National Longitudinal Survey of Youth Data — NLSY","text":"dataset derived larger one used Patrick Curran 1997 meeting Society Research Child Development (SRCD). description now exists WayBack Machine, http://web.archive.org/web/20050404145001/http://www.unc.edu/~curran/example.html. details available http://web.archive.org/web/20060830061414/http://www.unc.edu/~curran/srcd-docs/srcdmeth.pdf.","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"National Longitudinal Survey of Youth Data — NLSY","text":"dataset, math read scores taken outcome variables. Among remaining predictors, income educ might considered background variables necessary control . Interest might focused whether behavioural variables antisoc hyperact contribute beyond .","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"National Longitudinal Survey of Youth Data — NLSY","text":"","code":"library(car) data(NLSY) #examine the data scatterplotMatrix(NLSY, smooth=FALSE) # test control variables by themselves # ------------------------------------- mod1 <- lm(cbind(read,math) ~ income+educ, data=NLSY) Anova(mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> income 1 0.034469 4.2661 2 239 0.015121 * #> educ 1 0.051521 6.4912 2 239 0.001798 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(mod1, fill=TRUE) # test of overall regression coefs <- rownames(coef(mod1))[-1] linearHypothesis(mod1, coefs) #> #> Sum of squares and products for the hypothesis: #> read math #> read 859.6586 1474.716 #> math 1474.7164 2929.558 #> #> Sum of squares and products for error: #> read math #> read 22882.46 12051.69 #> math 12051.69 23763.79 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.1166962 7.435629 4 480 8.1261e-06 *** #> Wilks 2 0.8840660 7.594147 4 478 6.1527e-06 *** #> Hotelling-Lawley 2 0.1302750 7.751361 4 476 4.6699e-06 *** #> Roy 2 0.1232808 14.793699 2 240 8.7377e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(mod1, fill=TRUE, hypotheses=list(\"Overall\"=coefs)) # additional contribution of antisoc + hyperact over income + educ # ---------------------------------------------------------------- mod2 <- lm(cbind(read,math) ~ antisoc + hyperact + income + educ, data=NLSY) Anova(mod2) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> antisoc 1 0.019343 2.3374 2 237 0.098803 . #> hyperact 1 0.014442 1.7364 2 237 0.178380 #> income 1 0.038280 4.7167 2 237 0.009801 ** #> educ 1 0.053152 6.6521 2 237 0.001546 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 coefs <- rownames(coef(mod2))[-1] heplot(mod2, fill=TRUE, hypotheses=list(\"Overall\"=coefs, \"mod2|mod1\"=coefs[1:2])) linearHypothesis(mod2, coefs[1:2]) #> #> Sum of squares and products for the hypothesis: #> read math #> read 170.3478 261.2230 #> math 261.2230 516.0188 #> #> Sum of squares and products for error: #> read math #> read 22712.12 11790.46 #> math 11790.46 23247.77 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.0239869 1.444548 4 476 0.218172 #> Wilks 2 0.9760624 1.444284 4 474 0.218264 #> Hotelling-Lawley 2 0.0244741 1.443972 4 472 0.218372 #> Roy 2 0.0221965 2.641385 2 238 0.073351 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(mod2, fill=TRUE, hypotheses=list(\"mod2|mod1\"=coefs[1:2]))"},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":null,"dir":"Reference","previous_headings":"","what":"Oslo Transect Subset Data — Oslo","title":"Oslo Transect Subset Data — Oslo","text":"Oslo data set contains chemical concentrations 332 samples different plant species collected along 120 km transect running city Oslo, Norway. subset OsloTransect data provided rrcov package.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Oslo Transect Subset Data — Oslo","text":"data frame 332 observations following 14 variables. site transect site ID, factor levels 102 103 104 105 106 107 108 109 111 112 113 114 115 116 117 118 119 121 122 123 124 125 126 127 128 129 131 132 133 134 135 136 138 139 141 142 143 144 XC X coordinate, numeric vector YC Y coordinate, numeric vector forest forest type, factor levels birspr mixdec pine sprbir sprpin spruce weather weather type, factor levels cloud moist nice rain litho lithological type, factor levels camsed (Cambro-Silurian sedimentary), gneis_o (Precambrian gneisses - Oslo), gneis_r (- Randsfjord), magm (Magmatic rocks) altitude altitude, numeric vector Cu Copper, numeric vector Fe Iron, numeric vector K Potassium, numeric vector Mg Magnesium, numeric vector Mn Manganese, numeric vector P Lead, numeric vector Zn Zinc, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Oslo Transect Subset Data — Oslo","text":"Reimann, C., Arnoldussen, ., Boyd, R., Finne, T.E., Koller, F., Nordgulen, Oe., Englmaier, P. (2007) Element contents leaves four plant species (birch, mountain ash, fern spruce) along anthropogenic geogenic concentration gradients, Science Total Environment, 377, 416-433.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Oslo Transect Subset Data — Oslo","text":"OsloTransect contains 360 observations, 9 observations per site. 7 chemical elements retained 25 contained OsloTransect data, log-transformed, following Todorov Filzmoser (2009). complete cases variables retained, two lithological types low frequency removed, leaving 332 observations.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Oslo Transect Subset Data — Oslo","text":"Todorov V. Filzmoser P. (2009) Robust statistic one-way MANOVA, submitted Journal Environmetrics.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Oslo Transect Subset Data — Oslo","text":"","code":"data(Oslo) table(Oslo$litho) #> #> camsed gneis_o gneis_r magm #> 98 89 32 113 Oslo.mod <- lm(cbind(Cu, K, Mg, Mn, P, Zn) ~ litho, data=Oslo) car::Anova(Oslo.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> litho 3 0.24655 4.8503 18 975 1.503e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(Oslo.mod, var=c(\"Cu\", \"Mn\")) pairs(Oslo.mod) if (FALSE) { if(require(candisc)) { Oslo.can <- candisc(Oslo.mod) Oslo.can heplot(Oslo.can) if(requireNamespace(\"rgl\")){ heplot3d(Oslo.can, shade=TRUE, wire=FALSE, alpha=0.5, var.col=\"red\") } } }"},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise HE Plots — pairs.mlm","title":"Pairwise HE Plots — pairs.mlm","text":"function (form mlm method generic pairs function) constructs ``matrix'' pairwise plots (see heplot) multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise HE Plots — pairs.mlm","text":"","code":"# S3 method for mlm pairs( x, variables, var.labels, var.cex = 2, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = NULL, imatrix = NULL, iterm = NULL, manova, offset.axes = 0.05, digits = getOption(\"digits\") - 1, fill = FALSE, fill.alpha = 0.3, ... )"},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise HE Plots — pairs.mlm","text":"x object class mlm. variables indices names three response variables plotted; defaults responses. var.labels labels variables plotted diagonal panels; defaults names response variables. var.cex character expansion variable labels. type type sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. offset.axes proportion extend axes direction; defaults 0.05. digits number significant digits axis end-labels; taken \"digits\" option. fill logical vector indicating whether ellipse filled . first value used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single fill value can given. Defaults FALSE backward compatibility. See Details heplot fill.alpha Alpha transparency filled ellipses, numeric scalar vector values within [0,1], 0 means fully transparent 1 means fully opaque. Defaults 0.3. ... arguments pass heplot, used draw panel display.","code":""},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Pairwise HE Plots — pairs.mlm","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17(6), 1-42. https://www.jstatsoft.org/v17/i06/ Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise HE Plots — pairs.mlm","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pairwise HE Plots — pairs.mlm","text":"","code":"# ANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) # View all pairs, with ellipse for all 5 regressors pairs(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")))"},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":null,"dir":"Reference","previous_headings":"","what":"Father Parenting Competence — Parenting","title":"Father Parenting Competence — Parenting","text":"data, exercise given Meyers et al. (2006) relates 60 fathers assessed three subscales Perceived Parenting Competence Scale. fathers selected three groups: () fathers child disabilities; (b) fathers physically disabled child; (c) fathers mentally disabled child.","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Father Parenting Competence — Parenting","text":"data frame 60 observations following 4 variables. group factor levels Normal Physical Disability Mental Disability caring caretaking responsibilities, numeric vector emotion emotional support provided child, numeric vector play recreational time spent child, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Father Parenting Competence — Parenting","text":"Meyers, L. S., Gamst, G, & Guarino, . J. (2006). Applied Multivariate Research: Design Interpretation, Thousand Oaks, CA: Sage Publications, https://studysites.sagepub.com/amrStudy/, Exercises 10B.","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Father Parenting Competence — Parenting","text":"scores response variables discrete.","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Father Parenting Competence — Parenting","text":"","code":"data(Parenting) require(car) # fit the MLM parenting.mod <- lm(cbind(caring, emotion, play) ~ group, data=Parenting) car::Anova(parenting.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.94836 16.833 6 112 8.994e-14 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # Box's M test boxM(parenting.mod) #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Y #> Chi-Sq (approx.) = 28.343, df = 12, p-value = 0.004927 #> plot(boxM(parenting.mod)) parenting.mod <- lm(cbind(caring, emotion, play) ~ group, data=Parenting) car::Anova(parenting.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.94836 16.833 6 112 8.994e-14 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test contrasts print(linearHypothesis(parenting.mod, \"group1\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.5210364 19.94376 3 55 7.1051e-09 *** #> Wilks 1 0.4789636 19.94376 3 55 7.1051e-09 *** #> Hotelling-Lawley 1 1.0878413 19.94376 3 55 7.1051e-09 *** #> Roy 1 1.0878413 19.94376 3 55 7.1051e-09 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(parenting.mod, \"group2\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.4293815 13.79555 3 55 8.0113e-07 *** #> Wilks 1 0.5706185 13.79555 3 55 8.0113e-07 *** #> Hotelling-Lawley 1 0.7524844 13.79555 3 55 8.0113e-07 *** #> Roy 1 0.7524844 13.79555 3 55 8.0113e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(parenting.mod) # display tests of contrasts hyp <- list(\"N:MP\" = \"group1\", \"M:P\" = \"group2\") heplot(parenting.mod, hypotheses=hyp) # make a prettier plot heplot(parenting.mod, hypotheses=hyp, asp=1, fill=TRUE, fill.alpha=c(0.3,0.1), col=c(\"red\", \"blue\"), lty=c(0,0,1,1), label.pos=c(1,1,3,2), cex=1.4, cex.lab=1.4, lwd=3) pairs(parenting.mod, fill=TRUE, fill.alpha=c(0.3, 0.1)) if (FALSE) { heplot3d(parenting.mod, wire=FALSE) }"},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":null,"dir":"Reference","previous_headings":"","what":"Plastic Film Data — Plastic","title":"Plastic Film Data — Plastic","text":"experiment conducted determine optimum conditions extruding plastic film. Three responses measured relation two factors, rate extrusion amount additive.","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Plastic Film Data — Plastic","text":"data frame 20 observations following 5 variables. tear numeric vector: tear resistance gloss numeric vector: film gloss opacity numeric vector: film opacity rate factor representing change rate extrusion levels Low (-10%), High (10%) additive factor levels Low (1.0%), High (1.5%)","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Plastic Film Data — Plastic","text":"Johnson, R.. & Wichern, D.W. (1992). Applied Multivariate Statistical Analysis, 3rd ed., Prentice-Hall. Example 6.12 (p. 266).","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plastic Film Data — Plastic","text":"Krzanowski, W. J. (1988). Principles Multivariate Analysis. User's Perspective. Oxford. (p. 381)","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plastic Film Data — Plastic","text":"","code":"str(Plastic) #> 'data.frame':\t20 obs. of 5 variables: #> $ tear : num 6.5 6.2 5.8 6.5 6.5 6.9 7.2 6.9 6.1 6.3 ... #> $ gloss : num 9.5 9.9 9.6 9.6 9.2 9.1 10 9.9 9.5 9.4 ... #> $ opacity : num 4.4 6.4 3 4.1 0.8 5.7 2 3.9 1.9 5.7 ... #> $ rate : Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 1 1 1 1 1 ... #> $ additive: Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 2 2 2 2 2 ... plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) car::Anova(plastic.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> rate 1 0.61814 7.5543 3 14 0.003034 ** #> additive 1 0.47697 4.2556 3 14 0.024745 * #> rate:additive 1 0.22289 1.3385 3 14 0.301782 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 pairs(plastic.mod)"},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot for Box's M test and generalizations — plot.boxM","title":"Plot for Box's M test and generalizations — plot.boxM","text":"function creates simple dot chart showing contributions (log determinants) various groups Box's M test equality covariance matrices. important virtue plots can show groups differ , pooled covariance matrix using scalar like \\(ln | S |\\). way, can suggest specific questions hypotheses regarding equality covariance matrices, analogous use contrasts linear hypotheses testing differences among group mean vectors. Box's M test based specific function (log determinant) covariance matrices groups compared pooled covariance matrix, function also also allow plots measures based eigenvalues covariance matrices. Confidence intervals available default Box M test, using =\"logDet\".","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot for Box's M test and generalizations — plot.boxM","text":"","code":"# S3 method for boxM plot( x, gplabel = NULL, which = c(\"logDet\", \"product\", \"sum\", \"precision\", \"max\"), log = which == \"product\", pch = c(16, 15), cex = c(2, 2.5), col = c(\"blue\", \"red\"), rev = FALSE, xlim, conf = 0.95, method = 1, bias.adj = TRUE, lwd = 2, ... )"},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot for Box's M test and generalizations — plot.boxM","text":"x \"boxM\" object resulting boxM gplabel character string used label group factor. Measure plotted. default, \"logDet\", standard plot. values : \"product\", \"sum\", \"precision\" \"max\" log logical; TRUE, log measure plotted. default, ==\"product\", produces plot equivalent plot \"logDet\". pch vector two point symbols use individual groups pooled data, respectively cex character size point symbols, vector length two groups pooled data, respectively col colors point symbols, vector length two groups pooled data rev logical; TRUE, order groups reversed vertical axis. xlim x limits plot conf coverage approximate confidence intervals, 0 <= conf < 1 ; use conf=0 suppress method confidence interval method; see logdetCI bias.adj confidence interval bias adjustment; see logdetCI lwd line width confidence interval ... Arguments passed dotchart.","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plot for Box's M test and generalizations — plot.boxM","text":"Friendly, M., & Sigal, M. (2018). Visualizing Tests Equality Covariance Matrices. American Statistician, 72(4); doi: 10.1080/00031305.2018.1497537 . Online: https://www.datavis.ca/papers/EqCov-TAS.pdf.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot for Box's M test and generalizations — plot.boxM","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot for Box's M test and generalizations — plot.boxM","text":"","code":"# Iris data res <- boxM(iris[, 1:4], iris[, \"Species\"]) plot(res, gplabel=\"Species\") # Skulls data skulls.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) skulls.boxm <- boxM(skulls.mod) plot(skulls.boxm, gplabel=\"Epoch\") plot(skulls.boxm, gplabel=\"Epoch\", bias.adj=FALSE) # other measures plot(skulls.boxm, which=\"product\", gplabel=\"Epoch\", xlim=c(10,14)) plot(skulls.boxm, which=\"sum\", gplabel=\"Epoch\") plot(skulls.boxm, which=\"precision\", gplabel=\"Epoch\") plot(skulls.boxm, which=\"max\", gplabel=\"Epoch\")"},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot observation weights from a robust multivariate linear models — plot.robmlm","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"Creates index plot observation weights assigned last iteration robmlm. Observations low weights large residual squared distances potential multivariate outliers respect fitted model.","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"","code":"# S3 method for robmlm plot( x, labels, id.weight = 0.7, id.pos = 4, pch = 19, col = palette()[1], cex = par(\"cex\"), segments = FALSE, xlab = \"Case index\", ylab = \"Weight in robust MANOVA\", ... )"},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"x \"robmlm\" object labels Observation labels; specified, uses rownames original data id.weight Threshold identifying observations small weights id.pos Position observation label relative point pch Point symbol(s); can vector length equal number observations data frame col Point color(s) cex Point character size(s) segments logical; TRUE, draw line segments 1.o point xlab x axis label ylab y axis label ... arguments passed plot","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"Returns invisibly weights observations labeled plot","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"","code":"data(Skulls) sk.rmod <- robmlm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) plot(sk.rmod, col=Skulls$epoch) axis(side=3, at=15+seq(0,120,30), labels=levels(Skulls$epoch), cex.axis=1) # Pottery data data(Pottery, package = \"carData\") pottery.rmod <- robmlm(cbind(Al,Fe,Mg,Ca,Na)~Site, data=Pottery) plot(pottery.rmod, col=Pottery$Site, segments=TRUE) # SocialCog data data(SocialCog) SC.rmod <- robmlm(cbind( MgeEmotions, ToM, ExtBias, PersBias) ~ Dx, data=SocialCog) plot(SC.rmod, col=SocialCog$Dx, segments=TRUE)"},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":null,"dir":"Reference","previous_headings":"","what":"Chemical Analysis of Romano-British Pottery — Pottery2","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"Results chemical analyses 48 specimens Romano-British pottery published Tubb et al. (1980). numbers percentage various metal oxides found sample elements concentrations greater 0.01%. original data set Tubb et al. (1980), contrast Pottery.","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"data frame 48 observations following 12 variables. Region factor levels Gl NF Wales Site factor levels AshleyRails Caldicot Gloucester IsleThorns Llanedryn Kiln factor levels 1 2 3 4 5 Al amount aluminum oxide, \\(Al_2O_3\\) Fe amount iron oxide, \\(Fe_2O_3\\) Mg amount magnesium oxide, MgO Ca amount calcium oxide, CaO Na amount sodium oxide, \\(Na_2O\\) K amount potassium oxide, \\(K_2O\\) Ti amount titanium oxide, \\(TiO_2\\) Mn amount manganese oxide, MnO Ba amount BaO","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"Originally slightly modified files David Carlson, now RBPottery.","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"specimens identified rownames data frame. Kiln indicates kiln site pottery found; Site gives location names sites. kiln sites come three Regions, (\"Gl\"=1, \"Wales\"=(2, 3), \"NF\"=(4, 5)), full names \"Gloucester\", \"Wales\", \"New Forrest\". variable Kiln comes pre-supplied contrasts test interesting hypotheses related Site Region.","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"Baxter, M. J. 2003. Statistics Archaeology. Arnold, London. Carlson, David L. 2017. Quantitative Methods Archaeology Using R. Cambridge University Press, pp 247-255, 335-342. Tubb, ., . J. Parker, G. Nickless. 1980. Analysis Romano-British Pottery Atomic Absorption Spectrophotometry. Archaeometry, 22, 153-171.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"","code":"library(car) data(Pottery2) # contrasts for Kiln correspond to between Region [,1:2] and within Region [,3:4] contrasts(Pottery2$Kiln) #> G.WN W.N W2.W3 NF4.NF5 #> 1 4 0 0 0 #> 2 -1 1 1 0 #> 3 -1 1 -1 0 #> 4 -1 -1 0 1 #> 5 -1 -1 0 -1 pmod <-lm(cbind(Al,Fe,Mg,Ca,Na,K,Ti,Mn,Ba)~Kiln, data=Pottery2) car::Anova(pmod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Kiln 4 2.2268 5.3025 36 152 1.391e-13 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # extract coefficient names for linearHypotheses coefs <- rownames(coef(pmod))[-1] # test differences among regions linearHypothesis(pmod, coefs[1:2]) #> #> Sum of squares and products for the hypothesis: #> Al Fe Mg Ca Na K #> Al 151.65057276 -40.53893273 -90.32962804 6.93651249 1.398166750 -49.20000025 #> Fe -40.53893273 233.23920836 52.50699833 35.47123205 11.719323014 45.78071096 #> Mg -90.32962804 52.50699833 57.42066307 0.62797642 0.709273843 33.46637847 #> Ca 6.93651249 35.47123205 0.62797642 6.58156100 2.093516673 3.22560998 #> Na 1.39816675 11.71932301 0.70927384 2.09351667 0.670448844 1.32056847 #> K -49.20000025 45.78071096 33.46637847 3.22560998 1.320568467 20.74890960 #> Ti 9.24314119 -5.42115551 -5.88182924 -0.07236204 -0.075203080 -3.43159076 #> Mn -2.43619545 2.85554855 1.73219182 0.25851436 0.097397909 1.11376927 #> Ba 0.03092721 0.04339183 -0.01183411 0.01008451 0.003094097 -0.00245479 #> Ti Mn Ba #> Al 9.243141192 -2.436195e+00 3.092721e-02 #> Fe -5.421155511 2.855549e+00 4.339183e-02 #> Mg -5.881829237 1.732192e+00 -1.183411e-02 #> Ca -0.072362038 2.585144e-01 1.008451e-02 #> Na -0.075203080 9.739791e-02 3.094097e-03 #> K -3.431590759 1.113769e+00 -2.454790e-03 #> Ti 0.602509224 -1.777282e-01 1.199732e-03 #> Mn -0.177728182 6.098404e-02 1.518182e-05 #> Ba 0.001199732 1.518182e-05 1.830653e-05 #> #> Sum of squares and products for error: #> Al Fe Mg Ca Na K #> Al 96.20132468 21.11225325 5.506287013 -2.096574026 0.569593506 10.55401948 #> Fe 21.11225325 19.88942753 2.157729870 -0.685039740 0.918994935 4.50978519 #> Mg 5.50628701 2.15772987 16.303520519 0.274558961 0.090970260 5.88807922 #> Ca -2.09657403 -0.68503974 0.274558961 1.760672078 -0.025830519 0.24870156 #> Na 0.56959351 0.91899494 0.090970260 -0.025830519 0.735820130 0.56027961 #> K 10.55401948 4.50978519 5.888079221 0.248701558 0.560279610 14.63247117 #> Ti 0.96768701 1.99152987 0.041040519 -0.120881039 0.062710260 0.32167922 #> Mn 0.37119545 0.26490145 -0.131911818 0.009635636 0.059562091 0.10489073 #> Ba 0.07495727 0.02567727 -0.007025091 0.004785182 0.004963455 0.01005364 #> Ti Mn Ba #> Al 0.967687013 0.371195455 0.0749572727 #> Fe 1.991529870 0.264901455 0.0256772727 #> Mg 0.041040519 -0.131911818 -0.0070250909 #> Ca -0.120881039 0.009635636 0.0047851818 #> Na 0.062710260 0.059562091 0.0049634545 #> K 0.321679221 0.104890727 0.0100536364 #> Ti 1.368520519 0.015238182 0.0037669091 #> Mn 0.015238182 0.089093964 0.0030718182 #> Ba 0.003766909 0.003071818 0.0004249909 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 1.86181 53.88966 18 72 < 2.22e-16 *** #> Wilks 2 0.00383 58.97836 18 70 < 2.22e-16 *** #> Hotelling-Lawley 2 34.11493 64.43932 18 68 < 2.22e-16 *** #> Roy 2 25.10339 100.41357 9 36 < 2.22e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test differences within regions B, C linearHypothesis(pmod, coefs[3:4]) #> #> Sum of squares and products for the hypothesis: #> Al Fe Mg Ca Na K #> Al 3.1562321 1.8776786 1.6154857 -0.19634643 0.31648036 -0.74230357 #> Fe 1.8776786 1.7032143 1.6611429 -0.16853571 0.33919643 -1.02896429 #> Mg 1.6154857 1.6611429 1.6629886 -0.16227714 0.34223429 -1.08144286 #> Ca -0.1963464 -0.1685357 -0.1622771 0.01677929 -0.03300607 0.09801071 #> Na 0.3164804 0.3391964 0.3422343 -0.03300607 0.07059089 -0.22565893 #> K -0.7423036 -1.0289643 -1.0814429 0.09801071 -0.22565893 0.76313929 #> Ti 0.3105857 0.2461429 0.2322686 -0.02473714 0.04694429 -0.13454286 #> Mn 0.0667875 0.0777250 0.0795600 -0.00750750 0.01647875 -0.05377750 #> Ba 0.0062575 0.0054250 0.0052360 -0.00053950 0.00106575 -0.00317750 #> Ti Mn Ba #> Al 0.31058571 0.06678750 0.00625750 #> Fe 0.24614286 0.07772500 0.00542500 #> Mg 0.23226857 0.07956000 0.00523600 #> Ca -0.02473714 -0.00750750 -0.00053950 #> Na 0.04694429 0.01647875 0.00106575 #> K -0.13454286 -0.05377750 -0.00317750 #> Ti 0.03698857 0.01055000 0.00079400 #> Mn 0.01055000 0.00387575 0.00024275 #> Ba 0.00079400 0.00024275 0.00001735 #> #> Sum of squares and products for error: #> Al Fe Mg Ca Na K #> Al 96.20132468 21.11225325 5.506287013 -2.096574026 0.569593506 10.55401948 #> Fe 21.11225325 19.88942753 2.157729870 -0.685039740 0.918994935 4.50978519 #> Mg 5.50628701 2.15772987 16.303520519 0.274558961 0.090970260 5.88807922 #> Ca -2.09657403 -0.68503974 0.274558961 1.760672078 -0.025830519 0.24870156 #> Na 0.56959351 0.91899494 0.090970260 -0.025830519 0.735820130 0.56027961 #> K 10.55401948 4.50978519 5.888079221 0.248701558 0.560279610 14.63247117 #> Ti 0.96768701 1.99152987 0.041040519 -0.120881039 0.062710260 0.32167922 #> Mn 0.37119545 0.26490145 -0.131911818 0.009635636 0.059562091 0.10489073 #> Ba 0.07495727 0.02567727 -0.007025091 0.004785182 0.004963455 0.01005364 #> Ti Mn Ba #> Al 0.967687013 0.371195455 0.0749572727 #> Fe 1.991529870 0.264901455 0.0256772727 #> Mg 0.041040519 -0.131911818 -0.0070250909 #> Ca -0.120881039 0.009635636 0.0047851818 #> Na 0.062710260 0.059562091 0.0049634545 #> K 0.321679221 0.104890727 0.0100536364 #> Ti 1.368520519 0.015238182 0.0037669091 #> Mn 0.015238182 0.089093964 0.0030718182 #> Ba 0.003766909 0.003071818 0.0004249909 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.3584150 0.8733388 18 72 0.610701 #> Wilks 2 0.6493732 0.9370114 18 70 0.538962 #> Hotelling-Lawley 2 0.5279530 0.9972445 18 68 0.473824 #> Roy 2 0.5041642 2.0166569 9 36 0.065976 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(pmod, fill=c(TRUE,FALSE), hypotheses=list(\"Region\" =coefs[1:2], \"WithinBC\"=coefs[3:4])) # all pairwise views; note that Ba shows no effect pairs(pmod, fill=c(TRUE,FALSE)) # canonical view, via candisc::heplot if (require(candisc)) { # canonical analysis: how many dimensions? (pcan <- candisc(pmod)) heplot(pcan, scale=18, fill=c(TRUE,FALSE), var.col=\"darkgreen\", var.lwd=2, var.cex=1.5) if (FALSE) { heplot3d(pcan, scale=8) } }"},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":null,"dir":"Reference","previous_headings":"","what":"Response Speed in a Probe Experiment — Probe","title":"Response Speed in a Probe Experiment — Probe","text":"Data probe experiment testing whether immediate memory sentences influenced phrase structure sentence. data sets come Timm (1975), Ex. 3.14 Ex. 3.16 (p.244)","code":""},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Response Speed in a Probe Experiment — Probe","text":"Probe1: data frame 11 observations following 5 variables. p1 speed position 1 p2 speed position 2 p3 speed position 3 p4 speed position 4 p5 speed position 5 Probe2: data frame 20 observations following 6 variables. stm Short term memory capacity: factor levels High Low p1 speed position 1 p2 speed position 2 p3 speed position 3 p4 speed position 4 p5 speed position 5","code":""},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Response Speed in a Probe Experiment — Probe","text":"Timm, N. (1975) Multivariate analysis, applications education psychology Brooks/Cole.","code":""},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Response Speed in a Probe Experiment — Probe","text":"Procedure: Subjects listened tape-recorded sentences. sentence followed \"probe word\" one 5 positions within sentence. subject respond word immediately followed probe word sentence. dependent measure response speed = k(1/reaction time). Sample sentence: Probe2, two groups subjects, pre-selected test short term memory. data sets (fictitious) used examples single-sample two-sample profile analysis simple repeated measure designs structured contrasts.","code":"* The tall man met the young girl who got the new hat. Pos'ns: 1 2 3 4 5 Function: ADJ1 SUBJ ADJ2 OBJ REL.PN"},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Response Speed in a Probe Experiment — Probe","text":"","code":"data(Probe1) boxplot(Probe1) pmod1 <- lm(cbind(p1,p2,p3,p4,p5) ~ 1, data=Probe1) idata <- data.frame(position=factor(1:5)) library(car) (pmod1.aov <- car::Anova(pmod1, idata=idata, idesign=~position)) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.96312 261.15 1 10 1.705e-08 *** #> position 1 0.75177 5.30 4 7 0.02767 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # using default contrasts (p5 as reference level) heplot(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position) pairs(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position) # contrasts for substantative hypotheses regarding # sentence position effects C <- matrix(c( 1, 1, -1, -1, 0, 1, -1, 1, -1, 0, 1, -1, -1, 1, 0, 1, 1, 1, 1, -4), 5, 4) rownames(C) <- paste(\"p\", 1:5, sep=\"\") colnames(C) <- c(\"SubPred\", \"AdjNoun\", \"SPxAN\", \"RelPN\") contrasts(idata$position)<- C (pmod1.aov <- car::Anova(pmod1, idata=idata, idesign=~position)) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.96312 261.15 1 10 1.705e-08 *** #> position 1 0.75177 5.30 4 7 0.02767 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position) pairs(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position)"},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":null,"dir":"Reference","previous_headings":"","what":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"data study weight gain, investigators randomly assigned 30 rats three treatment groups: treatment 1 control (additive); treatments 2 3 consisted two different additives (thiouracil thyroxin respectively) rats drinking water. Weight measured baseline (week 0) weeks 1, 2, 3, 4. Due accident beginning study, data 3 rats thyroxin group unavailable.","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"data frame 27 observations following 6 variables. trt factor levels Control Thiouracil Thyroxin wt0 Weight Week 0 (baseline weight) wt1 Weight Week 1 wt2 Weight Week 2 wt3 Weight Week 3 wt4 Weight Week 4","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"Originally Box (1950), Table D (page 389), values weeks 1-4 recorded gain weight week. Fitzmaurice, G. M. Laird, N. M. Ware, J. H (2004). Applied Longitudinal Analysis, New York, NY: Wiley-Interscience. https://rdrr.io/rforge/ALA/.","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"trt factor comes supplied contrasts comparing Control Thiouracil Thyroxin.","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"Box, G.E.P. (1950). Problems analysis growth wear curves. Biometrics, 6, 362-389. Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 .","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"","code":"data(RatWeight) contrasts(RatWeight$trt) #> [,1] [,2] #> Control -1 -1 #> Thiouracil 1 0 #> Thyroxin 0 1 rat.mod <- lm(cbind(wt0, wt1, wt2, wt3, wt4) ~ trt, data=RatWeight) rat.mod #> #> Call: #> lm(formula = cbind(wt0, wt1, wt2, wt3, wt4) ~ trt, data = RatWeight) #> #> Coefficients: #> wt0 wt1 wt2 wt3 wt4 #> (Intercept) 54.75714 76.88571 102.21905 123.67143 149.15238 #> trt1 -0.05714 -0.58571 -6.41905 -15.47143 -25.15238 #> trt2 0.81429 -1.02857 2.63810 9.04286 13.70476 #> idata <- data.frame(week = ordered(0:4)) car::Anova(rat.mod, idata=idata, idesign=~week, test=\"Roy\") #> #> Type II Repeated Measures MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 140.617 3374.8 1 24 < 2.2e-16 *** #> trt 2 0.657 7.9 2 24 0.002334 ** #> week 1 56.188 295.0 4 21 < 2.2e-16 *** #> trt:week 2 1.979 10.9 4 22 5.059e-05 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # quick look at between group effects pairs(rat.mod) # between-S, baseline & week 4 heplot(rat.mod, col=c(\"red\", \"blue\", \"green3\", \"green3\"), variables=c(1,5), hypotheses=c(\"trt1\", \"trt2\"), main=\"Rat weight data, Between-S effects\") # within-S heplot(rat.mod, idata=idata, idesign=~week, iterm=\"week\", col=c(\"red\", \"blue\", \"green3\"), # hypotheses=c(\"trt1\", \"trt2\"), main=\"Rat weight data, Within-S effects\")"},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":null,"dir":"Reference","previous_headings":"","what":"Reaction Time Data — ReactTime","title":"Reaction Time Data — ReactTime","text":"Data Maxwell Delaney (1990, p. 497) representing reaction times 10 subjects task visual stimuli tilted 0, 4, 8 degrees; noise absent present. subject responded 3 tilt x 2 noise = 6 conditions. data thus comprise repeated measure design two within-S factors.","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Reaction Time Data — ReactTime","text":"data frame 10 observations giving reaction time 6 conditions. deg0NA numeric vector deg4NA numeric vector deg8NA numeric vector deg0NP numeric vector deg4NP numeric vector deg8NP numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Reaction Time Data — ReactTime","text":"Baron, J. Li, Y. (2003). Notes use R psychology experiments questionnaires, https://cran.r-project.org/doc/contrib/Baron-rpsych.pdf","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Reaction Time Data — ReactTime","text":"Michael Friendly (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Maxwell, S. E. & Delaney, H. D. (1990). Designing Experiments Analyzing Data: model comparison perspective. Pacific Grove, CA: Brooks/Cole.","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reaction Time Data — ReactTime","text":"","code":"data(ReactTime) (RT.mod <- lm(as.matrix(ReactTime)~1)) #> #> Call: #> lm(formula = as.matrix(ReactTime) ~ 1) #> #> Coefficients: #> deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP #> (Intercept) 462 510 528 492 660 762 #> # within-S factors within <- expand.grid(tilt=ordered(c(0,4,8)), noise=c(\"NA\", \"NP\")) car::Anova(RT.mod, idata=within, idesign=~tilt * noise) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.98518 598.45 1 9 1.527e-09 *** #> tilt 1 0.88760 31.59 2 8 0.0001596 *** #> noise 1 0.78955 33.77 1 9 0.0002560 *** #> tilt:noise 1 0.91822 44.91 2 8 4.472e-05 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(RT.mod, idata=within, idesign=~tilt * noise, iterm=\"tilt\") #> Note: model has only an intercept; equivalent type-III tests substituted. # plotting means and std errors directly levels <- expand.grid(Tilt=c(0,4,8), noise=c(\"NA\", \"NP\")) (means.df <- data.frame(levels, mean=colMeans(ReactTime), se=sqrt(diag(var(ReactTime)))/9)) #> Tilt noise mean se #> deg0NA 0 NA 462 6.324555 #> deg4NA 4 NA 510 9.558139 #> deg8NA 8 NA 528 8.777075 #> deg0NP 0 NP 492 9.838197 #> deg4NP 4 NP 660 12.171612 #> deg8NP 8 NP 762 12.976712 with(means.df, { plot(Tilt, mean, type=\"n\", main=\"Reaction Time data\", xlab=\"Tilt\", ylab=\"Reaction time\") colors <- rep(c(\"red\", \"blue\"), each=3) pts <- rep(c(15, 16), each=3) lines(Tilt[1:3], mean[1:3], col=\"red\", lwd=2) lines(Tilt[4:6], mean[4:6], col=\"blue\", lwd=2) points(Tilt, mean, pch=pts, col=colors, cex=1.2) arrows(Tilt, mean-se, Tilt, mean+se, angle=90, code=3, col=colors, len=.05, lwd=2) # labels at last point, in lieu of legend text(Tilt[3], mean[3]-10, labels=\"NA\", col=\"red\", pos=1) text(Tilt[6], mean[6]-10, labels=\"NP\", col=\"blue\", pos=1) } )"},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Robust Fitting of Multivariate Linear Models — robmlm","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"Fit multivariate linear model robust regression using simple M estimator.","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"","code":"robmlm(X, ...) # S3 method for default robmlm( X, Y, w, P = 2 * pnorm(4.685, lower.tail = FALSE), tune, max.iter = 100, psi = psi.bisquare, tol = 1e-06, initialize, verbose = FALSE, ... ) # S3 method for formula robmlm( formula, data, subset, weights, na.action, model = TRUE, contrasts = NULL, ... ) # S3 method for robmlm print(x, ...) # S3 method for robmlm summary(object, ...) # S3 method for summary.robmlm print(x, ...)"},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"X default method, model matrix, including constant (present) ... arguments, passed . particular relevant control arguments can passed robmlm.default method. Y default method, response matrix w prior weights P two-tail probability, find cutoff quantile chisq (tuning constant); default set bisquare weight function tune tuning constant (given directly) max.iter maximum number iterations psi robustness weight function; psi.bisquare default tol convergence tolerance, maximum relative change coefficients initialize modeling function find start values coefficients, equation--equation; absent WLS (lm.wfit) used verbose show iteration history? (TRUE FALSE) formula formula form cbind(y1, y2, ...) ~ x1 + x2 + .... data data frame variables specified formula preferentially taken. subset index vector specifying cases used fitting. weights vector prior weights case. na.action function specify action taken NAs found. 'factory-fresh' default action R na.omit, can changed options(na.action=). model model frame returned object? contrasts optional contrast specifications; see lm details. x robmlm object object robmlm object","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"object class \"robmlm\" inheriting c(\"mlm\", \"lm\"). means returned \"robmlm\" contains components \"mlm\" objects described lm, plus following: weights final observation weights iterations number iterations converged logical: IWLS process converge? generic accessor functions coefficients, effects, fitted.values residuals extract various useful features value returned robmlm.","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"S3 methods designed provide specification class robust methods extend mlms, therefore compatible mlm extensions, including Anova heplot. Fitting done iterated re-weighted least squares (IWLS), using weights based Mahalanobis squared distances current residuals origin, scaling (covariance) matrix calculated cov.trob. design methods loosely modeled rlm. internal vcov.mlm function extension standard vcov method providing observation weights.","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":". Marazzi (1993) Algorithms, Routines S Functions Robust Statistics. Wadsworth & Brooks/Cole.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"John Fox; packaged Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"","code":"############## # Skulls data # make shorter labels for epochs and nicer variable labels in heplots Skulls$epoch <- factor(Skulls$epoch, labels=sub(\"c\",\"\",levels(Skulls$epoch))) # variable labels vlab <- c(\"maxBreadth\", \"basibHeight\", \"basialLength\", \"nasalHeight\") # fit manova model, classically and robustly sk.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) sk.rmod <- robmlm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) # standard mlm methods apply here coefficients(sk.rmod) #> mb bh bl nh #> (Intercept) 133.9539529 132.6656599 96.50561801 50.8900600 #> epoch.L 4.1659721 -2.1793681 -4.84240950 1.1168866 #> epoch.Q -0.3671411 -1.3069085 -0.04276618 0.2817763 #> epoch.C -0.5833713 -0.7912067 1.03002114 -0.8379419 #> epoch^4 0.6350148 0.8787857 -0.55919989 -0.6233314 # index plot of weights plot(sk.rmod$weights, type=\"h\", xlab=\"Case Index\", ylab=\"Robust mlm weight\", col=\"gray\") points(sk.rmod$weights, pch=16, col=Skulls$epoch) axis(side=1, at=15+seq(0,120,30), labels=levels(Skulls$epoch), tick=FALSE, cex.axis=1) # heplots to see effect of robmlm vs. mlm heplot(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), xlab=vlab[1], ylab=vlab[2], cex=1.25, lty=1) heplot(sk.rmod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, hyp.labels=FALSE, err.label=\"\") ############## # Pottery data data(Pottery, package = \"carData\") pottery.mod <- lm(cbind(Al,Fe,Mg,Ca,Na)~Site, data=Pottery) pottery.rmod <- robmlm(cbind(Al,Fe,Mg,Ca,Na)~Site, data=Pottery) car::Anova(pottery.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Site 3 1.5539 4.2984 15 60 2.413e-05 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 car::Anova(pottery.rmod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Site 3 1.975 6.5516 15 51 1.722e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # index plot of weights plot(pottery.rmod$weights, type=\"h\") points(pottery.rmod$weights, pch=16, col=Pottery$Site) # heplots to see effect of robmlm vs. mlm heplot(pottery.mod, cex=1.3, lty=1) heplot(pottery.rmod, add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, err.label=\"\") ############### # Prestige data data(Prestige, package = \"carData\") # treat women and prestige as response variables for this example prestige.mod <- lm(cbind(women, prestige) ~ income + education + type, data=Prestige) prestige.rmod <- robmlm(cbind(women, prestige) ~ income + education + type, data=Prestige) coef(prestige.mod) #> women prestige #> (Intercept) 29.638865042 -0.622929165 #> income -0.004594789 0.001013193 #> education 1.677749298 3.673166052 #> typeprof 20.761455686 6.038970651 #> typewc 27.911084356 -2.737230718 coef(prestige.rmod) #> women prestige #> (Intercept) 24.696906731 0.019651597 #> income -0.004902077 0.001082214 #> education 2.352283991 3.549614674 #> typeprof 18.737098949 6.394466644 #> typewc 26.762870920 -2.570933052 # how much do coefficients change? round(coef(prestige.mod) - coef(prestige.rmod),3) #> women prestige #> (Intercept) 4.942 -0.643 #> income 0.000 0.000 #> education -0.675 0.124 #> typeprof 2.024 -0.355 #> typewc 1.148 -0.166 # pretty plot of case weights plot(prestige.rmod$weights, type=\"h\", xlab=\"Case Index\", ylab=\"Robust mlm weight\", col=\"gray\") points(prestige.rmod$weights, pch=16, col=Prestige$type) legend(0, 0.7, levels(Prestige$type), pch=16, col=palette()[1:3], bg=\"white\") heplot(prestige.mod, cex=1.4, lty=1) heplot(prestige.rmod, add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, err.label=\"\")"},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":null,"dir":"Reference","previous_headings":"","what":"Rohwer Data Set — Rohwer","title":"Rohwer Data Set — Rohwer","text":"Data experiment William D. Rohwer kindergarten children designed examine well performance set paired-associate (PA) tasks can predict performance measures aptitude achievement.","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Rohwer Data Set — Rohwer","text":"data frame 69 observations following 10 variables. group numeric vector, corresponding SES SES Socioeconomic status, factor levels Hi Lo SAT numeric vector: score Student Achievement Test PPVT numeric vector: score Peabody Picture Vocabulary Test Raven numeric vector: score Raven Progressive Matrices Test n numeric vector: performance 'named' PA task s numeric vector: performance 'still' PA task ns numeric vector: performance 'named still' PA task na numeric vector: performance 'named action' PA task ss numeric vector: performance 'sentence still' PA task","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Rohwer Data Set — Rohwer","text":"Timm, N.H. 1975). Multivariate Analysis Applications Education Psychology. Wadsworth (Brooks/Cole), Examples 4.3 (p. 281), 4.7 (p. 313), 4.13 (p. 344).","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rohwer Data Set — Rohwer","text":"variables SAT, PPVT Raven responses potentially explained performance paired-associate (PA) learning taskn, s, ns, na, ss.","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Rohwer Data Set — Rohwer","text":"Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421--444. http://datavis.ca/papers/jcgs-heplots.pdf","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rohwer Data Set — Rohwer","text":"","code":"str(Rohwer) #> 'data.frame':\t69 obs. of 10 variables: #> $ group: int 1 1 1 1 1 1 1 1 1 1 ... #> $ SES : Factor w/ 2 levels \"Hi\",\"Lo\": 2 2 2 2 2 2 2 2 2 2 ... #> $ SAT : int 49 47 11 9 69 35 6 8 49 8 ... #> $ PPVT : int 48 76 40 52 63 82 71 68 74 70 ... #> $ Raven: int 8 13 13 9 15 14 21 8 11 15 ... #> $ n : int 1 5 0 0 2 2 0 0 0 3 ... #> $ s : int 2 14 10 2 7 15 1 0 0 2 ... #> $ ns : int 6 14 21 5 11 21 20 10 7 21 ... #> $ na : int 12 30 16 17 26 34 23 19 16 26 ... #> $ ss : int 16 27 16 8 17 25 18 14 13 25 ... ## ANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) car::Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.37853 12.1818 3 60 2.507e-06 *** #> n 1 0.04030 0.8400 3 60 0.477330 #> s 1 0.09271 2.0437 3 60 0.117307 #> ns 1 0.19283 4.7779 3 60 0.004729 ** #> na 1 0.23134 6.0194 3 60 0.001181 ** #> ss 1 0.04990 1.0504 3 60 0.376988 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # Visualize the ANCOVA model heplot(rohwer.mod) # Add ellipse to test all 5 regressors heplot(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"))) # View all pairs pairs(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"))) # or 3D plot if (FALSE) { col <- c(\"red\", \"green3\", \"blue\", \"cyan\", \"magenta\", \"brown\", \"gray\") heplot3d(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), col=col, wire=FALSE) } ## fit separate, independent models for Lo/Hi SES rohwer.ses1 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Hi\") rohwer.ses2 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Lo\") # overlay the separate HE plots heplot(rohwer.ses1, ylim=c(40,110),col=c(\"red\", \"black\")) heplot(rohwer.ses2, add=TRUE, col=c(\"blue\", \"black\"), grand.mean=TRUE, error.ellipse=TRUE)"},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":null,"dir":"Reference","previous_headings":"","what":"Growth of Apple Trees from Different Root Stocks — RootStock","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"classic experiment carried 1918 1934, growth apple trees six different rootstocks compared four measures size.","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"data frame 48 observations following 5 variables. rootstock factor levels 1 2 3 4 5 6 girth4 numeric vector: trunk girth 4 years (mm x 100) ext4 numeric vector: extension growth 4 years (m) girth15 numeric vector: trunk girth 15 years (mm x 100) weight15 numeric vector: weight tree ground 15 years (lb x 1000)","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"Andrews, D. Herzberg, . (1985). Data: Collection Problems Many Fields Student Research Worker Springer-Verlag, pp. 357--360.","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"balanced, one-way MANOVA design, n=8 trees rootstock.","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"Rencher, . C. (1995). Methods Multivariate Analysis. New York: Wiley, Table 6.2","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"","code":"library(car) data(RootStock) ## maybe str(RootStock) ; plot(RootStock) ... root.mod <- lm(cbind(girth4, ext4, girth15, weight15) ~ rootstock, data=RootStock) car::Anova(root.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> rootstock 5 1.3055 4.0697 20 168 1.983e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 pairs(root.mod) # test two orthogonal contrasts among the rootstocks hyp <- matrix(c(2,-1,-1,-1,-1,2, 1, 0,0,0,0,-1), 2, 6, byrow=TRUE) car::linearHypothesis(root.mod, hyp) #> #> Sum of squares and products for the hypothesis: #> girth4 ext4 girth15 weight15 #> girth4 2.684223 7.573365 7.792122 1.617892 #> ext4 7.573365 22.489458 23.293194 5.760003 #> girth15 7.792122 23.293194 24.145778 6.090615 #> weight15 1.617892 5.760003 6.090615 2.248755 #> #> Sum of squares and products for error: #> girth4 ext4 girth15 weight15 #> girth4 0.3199875 1.696564 0.5540875 0.217140 #> ext4 1.6965637 12.142790 4.3636125 2.110214 #> girth15 0.5540875 4.363612 4.2908125 2.481656 #> weight15 0.2171400 2.110214 2.4816562 1.722525 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 1.426293 24.86102 8 80 < 2.22e-16 *** #> Wilks 2 0.020401 58.51245 8 78 < 2.22e-16 *** #> Hotelling-Lawley 2 26.121884 124.07895 8 76 < 2.22e-16 *** #> Roy 2 25.254884 252.54884 4 40 < 2.22e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(root.mod, hypotheses=list(Contrasts=hyp, C1=hyp[1,], C2=hyp[2,])) heplot1d(root.mod, hypotheses=list(Contrasts=hyp, C1=hyp[1,], C2=hyp[2,]))"},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":null,"dir":"Reference","previous_headings":"","what":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"Siotani et al. (1985) describe study Japanese rice wine (sake) used investigate relationship two subjective ratings (taste smell) number physical measurements 30 brands sake.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"data frame 30 observations following 10 variables. taste mean taste rating smell mean smell rating pH pH measurement acidity1 one measure acidity acidity2 another measure acidity sake Sake-meter score rsugar direct reducing sugar content tsugar total sugar content alcohol alcohol content nitrogen formol-nitrogen content","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"Siotani, M. Hayakawa, T. & Fujikoshi, Y. (1985). Modern Multivariate Statistical Analysis: Graduate Course Handbook. American Sciences Press, p. 217.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"data provide one example case multivariate regression benefit multiple outcome measures, using standard tests. Barrett (2003) uses data illustrate influence measures multivariate regression models. taste smell values mean ratings 10 experts unknown scale.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"Barrett, B. E. (2003). Understanding Influence Multivariate Regression. Communications Statistics - Theory Methods 32 (3), 667-680.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"","code":"data(Sake) # quick look at the data boxplot(scale(Sake)) Sake.mod <- lm(cbind(taste,smell) ~ ., data=Sake) library(car) car::Anova(Sake.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> pH 1 0.276246 3.8169 2 20 0.03944 * #> acidity1 1 0.030788 0.3177 2 20 0.73145 #> acidity2 1 0.183297 2.2444 2 20 0.13202 #> sake 1 0.141187 1.6440 2 20 0.21827 #> rsugar 1 0.178200 2.1684 2 20 0.14050 #> tsugar 1 0.054842 0.5802 2 20 0.56891 #> alcohol 1 0.075954 0.8220 2 20 0.45387 #> nitrogen 1 0.056486 0.5987 2 20 0.55909 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 predictors <- colnames(Sake)[-(1:2)] # overall multivariate regression test linearHypothesis(Sake.mod, predictors) #> #> Sum of squares and products for the hypothesis: #> taste smell #> taste 1.4171079 0.5786338 #> smell 0.5786338 1.4095094 #> #> Sum of squares and products for error: #> taste smell #> taste 3.172559 2.248366 #> smell 2.248366 4.173491 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 8 0.6300580 1.207279 16 42 0.30236 #> Wilks 8 0.4642360 1.169193 16 40 0.33210 #> Hotelling-Lawley 8 0.9509599 1.129265 16 38 0.36489 #> Roy 8 0.6270207 1.645929 8 21 0.17134 heplot(Sake.mod, hypotheses=list(\"Regr\" = predictors))"},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":null,"dir":"Reference","previous_headings":"","what":"School Data — schooldata","title":"School Data — schooldata","text":"School Data, Charnes et al. (1981). aim explain scores 3 different tests, reading, mathematics selfesteem 70 school sites means 5 explanatory variables related parents teachers.","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"School Data — schooldata","text":"data frame 70 observations following 8 variables. education Education level mother measured terms percentage high school graduates among female parents occupation Highest occupation family member according pre-arranged rating scale visit Parental visits index representing number visits school site counseling Parent counseling index calculated data time spent child school-related topics reading together, etc. teacher Number teachers given site reading Reading score measured Metropolitan Achievement Test mathematics Mathematics score measured Metropolitan Achievement Test selfesteem Coopersmith Self-Esteem Inventory, intended measure self-esteem","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"School Data — schooldata","text":". Charnes, W.W. Cooper E. Rhodes (1981). Evaluating Program Managerial Efficiency: Application Data Envelopment Analysis Program Follow . Management Science, 27, 668-697.","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"School Data — schooldata","text":"dataset shamelessly borrowed FRB package. relationships among variables unusual, fact revealed plotting.","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"School Data — schooldata","text":"","code":"data(schooldata) # initial screening plot(schooldata) # better plot library(corrgram) corrgram(schooldata, lower.panel=panel.ellipse, upper.panel=panel.pts) #fit the MMreg model school.mod <- lm(cbind(reading, mathematics, selfesteem) ~ education + occupation + visit + counseling + teacher, data=schooldata) # shorthand: fit all others school.mod <- lm(cbind(reading, mathematics, selfesteem) ~ ., data=schooldata) car::Anova(school.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> education 1 0.37564 12.4337 3 62 1.820e-06 *** #> occupation 1 0.56658 27.0159 3 62 2.687e-11 *** #> visit 1 0.26032 7.2734 3 62 0.0002948 *** #> counseling 1 0.06465 1.4286 3 62 0.2429676 #> teacher 1 0.04906 1.0661 3 62 0.3700291 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # HE plots heplot(school.mod, fill=TRUE, fill.alpha=0.1) pairs(school.mod, fill=TRUE, fill.alpha=0.1) # robust model, using robmlm() school.rmod <- robmlm(cbind(reading, mathematics, selfesteem) ~ ., data=schooldata) # note that counseling is now significant car::Anova(school.rmod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> education 1 0.39455 12.8161 3 59 1.488e-06 *** #> occupation 1 0.59110 28.4301 3 59 1.683e-11 *** #> visit 1 0.23043 5.8888 3 59 0.0013819 ** #> counseling 1 0.25257 6.6456 3 59 0.0006083 *** #> teacher 1 0.09812 2.1395 3 59 0.1048263 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # Index plot of the weights wts <- school.rmod$weights notable <- which(wts < 0.8) plot(wts, type = \"h\", col=\"gray\", ylab = \"Observation weight\") points(1:length(wts), wts, pch=16, col = ifelse(wts < 0.8, \"red\", \"black\")) text(notable, wts[notable], labels = notable, pos = 3, col = \"red\") # compare classical HE plot with that based on the robust model heplot(school.mod, cex=1.4, lty=1, fill=TRUE, fill.alpha=0.1) heplot(school.rmod, add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, err.label=\"\", fill=TRUE)"},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":null,"dir":"Reference","previous_headings":"","what":"Egyptian Skulls — Skulls","title":"Egyptian Skulls — Skulls","text":"Measurements made Egyptian skulls five epochs.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Egyptian Skulls — Skulls","text":"data frame 150 observations following 5 variables. epoch epoch skull assigned , ordered factor levels c4000BC c3300BC, c1850BC, c200BC, cAD150, years given approximately, course. mb maximal breadth skull. bh basibregmatic height skull. bl basialiveolar length skull. nh nasal height skull.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Egyptian Skulls — Skulls","text":"D. J. Hand, F. Daly, . D. Lunn, K. J. McConway E. Ostrowski (1994). Handbook Small Datasets, Chapman Hall/CRC, London.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Egyptian Skulls — Skulls","text":"epochs correspond following periods Egyptian history: early predynastic period (circa 4000 BC); late predynastic period (circa 3300 BC); 12th 13th dynasties (circa 1850 BC); Ptolemiac period (circa 200 BC); Roman period (circa 150 AD). question whether measurements change time. Non-constant measurements skulls time indicate interbreeding immigrant populations. Note using polynomial contrasts epoch essentially treats time points equally spaced.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Egyptian Skulls — Skulls","text":"Thomson, . Randall-Maciver, R. (1905) Ancient Races Thebaid, Oxford: Oxford University Press. Hand, D. J., F. Daly, . D. Lunn, K. J. McConway E. Ostrowski (1994). Handbook Small Datasets, Chapman Hall/CRC, London. Egyptian Skull Development, StatLib Data Story Library, https://dasl.datadescription.com/Stories/EgyptianSkullDevelopment.html","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Egyptian Skulls — Skulls","text":"","code":"data(Skulls) library(car) # for Anova # make shorter labels for epochs Skulls$epoch <- factor(Skulls$epoch, labels=sub(\"c\",\"\",levels(Skulls$epoch))) # longer variable labels vlab <- c(\"maxBreadth\", \"basibHeight\", \"basialLength\", \"nasalHeight\") # fit manova model sk.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) Anova(sk.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> epoch 4 0.35331 3.512 16 580 4.675e-06 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 summary(Anova(sk.mod)) #> #> Type II MANOVA Tests: #> #> Sum of squares and products for error: #> mb bh bl nh #> mb 3061.066667 5.333333 11.46667 291.3000 #> bh 5.333333 3405.266667 754.00000 412.5333 #> bl 11.466667 754.000000 3505.96667 164.3333 #> nh 291.300000 412.533333 164.33333 1472.1333 #> #> ------------------------------------------ #> #> Term: epoch #> #> Sum of squares and products for the hypothesis: #> mb bh bl nh #> mb 502.8267 -228.14667 -626.6267 135.43333 #> bh -228.1467 229.90667 292.2800 -66.06667 #> bl -626.6267 292.28000 803.2933 -180.73333 #> nh 135.4333 -66.06667 -180.7333 61.20000 #> #> Multivariate Tests: epoch #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 4 0.3533056 3.512037 16 580.0000 4.6753e-06 *** #> Wilks 4 0.6635858 3.900928 16 434.4548 7.0102e-07 *** #> Hotelling-Lawley 4 0.4818191 4.230974 16 562.0000 8.2782e-08 *** #> Roy 4 0.4250954 15.409707 4 145.0000 1.5883e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test trends over epochs print(linearHypothesis(sk.mod, \"epoch.L\"), SSP=FALSE) # linear component #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.2913791 14.59731 4 142 5.1953e-10 *** #> Wilks 1 0.7086209 14.59731 4 142 5.1953e-10 *** #> Hotelling-Lawley 1 0.4111918 14.59731 4 142 5.1953e-10 *** #> Roy 1 0.4111918 14.59731 4 142 5.1953e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(sk.mod, \"epoch.Q\"), SSP=FALSE) # quadratic component #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.0183468 0.6634844 4 142 0.61837 #> Wilks 1 0.9816532 0.6634844 4 142 0.61837 #> Hotelling-Lawley 1 0.0186897 0.6634844 4 142 0.61837 #> Roy 1 0.0186897 0.6634844 4 142 0.61837 # typical scatterplots are not very informative scatterplot(mb ~ bh|epoch, data=Skulls, ellipse = list(levels=0.68), smooth=FALSE, legend = list(coords=\"topright\"), xlab=vlab[2], ylab=vlab[1]) scatterplot(mb ~ bl|epoch, data=Skulls, ellipse = list(levels=0.68), smooth=FALSE, legend = list(coords=\"topright\"), xlab=vlab[3], ylab=vlab[1]) # HE plots heplot(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), xlab=vlab[1], ylab=vlab[2]) pairs(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), var.labels=vlab) # 3D plot shows that nearly all of hypothesis variation is linear! if (FALSE) { heplot3d(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), col=c(\"pink\", \"blue\")) # view in canonical space if (require(candisc)) { sk.can <- candisc(sk.mod) sk.can heplot(sk.can) heplot3d(sk.can) } }"},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":null,"dir":"Reference","previous_headings":"","what":"Grades in a Sociology Course — SocGrades","title":"Grades in a Sociology Course — SocGrades","text":"data set SocGrades contains four outcome measures student performance introductory sociology course together six potential predictors. data used Marascuilo Levin (1983) example canonical correlation analysis, also suitable examples multivariate multiple regression, MANOVA, MANCOVA step-analysis multivariate linear models.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Grades in a Sociology Course — SocGrades","text":"data frame 40 observations following 10 variables. class Social class, ordered factor levels 1 > 2 > 3 sex sex, factor levels F M gpa grade point average boards College Board test scores hssoc previous high school unit sociology, factor 2 , yes pretest score course pretest midterm1 score first midterm exam midterm2 score second midterm exam final score final exam eval course evaluation","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Grades in a Sociology Course — SocGrades","text":"Marascuilo, L. . Levin, J. R. (1983). Multivariate Statistics Social Sciences Monterey, CA: Brooks/Cole, Table 5-1, p. 192.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Grades in a Sociology Course — SocGrades","text":"midterm1, midterm2, final, possibly eval response variables. variables potential predictors. factors class, sex, hssoc can used .numeric correlational analyses.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Grades in a Sociology Course — SocGrades","text":"","code":"data(SocGrades) # basic MLM grades.mod <- lm(cbind(midterm1, midterm2, final, eval) ~ class + sex + gpa + boards + hssoc + pretest, data=SocGrades) car::Anova(grades.mod, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 1.56729 11.7547 4 30 7.322e-06 *** #> sex 1 0.55300 4.0092 4 29 0.010419 * #> gpa 1 1.20780 8.7566 4 29 9.195e-05 *** #> boards 1 0.73142 5.3028 4 29 0.002489 ** #> hssoc 1 0.03496 0.2535 4 29 0.905171 #> pretest 1 0.31307 2.2697 4 29 0.085881 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 clr <- c(\"red\", \"blue\", \"darkgreen\", \"magenta\", \"brown\", \"black\", \"darkgray\") heplot(grades.mod, col=clr) pairs(grades.mod, col=clr) if (FALSE) { heplot3d(grades.mod, col=clr, wire=FALSE) } if (require(candisc)) { # calculate canonical results for all terms grades.can <- candiscList(grades.mod) # extract canonical R^2s unlist(lapply(grades.can, function(x) x$canrsq)) # plot class effect in canonical space heplot(grades.can, term=\"class\", scale=4) # 1 df terms: show canonical scores and weights for responses plot(grades.can, term=\"sex\") plot(grades.can, term=\"gpa\") plot(grades.can, term=\"boards\") }"},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":null,"dir":"Reference","previous_headings":"","what":"Social Cognitive Measures in Psychiatric Groups — SocialCog","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"general purpose study (Hartman, 2016, Heinrichs et al. (2015)) evaluate patterns levels performance neurocognitive measures among individuals schizophrenia schizoaffective disorder using well-validated, comprehensive neurocognitive battery specifically designed individuals psychosis (Heinrichs et al. (2008))","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"data frame 139 observations following 5 variables. Dx Diagnostic group, factor levels Schizophrenia, Schizoaffective, Control MgeEmotions Score Managing emotions test, numeric vector ToM Score Reading Mind Eyes test (theory mind), numeric vector ExtBias Externalizing Bias score, numeric vector PersBias Personal Bias score, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"Hartman, L. . (2016). Schizophrenia Schizoaffective Disorder: One Condition Two? Unpublished PhD dissertation, York University. Heinrichs, R.W., Pinnock, F., Muharib, E., Hartman, L.., Goldberg, J.O., & McDermid Vaz, S. (2015). Neurocognitive normality schizophrenia revisited. Schizophrenia Research: Cognition, 2 (4), 227-232. doi: 10.1016/j.scog.2015.09.001","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"data subset observations NeuroCog measures various scales social cognition also available. Interest whether schizophrenia group can distinguished schizoaffective group measures. Social Cognitive measures designed tap various aspects perception cognitive procession emotions others. Emotion perception assessed using Managing Emotions (MgeEmotions) score MCCB. \"theory mind\" (ToM) score assessed ability read emotions others photographs eye region male female faces. Two measures, externalizing bias (ExtBias) personalizing bias (PersBias) calculated scale measuring degree individuals attribute internal, personal situational causal attributions positive negative social events. See NeuroCog description sample. complete data social cognitive measures included data set. one extreme outlier schizophrenia group possible outliers control group, left tutorial purposes.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"","code":"library(car) data(SocialCog) SC.mod <- lm(cbind(MgeEmotions, ToM, ExtBias, PersBias) ~ Dx, data=SocialCog) SC.mod #> #> Call: #> lm(formula = cbind(MgeEmotions, ToM, ExtBias, PersBias) ~ Dx, #> data = SocialCog) #> #> Coefficients: #> MgeEmotions ToM ExtBias PersBias #> (Intercept) 41.80533 22.88849 1.75603 0.65488 #> Dx1 3.24012 2.09636 1.01670 -0.07297 #> Dx2 -4.34806 -1.02636 -0.85233 -0.01599 #> car::Anova(SC.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Dx 2 0.21207 3.9735 8 268 0.0001817 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test hypotheses of interest in terms of contrasts print(linearHypothesis(SC.mod, \"Dx1\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.1355144 5.21218 4 133 0.00062359 *** #> Wilks 1 0.8644856 5.21218 4 133 0.00062359 *** #> Hotelling-Lawley 1 0.1567573 5.21218 4 133 0.00062359 *** #> Roy 1 0.1567573 5.21218 4 133 0.00062359 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(SC.mod, \"Dx2\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.0697390 2.492658 4 133 0.046059 * #> Wilks 1 0.9302610 2.492658 4 133 0.046059 * #> Hotelling-Lawley 1 0.0749672 2.492658 4 133 0.046059 * #> Roy 1 0.0749672 2.492658 4 133 0.046059 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 #' ## HE plots heplot(SC.mod, hypotheses=list(\"Dx1\"=\"Dx1\", \"Dx2\"=\"Dx2\"), fill=TRUE, fill.alpha=.1) pairs(SC.mod, fill=c(TRUE,FALSE), fill.alpha=.1)"},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate statistics for levels of factors — statList","title":"Calculate statistics for levels of factors — statList","text":"statList provides general method calculating univariate multivariate statistics matrix data.frame stratified one factors.","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate statistics for levels of factors — statList","text":"","code":"statList(X, factors, FUN, drop = FALSE, ...)"},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate statistics for levels of factors — statList","text":"X matrix data frame containing variables summarized factors vector, matrix data frame containing factors X summarized. factors specified, result calculated data X. FUN function applied pieces X, split factors. drop Logical, indicating whether empty levels factors dropped result. ... arguments, passed FUN.","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate statistics for levels of factors — statList","text":"Returns list items corresponding unique elements factors, interaction factors. item result applying FUN collection rows X. items named according levels factors.","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate statistics for levels of factors — statList","text":"statList general function. X first split factors, FUN applied result. colMeansList covList just calls statList appropriate FUN.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate statistics for levels of factors — statList","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate statistics for levels of factors — statList","text":"","code":"# grand means statList(iris[,1:4], FUN=colMeans) #> [[1]] #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.843333 3.057333 3.758000 1.199333 #> # species means statList(iris[,1:4], iris$Species, FUN=colMeans) #> $setosa #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.006 3.428 1.462 0.246 #> #> $versicolor #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.936 2.770 4.260 1.326 #> #> $virginica #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.588 2.974 5.552 2.026 #> # same colMeansList(iris[,1:4], iris$Species) #> $setosa #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.006 3.428 1.462 0.246 #> #> $versicolor #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.936 2.770 4.260 1.326 #> #> $virginica #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.588 2.974 5.552 2.026 #> # var-cov matrices, by species covList(iris[,1:4], iris$Species) #> $setosa #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> Sepal.Length 0.12424898 0.099216327 0.016355102 0.010330612 #> Sepal.Width 0.09921633 0.143689796 0.011697959 0.009297959 #> Petal.Length 0.01635510 0.011697959 0.030159184 0.006069388 #> Petal.Width 0.01033061 0.009297959 0.006069388 0.011106122 #> #> $versicolor #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> Sepal.Length 0.26643265 0.08518367 0.18289796 0.05577959 #> Sepal.Width 0.08518367 0.09846939 0.08265306 0.04120408 #> Petal.Length 0.18289796 0.08265306 0.22081633 0.07310204 #> Petal.Width 0.05577959 0.04120408 0.07310204 0.03910612 #> #> $virginica #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> Sepal.Length 0.40434286 0.09376327 0.30328980 0.04909388 #> Sepal.Width 0.09376327 0.10400408 0.07137959 0.04762857 #> Petal.Length 0.30328980 0.07137959 0.30458776 0.04882449 #> Petal.Width 0.04909388 0.04762857 0.04882449 0.07543265 #> # multiple factors iris$Dummy <- sample(c(\"Hi\",\"Lo\"),150, replace=TRUE) colMeansList(iris[,1:4], iris[,5:6]) #> $setosa.Hi #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 4.930769 3.342308 1.476923 0.250000 #> #> $versicolor.Hi #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.884 2.720 4.208 1.308 #> #> $virginica.Hi #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.658333 3.008333 5.625000 2.066667 #> #> $setosa.Lo #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.0875000 3.5208333 1.4458333 0.2416667 #> #> $versicolor.Lo #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.988 2.820 4.312 1.344 #> #> $virginica.Lo #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.523077 2.942308 5.484615 1.988462 #>"},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"termMeans utility function designed calculate means levels factor(s) term multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"","code":"termMeans(mod, term, label.factors = FALSE, abbrev.levels = FALSE)"},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"mod mlm model object term character string indicating given term model. factors term must included model, even model data frame. label.factors true, rownames row result include name(s) factor(s) involved, followed level values. Otherwise, rownames include levels factor(s), multiple factors separated ':' abbrev.levels Either logical integer, specifying whether levels values factors term abbreviated constructing rownames. integer specifies minimum length abbreviation factor term.","code":""},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"Returns matrix whose columns correspond response variables model whose rows correspond levels factor(s) term.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"","code":"factors <- expand.grid(A=factor(1:3),B=factor(1:2),C=factor(1:2)) n <- nrow(factors) responses <-data.frame(Y1=10+round(10*rnorm(n)),Y2=10+round(10*rnorm(n))) test <- data.frame(factors, responses) mod <- lm(cbind(Y1,Y2) ~ A*B, data=test) termMeans(mod, \"A\") #> Y1 Y2 #> 1 17.00 12.25 #> 2 9.50 10.75 #> 3 13.75 2.00 termMeans(mod, \"A:B\") #> Y1 Y2 #> 1:1 10.0 10.0 #> 2:1 3.0 19.5 #> 3:1 17.5 6.0 #> 1:2 24.0 14.5 #> 2:2 16.0 2.0 #> 3:2 10.0 -2.0 termMeans(mod, \"A:B\", label.factors=TRUE) #> Y1 Y2 #> A1:B1 10.0 10.0 #> A2:B1 3.0 19.5 #> A3:B1 17.5 6.0 #> A1:B2 24.0 14.5 #> A2:B2 16.0 2.0 #> A3:B2 10.0 -2.0 if (FALSE) { termMeans(mod, \"A:B:C\") # generates an error } plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) colors = c(\"red\", \"darkblue\", \"darkgreen\", \"brown\") heplot(plastic.mod, col=colors, cex=1.25) # add means for interaction term intMeans <- termMeans(plastic.mod, 'rate:additive', abbrev=2) points(intMeans[,1], intMeans[,2], pch=18, cex=1.2, col=\"brown\") text(intMeans[,1], intMeans[,2], rownames(intMeans), adj=c(0.5,1), col=\"brown\")"},{"path":"https://friendly.github.io/heplots/reference/TIPI.html","id":null,"dir":"Reference","previous_headings":"","what":"Data on the Ten Item Personality Inventory — TIPI","title":"Data on the Ten Item Personality Inventory — TIPI","text":"Ten Item Personality Inventory (Gosling et al. 2003) brief inventory Big Five personality domains (Extraversion, Neuroticism, Conscientiousness, Agreeableness, Openness experience). dataset, originally Open Source Psychometrics Project (https://openpsychometrics.org/), used Jones et al. (2020), obtained version.","code":""},{"path":"https://friendly.github.io/heplots/reference/TIPI.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data on the Ten Item Personality Inventory — TIPI","text":"data frame 1799 observations following 16 variables. Extraversion numeric vector Neuroticism numeric vector Conscientiousness numeric vector Agreeableness numeric vector Openness numeric vector education ordered factor levels #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> engnat 1 0.025927 9.327 5 1752 8.817e-09 *** #> gender 1 0.088275 33.926 5 1752 < 2.2e-16 *** #> education 3 0.080337 9.653 15 5262 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(tipi.mlm, fill=TRUE, fill.alpha=0.1) pairs(tipi.mlm, fill=TRUE, fill.alpha=0.1) # candisc works best for factors with >2 levels library(candisc) tipi.can <- candisc(tipi.mlm, term=\"education\") tipi.can #> #> Canonical Discriminant Analysis for education: #> #> CanRsq Eigenvalue Difference Percent Cumulative #> 1 0.0740709 0.0799963 0.075792 92.7124 92.712 #> 2 0.0041870 0.0042046 0.075792 4.8730 97.585 #> 3 0.0020791 0.0020834 0.075792 2.4146 100.000 #> #> Test of H0: The canonical correlations in the #> current row and all that follow are zero #> #> LR test stat approx F numDF denDF Pr(> F) #> 1 0.92014 9.8819 15 4842.4 <2e-16 *** #> 2 0.99374 1.3792 8 3510.0 0.2002 #> 3 0.99792 1.2195 3 1756.0 0.3011 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(tipi.can, fill=TRUE, fill.alpha=0.1, var.col = \"darkred\", var.cex = 1.5, var.lwd = 3) #> Vector scale factor set to 9.339074"},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":null,"dir":"Reference","previous_headings":"","what":"Make Colors Transparent — trans.colors","title":"Make Colors Transparent — trans.colors","text":"Takes vector colors (color names rgb hex values) adds specified alpha transparency .","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make Colors Transparent — trans.colors","text":"","code":"trans.colors(col, alpha = 0.5, names = NULL)"},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make Colors Transparent — trans.colors","text":"col character vector colors, either color names rgb hex values alpha alpha transparency value(s) apply color (0 means fully transparent 1 means opaque) names optional character vector names colors","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Make Colors Transparent — trans.colors","text":"vector color values form \"#rrggbbaa\"","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Make Colors Transparent — trans.colors","text":"Colors (col) alpha need length. shorter one replicated make length.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Make Colors Transparent — trans.colors","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Make Colors Transparent — trans.colors","text":"","code":"trans.colors(palette(), alpha=0.5) #> [1] \"#00000080\" \"#DF536B80\" \"#61D04F80\" \"#2297E680\" \"#28E2E580\" \"#CD0BBC80\" #> [7] \"#F5C71080\" \"#9E9E9E80\" # alpha can be vectorized trans.colors(palette(), alpha=seq(0, 1, length=length(palette()))) #> [1] \"#00000000\" \"#DF536B24\" \"#61D04F49\" \"#2297E66D\" \"#28E2E592\" \"#CD0BBCB6\" #> [7] \"#F5C710DB\" \"#9E9E9EFF\" # lengths need not match: shorter one is repeated as necessary trans.colors(palette(), alpha=c(.1, .2)) #> [1] \"#0000001A\" \"#DF536B33\" \"#61D04F1A\" \"#2297E633\" \"#28E2E51A\" \"#CD0BBC33\" #> [7] \"#F5C7101A\" \"#9E9E9E33\" trans.colors(colors()[1:20]) #> [1] \"#FFFFFF80\" \"#F0F8FF80\" \"#FAEBD780\" \"#FFEFDB80\" \"#EEDFCC80\" \"#CDC0B080\" #> [7] \"#8B837880\" \"#7FFFD480\" \"#7FFFD480\" \"#76EEC680\" \"#66CDAA80\" \"#458B7480\" #> [13] \"#F0FFFF80\" \"#F0FFFF80\" \"#E0EEEE80\" \"#C1CDCD80\" \"#838B8B80\" \"#F5F5DC80\" #> [19] \"#FFE4C480\" \"#FFE4C480\" # single color, with various alphas trans.colors(\"red\", alpha=seq(0,1, length=5)) #> [1] \"#FF000000\" \"#FF000040\" \"#FF000080\" \"#FF0000BF\" \"#FF0000FF\" # assign names trans.colors(\"red\", alpha=seq(0,1, length=5), names=paste(\"red\", 1:5, sep=\"\")) #> red1 red2 red3 red4 red5 #> \"#FF000000\" \"#FF000040\" \"#FF000080\" \"#FF0000BF\" \"#FF0000FF\""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":null,"dir":"Reference","previous_headings":"","what":"Vocabulary growth data — VocabGrowth","title":"Vocabulary growth data — VocabGrowth","text":"Data Laboratory School University Chicago. consist scores cohort pupils grades 8-11 vocabulary section Cooperative Reading Test. scores scaled common, arbitrary origin unit measurement, comparable four grades.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Vocabulary growth data — VocabGrowth","text":"data frame 64 observations following 4 variables. grade8 Grade 8 vocabulary score grade9 Grade 9 vocabulary score grade10 Grade 10 vocabulary score grade11 Grade 11 vocabulary score","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Vocabulary growth data — VocabGrowth","text":"R.D. Bock, Multivariate statistical methods behavioral research, McGraw-Hill, New York, 1975, pp453.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Vocabulary growth data — VocabGrowth","text":"Since data cover age range physical growth beginning decelerate, interest whether similar effect occurs acquisition new vocabulary.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Vocabulary growth data — VocabGrowth","text":"Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Keesling, J.W., Bock, R.D. et al, \"Laboratory School study vocabulary growth\", University Chicago, 1975.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Vocabulary growth data — VocabGrowth","text":"","code":"library(car) data(VocabGrowth) # Standard Multivariate & Univariate repeated measures analysis Vocab.mod <- lm(cbind(grade8,grade9,grade10,grade11) ~ 1, data=VocabGrowth) idata <-data.frame(grade=ordered(8:11)) car::Anova(Vocab.mod, idata=idata, idesign=~grade, type=\"III\") #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.65289 118.498 1 63 4.115e-16 *** #> grade 1 0.82578 96.376 3 61 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ##Type III Repeated Measures MANOVA Tests: Pillai test statistic ## Df test stat approx F num Df den Df Pr(>F) ##(Intercept) 1 0.653 118.498 1 63 4.115e-16 *** ##grade 1 0.826 96.376 3 61 < 2.2e-16 *** heplot(Vocab.mod, type=\"III\", idata=idata, idesign=~grade, iterm=\"grade\", main=\"HE plot for Grade effect\") ### doing this 'manually' by explicitly transforming Y -> Y M # calculate Y M, using polynomial contrasts trends <- as.matrix(VocabGrowth) %*% poly(8:11, degree=3) colnames(trends)<- c(\"Linear\", \"Quad\", \"Cubic\") # test all trend means = 0 == Grade effect within.mod <- lm(trends ~ 1) Manova(within.mod) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.82578 96.376 3 61 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(within.mod, terms=\"(Intercept)\", col=c(\"red\", \"blue\"), type=\"3\", term.labels=\"Grade\", main=\"HE plot for Grade effect\") mark.H0()"},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":null,"dir":"Reference","previous_headings":"","what":"Weight Loss Data — WeightLoss","title":"Weight Loss Data — WeightLoss","text":"Contrived data weight loss self esteem three months, three groups individuals: Control, Diet Diet + Exercise. data constitute double-multivariate design.","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Weight Loss Data — WeightLoss","text":"data frame 34 observations following 7 variables. group factor levels Control Diet DietEx. wl1 Weight loss 1 month wl2 Weight loss 2 months wl3 Weight loss 3 months se1 Self esteem 1 month se2 Self esteem 2 months se3 Self esteem 3 months","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Weight Loss Data — WeightLoss","text":"Originally taken http://www.csun.edu/~ata20315/psy524/main.htm, modified slightly","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Weight Loss Data — WeightLoss","text":"Helmert contrasts assigned group, comparing Control vs. (Diet DietEx) Diet vs. DietEx.","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Weight Loss Data — WeightLoss","text":"Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 .","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Weight Loss Data — WeightLoss","text":"","code":"data(WeightLoss) str(WeightLoss) #> 'data.frame':\t34 obs. of 7 variables: #> $ group: Factor w/ 3 levels \"Control\",\"Diet\",..: 1 1 1 1 1 1 1 1 1 1 ... #> ..- attr(*, \"contrasts\")= num [1:3, 1:2] -2 1 1 0 -1 1 #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : chr [1:3] \"Control\" \"Diet\" \"DietEx\" #> .. .. ..$ : NULL #> $ wl1 : int 4 4 4 3 5 6 6 5 5 3 ... #> $ wl2 : int 3 4 3 2 3 5 5 4 4 3 ... #> $ wl3 : int 3 3 1 1 2 4 4 1 1 2 ... #> $ se1 : int 14 13 17 11 16 17 17 13 14 14 ... #> $ se2 : int 13 14 12 11 15 18 16 15 14 15 ... #> $ se3 : int 15 17 16 12 14 18 19 15 15 13 ... table(WeightLoss$group) #> #> Control Diet DietEx #> 12 12 10 contrasts(WeightLoss$group) <- matrix(c(-2,1,1, 0, -1, 1),ncol=2) (wl.mod<-lm(cbind(wl1,wl2,wl3,se1,se2,se3)~group, data=WeightLoss)) #> #> Call: #> lm(formula = cbind(wl1, wl2, wl3, se1, se2, se3) ~ group, data = WeightLoss) #> #> Coefficients: #> wl1 wl2 wl3 se1 se2 se3 #> (Intercept) 5.34444 4.45000 2.17778 14.92778 13.79444 16.28333 #> group1 0.42222 0.55833 0.04722 0.08889 -0.26944 0.60000 #> group2 0.43333 1.09167 -0.02500 0.18333 -0.22500 0.71667 #> heplot(wl.mod, hypotheses=c(\"group1\", \"group2\")) pairs(wl.mod, variables=1:3) pairs(wl.mod, variables=4:6) # within-S variables within <- data.frame(measure=rep(c(\"Weight loss\", \"Self esteem\"),each=3), month=rep(ordered(1:3),2)) # doubly-multivariate analysis: requires car 2.0+ if (FALSE) { imatrix <- matrix(c( 1,0,-1, 1, 0, 0, 1,0, 0,-2, 0, 0, 1,0, 1, 1, 0, 0, 0,1, 0, 0,-1, 1, 0,1, 0, 0, 0,-2, 0,1, 0, 0, 1, 1), 6, 6, byrow=TRUE) # NB: for heplots the columns of imatrix should have names colnames(imatrix) <- c(\"WL\", \"SE\", \"WL.L\", \"WL.Q\", \"SE.L\", \"SE.Q\") rownames(imatrix) <- colnames(WeightLoss)[-1] (imatrix <- list(measure=imatrix[,1:2], month=imatrix[,3:6])) contrasts(WeightLoss$group) <- matrix(c(-2,1,1, 0,-1,1), ncol=2) (wl.mod<-lm(cbind(wl1, wl2, wl3, se1, se2, se3)~group, data=WeightLoss)) (wl.aov <- car::Anova(wl.mod, imatrix=imatrix, test=\"Roy\")) heplot(wl.mod, imatrix=imatrix, iterm=\"group:measure\") } # do the correct analysis 'manually' unit <- function(n, prefix=\"\") { J <-matrix(rep(1, n), ncol=1) rownames(J) <- paste(prefix, 1:n, sep=\"\") J } measure <- kronecker(diag(2), unit(3, 'M')/3, make.dimnames=TRUE) colnames(measure)<- c('WL', 'SE') between <- as.matrix(WeightLoss[,-1]) %*% measure between.mod <- lm(between ~ group, data=WeightLoss) car::Anova(between.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.26266 2.3434 4 62 0.06451 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(between.mod, hypotheses=c(\"group1\", \"group2\"), xlab=\"Weight Loss\", ylab=\"Self Esteem\", col=c(\"red\", \"blue\", \"brown\"), main=\"Weight Loss & Self Esteem: Group Effect\") month <- kronecker(diag(2), poly(1:3), make.dimnames=TRUE) colnames(month)<- c('WL', 'SE') trends <- as.matrix(WeightLoss[,-1]) %*% month within.mod <- lm(trends ~ group, data=WeightLoss) car::Anova(within.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.34305 3.2091 4 62 0.0185 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(within.mod) heplot(within.mod, hypotheses=c(\"group1\", \"group2\"), xlab=\"Weight Loss\", ylab=\"Self Esteem\", type=\"III\", remove.intercept=FALSE, term.labels=c(\"month\", \"group:month\"), main=\"Weight Loss & Self Esteem: Within-S Effects\") mark.H0()"},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-160-2023-08-30","dir":"Changelog","previous_headings":"","what":"Version 1.6.0 (2023-08-30)","title":"Version 1.6.0 (2023-08-30)","text":"converted pkg roxygen documentation now Suggests: car rather Depends:","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-150-2023-05-30","dir":"Changelog","previous_headings":"","what":"Version 1.5.0 (2023-05-30)","title":"Version 1.5.0 (2023-05-30)","text":"covEllipses() gains formula method Internal function ellipsoid() used heplot3d() becomes exported function, Ellipsoid()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-3-2023-01-02","dir":"Changelog","previous_headings":"","what":"Version 1.4-3 (2023-01-02)","title":"Version 1.4-3 (2023-01-02)","text":"replace rgl.pop() pop3D (PR #7); thx: D. Murdoch","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-2-2022-10-09","dir":"Changelog","previous_headings":"","what":"Version 1.4-2 (2022-10-09)","title":"Version 1.4-2 (2022-10-09)","text":"CRAN release: 2022-10-19 Fix CITATION","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-1-2022-10-01","dir":"Changelog","previous_headings":"","what":"Version 1.4-1 (2022-10-01)","title":"Version 1.4-1 (2022-10-01)","text":"CRAN release: 2022-10-01 (Ugh) broom becomes Depend: override broom::glance()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-0-2022-09-26","dir":"Changelog","previous_headings":"","what":"Version 1.4-0 (2022-09-26)","title":"Version 1.4-0 (2022-09-26)","text":"Added Iwasaki_Big_Five data [Thx: James Grice] Added cex.label arg heplot3d() Convert old Rnw vignettes Rmd Fix documentation infelicities Added TIPI data Added glance.mlm() extension broom::glance.lm()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-9-2021-10-06","dir":"Changelog","previous_headings":"","what":"Version 1.3-9 (2021-10-06)","title":"Version 1.3-9 (2021-10-06)","text":"CRAN release: 2021-10-06 Fix potential problem URL links JSS articles, now converted DOIs","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-8","dir":"Changelog","previous_headings":"","what":"Version 1.3-8","title":"Version 1.3-8","text":"CRAN release: 2021-01-21 fix CRAN nit re rgl examples","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-7","dir":"Changelog","previous_headings":"","what":"Version 1.3-7","title":"Version 1.3-7","text":"CRAN release: 2020-10-28 Fix rendering 3D heplots [Thx: Duncan Murdoch] Fix URLs","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-6-2019-03-26","dir":"Changelog","previous_headings":"","what":"Version 1.3-6 (2019-03-26)","title":"Version 1.3-6 (2019-03-26)","text":"add mathscore data fix bug etasq.lm() per #1 [thx: Phil Chalmers] bump pkg version remove Suggests: FRB","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-5-2018-04-02","dir":"Changelog","previous_headings":"","what":"Version 1.3-5 (2018-04-02)","title":"Version 1.3-5 (2018-04-02)","text":"CRAN release: 2018-04-03 fix references car datatsets -> carData fix error resulting car 3.0 changes bump pkg version","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-4-2016-11-7","dir":"Changelog","previous_headings":"","what":"Version 1.3-4 (2016-11-7)","title":"Version 1.3-4 (2016-11-7)","text":"CRAN release: 2017-09-15 Added Diabetes data, nice example heterogeneity covariances","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-3-2016-10-21","dir":"Changelog","previous_headings":"","what":"Version 1.3-3 (2016-10-21)","title":"Version 1.3-3 (2016-10-21)","text":"CRAN release: 2016-10-21 Added Parenting data, simple one-way MANOVA design (used TQMP paper) Prepare CRAN release","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-1-2016-06-10","dir":"Changelog","previous_headings":"","what":"Version 1.3-1 (2016-06-10)","title":"Version 1.3-1 (2016-06-10)","text":"CRAN release: 2016-06-14 added plot.robmlm(), plot method “robmlm” objects. Currently, plots weights given observations last iteration index plot. Re-built vignettes","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-0-2016-06-03","dir":"Changelog","previous_headings":"","what":"Version 1.3-0 (2016-06-03)","title":"Version 1.3-0 (2016-06-03)","text":"CRAN release: 2016-06-04 cqplot, pch, col, cex can now vectors Bump version, prepare release","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-12-1-2016-05-19","dir":"Changelog","previous_headings":"","what":"Version 1.2-1 (2016-05-19)","title":"Version 1.2-1 (2016-05-19)","text":"coefplot.mlm(), now pass label.pos label.ellipse() added Mahalanobis() classical robust squared distances; handles missing data gracefully provides confidence envelope added SocialCog data [Thx: Leah Hartman] added cqplot() Mahalanobis distances plot method mlm multivariate data","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-12-0-2016-04-27","dir":"Changelog","previous_headings":"","what":"Version 1.2-0 (2016-04-27)","title":"Version 1.2-0 (2016-04-27)","text":"CRAN release: 2016-05-19 covEllipses() extended two variables, giving scatterplot matrix plot plot.boxM() now can plot measures eigenvalues covariance matrices, useful understanding properties test. added bartlettTests() collection univariate Bartlett tests added leveneTests() collection univariate Levene tests added NeuroCog data, simple one-way MANOVA [Thx: Leah Hartman] label.ellipse() now uses much flexible label.pos argument positioning text labels used heplot() friends.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-11-0-2016-03-03","dir":"Changelog","previous_headings":"","what":"Version 1.1-0 (2016-03-03)","title":"Version 1.1-0 (2016-03-03)","text":"CRAN release: 2016-03-26 Added boXM biotools Fleshed boxM() formula, lm, plot summary methods added plot.boxM() method Added covEllipses() methods plotting (possibly robust) covariance ellipses Added colDevs() utility use multivariate tests. Added data(AddHealth), simple example one-way MANOVA nice views [thx: Russell Warne] summary.boxM() now returns calculated statistics can used construct kinds plots. plot.boxM() gets gplabel argument provide label group factor pairs.mlm() gets var.cex argument control size variable labels Added logdetCI() confidence intervals log determinants covariance matrices (experimental) Now use logdetCI() plot.boxM()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-16-2015-07-11","dir":"Changelog","previous_headings":"","what":"Version 1.0-16 (2015-07-11)","title":"Version 1.0-16 (2015-07-11)","text":"CRAN release: 2015-07-13 use importsFrom base packages","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-15-2015-04-15","dir":"Changelog","previous_headings":"","what":"Version 1.0-15 (2015-04-15)","title":"Version 1.0-15 (2015-04-15)","text":"CRAN release: 2015-04-18 Fix require -> requireNamespace","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-14-2015-02-15","dir":"Changelog","previous_headings":"","what":"Version 1.0-14 (2015-02-15)","title":"Version 1.0-14 (2015-02-15)","text":"Updated broken urls documentation Removed vcov.mlm exports conform CRAN policies Now use rgl:: rgl functions *3d.R Removed robmlm.default, robmlm.formula exports Imports: rgl","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-12-2014-05-15","dir":"Changelog","previous_headings":"","what":"Version 1.0-12 (2014-05-15)","title":"Version 1.0-12 (2014-05-15)","text":"CRAN release: 2014-07-02 Removed Authors: satisfy CRAN nits Fixed doc Hernior.Rd Now importsFrom(MASS) rather Depends:","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-11-2013-08-20","dir":"Changelog","previous_headings":"","what":"Version 1.0-11 (2013-08-20)","title":"Version 1.0-11 (2013-08-20)","text":"CRAN release: 2013-08-21 Cosmetic changes pass CRAN checks R 3.1.0, revised vcov.mlm() avoid calling summary.mlm() directly fixed long lines .Rd files R 3.0.1 checks removed require() calls MASS & car (Depends:) removed ::: calls car stats","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-10-2013-06-03","dir":"Changelog","previous_headings":"","what":"Version 1.0-10 (2013-06-03)","title":"Version 1.0-10 (2013-06-03)","text":"Added demo/-.R, exploring representations plots","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-9-2013-04-19","dir":"Changelog","previous_headings":"","what":"Version 1.0-9 (2013-04-19)","title":"Version 1.0-9 (2013-04-19)","text":"Added Pottery2 data, extending car::Pottery Fixed heplot3d minimize striated rendering ellipsoids, also modified default colors fill.alpha","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-8-2013-02-22","dir":"Changelog","previous_headings":"","what":"Version 1.0-8 (2013-02-22)","title":"Version 1.0-8 (2013-02-22)","text":"CRAN release: 2013-04-11 heplot.mlm(), added … label.ellipse able pass cex= Added NLSY data examples testing linearHypotheses heplot3d(), rgl.* functions replaced *3d() equivalents Extended gsorth description examples","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-7-2013-02-07","dir":"Changelog","previous_headings":"","what":"Version 1.0-7 (2013-02-07)","title":"Version 1.0-7 (2013-02-07)","text":"CRAN release: 2013-02-08 Made heplot3d() examples reduce example execution time satisfy CRAN nits","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-6-2013-01-14","dir":"Changelog","previous_headings":"","what":"Version 1.0-6 (2013-01-14)","title":"Version 1.0-6 (2013-01-14)","text":"Added label.ellipse() general exported function. heplot() gets label.pos= argument allowing flexible labeling, label position specified (bottom, left, top, right center) Added coefplot S3 generic coefplot.mlm method plot ellipses mlm coefficients. generalizes car::confidenceEllipse mlm setting.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-4-2012-12-29","dir":"Changelog","previous_headings":"","what":"Version 1.0-4 (2012-12-29)","title":"Version 1.0-4 (2012-12-29)","text":"Added interpPlot plotting interpolations two data sets, data ellipses, etc. Main use animated demos multivariate statistical concepts. interpPlot gains add=, points= col= arguments greater control graphical parameters.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-2-2012-12-05","dir":"Changelog","previous_headings":"","what":"Version 1.0-2 (2012-12-05)","title":"Version 1.0-2 (2012-12-05)","text":"CRAN release: 2012-12-17 Added schooldata example comparison mlm robmlm()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-1-2012-10-18","dir":"Changelog","previous_headings":"","what":"Version 1.0-1 (2012-10-18)","title":"Version 1.0-1 (2012-10-18)","text":"Added simple robmlm methods robust mlms print summary methods vcov.mlm method. allows heplot() related methods show robust plots.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-0-2012-6-3","dir":"Changelog","previous_headings":"","what":"Version 1.0-0 (2012-6-3)","title":"Version 1.0-0 (2012-6-3)","text":"CRAN release: 2012-08-08 Added Olso data Corrected error demo/OBK.R","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-13-2012-5-18","dir":"Changelog","previous_headings":"","what":"Version 0.9-13 (2012-5-18)","title":"Version 0.9-13 (2012-5-18)","text":"Extended -examples vignette example based SocGrades data","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-12-2012-04-03","dir":"Changelog","previous_headings":"","what":"Version 0.9-12 (2012-04-03)","title":"Version 0.9-12 (2012-04-03)","text":"CRAN release: 2012-05-17 Added Skulls data Extended -examples vignette example based Skulls data Changed default colors heplot() heplot1d() allow global setting options(“heplot.colors”); similarly, heplot3d() now allows global option colors, options(“heplot3d.colors”), differing using pink error ellipsoid. Extended Hernior.Rd examples show 1D plots canonical space; added discussion example -examples vignette. Extended SocGrades.Rd examples show plots canonical space.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-11-2012-01-12","dir":"Changelog","previous_headings":"","what":"Version 0.9-11 (2012-01-12)","title":"Version 0.9-11 (2012-01-12)","text":"CRAN release: 2012-02-12 Added Probe1, Probe2 data sets– repeated measures design Added Sake data","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-10-2011-09-12","dir":"Changelog","previous_headings":"","what":"Version 0.9-10 (2011-09-12)","title":"Version 0.9-10 (2011-09-12)","text":"CRAN release: 2011-10-17 Fixed Authors@R DESCRIPTION R 2.14.x Added var.labels argument pairs.mlm gsorth.R: Made sd() local function avoid deprecated warnings","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-9-2011-06-10","dir":"Changelog","previous_headings":"","what":"Version 0.9-9 (2011-06-10)","title":"Version 0.9-9 (2011-06-10)","text":"Added data(Hernior), another MMRA, cancorr example data set Added data(SocGrades), another MANOVA, MMRA, cancorr example data set Corrected buglet fill.alpha heplot","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-8-2011-04-8","dir":"Changelog","previous_headings":"","what":"Version 0.9-8 (2011-04-8)","title":"Version 0.9-8 (2011-04-8)","text":"CRAN release: 2011-05-21 Added MMRA example -examples vignette Added err.label argument heplot heplot3d allow changing label error ellipsoid","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-7-2010-11-4","dir":"Changelog","previous_headings":"","what":"Version 0.9-7 (2010-11-4)","title":"Version 0.9-7 (2010-11-4)","text":"o Added trans.colors() make colors transparent o Modifications heplot() filled ellipses: added fill= fill.alpha= arguments; replaced lines() polygon() H E ellipses; calculate H.rank distinguish degenerate ellipses o added last() utility.R o Modified examples show fill=TRUE use wire=FALSE heplot3d() o Modified pairs.mlm() pass fill= fill.alpha= heplot() o Updated reference URLs point datavis.ca o Fixed buglet gsorth matrix row/col names [Thx: mekki@mektek.ca] o Fixed buglet etasq.lm partial=FALSE [Thx: .e.holliday@aston.ac.uk] Version 0.9-6 (2010-11-2) o added CITATION JSS article references .Rd files o modified repeated vignette [nojss] Version 0.9-5 (2010-10-01) o Added repeated vignette Version 0.9-4 (2010-07-29) o Minor documentation changes o Added etasq.lm() method o Added data/MockJury - 1-way 2-way MANOVA, step-tests, ANCOVA o Generalized termMeans() exported o Added -examples vignette Version 0.9-3 (2010-07-27) o Added gsorth() Gram-Schmidt orthogonalization matrix data frame, preserving column means standard deviations o Avoid Deprecated warnings (linear.hypothesis) car2 o Fixed documentation warnings car2 (linear.hypothesis, data.ellipse) Version 0.9-2 (2010-02-12) o Added demo/Big5.R - Analysis scores ‘Big 5’ personality traits three groups o fixed buglet text3d causing rgl crash (thx: Duncan Murdoch) o switched inst/CHANGES NEWS o Added data/RatWeight examples - repeated measures Weight Gain Rats o Added data/Headache examples - repeated measures treatment headaches o Fixed buglets heplot, heplot1d, heplot3d regarding number variables o Added etasq.mlm methods multivariate measures association (^2) o Return ellipse radius heplot, heplot3d","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-1-2010-01-1","dir":"Changelog","previous_headings":"","what":"Version 0.9-1 (2010-01-1)","title":"Version 0.9-1 (2010-01-1)","text":"o heplot.mlm, pairs.mlm, heplot3d.mlm now work repeated measure designs covariates rhs. o Implemented heplot1d() repeated measures designs (untested) o Revised documentation repeated measures o Added center.cex heplot.mlm() o Revised mark.H0() handle 3D plots also o Added Adoption data – MMreg repeated measures o Added ReactTime data – 2 within-S, -S factors o Fixed bug icontrasts o Added markH0 argument heplot o Added label argument mark.H0() o Added arrow3d() o Fixed buglet pairs.mlm (type)","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-0-2009-12-25","dir":"Changelog","previous_headings":"","what":"Version 0.9-0 (2009-12-25)","title":"Version 0.9-0 (2009-12-25)","text":"o Implemented 2D plots heplot.mlm repeated measures designs adding idata=, idesign=, icontrasts= arguments. o imatrix= argument doubly-multivariate designs implemented, depends car 2.0+ o Updated example(OBK) o Updated example(WeightLoss) o Implemented 3D plots heplot3d.mlm repeated measures designs (OK) o Implemented pairs() repeated measures designs (OK)","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-11-2009-12-08","dir":"Changelog","previous_headings":"","what":"Version 0.8-11 (2009-12-08)","title":"Version 0.8-11 (2009-12-08)","text":"CRAN release: 2009-12-23 o Minor fixes heplot1d o Added contrasts example RootStock.Rd o Added WeightLoss data – doubly multivariate o Added mark.H0","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-10-2009-10-10","dir":"Changelog","previous_headings":"","what":"Version 0.8-10 (2009-10-10)","title":"Version 0.8-10 (2009-10-10)","text":"CRAN release: 2009-10-13 o Fixes cross-references .Rd files.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-9-2009-06-19","dir":"Changelog","previous_headings":"","what":"Version 0.8-9 (2009-06-19)","title":"Version 0.8-9 (2009-06-19)","text":"CRAN release: 2009-07-23 o Added data(RootStock) o heplot.mlm, heplot3d.mlm now include center returned object","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-8-2009-06-04","dir":"Changelog","previous_headings":"","what":"Version 0.8-8 (2009-06-04)","title":"Version 0.8-8 (2009-06-04)","text":"o Added data(FootHead) o Extended example(FootHead) Version 0.8-7 (2009-04-17) o Initial version heplot1d o Added data(Bees), demo(bees.contrasts) o Now suggest: effects package","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-6-2009-04-11","dir":"Changelog","previous_headings":"","what":"Version 0.8-6 (2009-04-11)","title":"Version 0.8-6 (2009-04-11)","text":"CRAN release: 2009-04-19 o Added VocabGrowth data, example heplot() repeated measures design o Fixed label.ellipse heplot.mlm.R center label horizontally o Added demo(OBK) o Added axes= heplot.mlm fix warnings arising axes=FALSE pairs.mlm","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-5-2009-01-26","dir":"Changelog","previous_headings":"","what":"Version 0.8-5 (2009-01-26)","title":"Version 0.8-5 (2009-01-26)","text":"CRAN release: 2009-04-03 o Minor documentation changes Rdoc 2 o Michael Friendly maintainer","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-4-2008-11-17","dir":"Changelog","previous_headings":"","what":"Version 0.8-4 (2008-11-17)","title":"Version 0.8-4 (2008-11-17)","text":"CRAN release: 2008-11-18 o Documentation additions o added CITATION file","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-3-2008-11-6","dir":"Changelog","previous_headings":"","what":"Version 0.8-3 (2008-11-6)","title":"Version 0.8-3 (2008-11-6)","text":"Changes heplot3d.mlm: o added xlim, ylim, zlim arguments","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-2-2008-10-22","dir":"Changelog","previous_headings":"","what":"Version 0.8-2 (2008-10-22)","title":"Version 0.8-2 (2008-10-22)","text":"Package changes o added suggests: candisc o added utility.R, cross3d.R Changes heplot.mlm: o moved lambda.crit utility.R o added .rep handle common task repeating argument values Changes heplot3d.mlm: o added shade=, shade.alpha=, wire= parameters o fixed: grand.mean=FALSE respected o replaced sphere grand.mean cross3d() o color means according color term o return bounding boxes ellipsoids o replaced rgl.texts texts3d Changes utility.R: o Generalized lambda.crit provide Roy.crit HLT.crit; Roy.crit used","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-1-2007-05-23","dir":"Changelog","previous_headings":"","what":"Version 0.8-1 (2007-05-23)","title":"Version 0.8-1 (2007-05-23)","text":"CRAN release: 2008-11-03 o heplot now passes … plot() calls text() points().","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-0-2007-01-31","dir":"Changelog","previous_headings":"","what":"Version 0.8-0 (2007-01-31)","title":"Version 0.8-0 (2007-01-31)","text":"CRAN release: 2007-01-31 Initial version released CRAN.","code":""}] +[{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"multivariate-analysis-of-variance-designs","dir":"Articles","previous_headings":"","what":"Multivariate Analysis of Variance Designs","title":"HE plot MANOVA Examples","text":"vignette provides worked examples analysis multivariate linear models (MLMs) MANOVA designs predictors factors, goal determine group means differ several response variables relation factors possible interactions. Graphical methods visualizing results using heplots candisc packages illustrated. emphasis using methods R, understanding help reveal aspects models might apparent graphical displays. attempt made describe theory MLMs statistical details behind plots reduced-rank canonical cousins. , see Fox, Friendly, & Monette (2009); Friendly (2007); Friendly (2006).","code":""},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"plastic-film-data","dir":"Articles","previous_headings":"","what":"Plastic film data","title":"HE plot MANOVA Examples","text":"experiment conducted determine optimum conditions extruding plastic film. Three responses, tear resistance, film gloss film opacity measured relation two factors, rate extrusion amount additive, set two values, High Low. data set comes Johnson & Wichern (1992). design thus \\(2\\times 2\\) MANOVA, \\(n=5\\) per cell 3 numeric response variables. effects factors responses likely correlated, useful consider multivariate analysis, rather 3 separate univariate ones. example illustrates: 2D 3D plots, difference “effect” scaling “evidence” (significance) scaling, visualizing composite linear hypotheses. begin overall MANOVA two-way MANOVA model. analyses, use car::Anova() significance tests rather stats::anova(), provides -called “Type ” (sequential) tests terms linear models. example, effect 1 df, multivariate statistics (Roy’s maximum root test, Pillai Hotelling trace criteria, Wilks’ Lambda) equivalent, give \\(F\\) statistics \\(p\\)-values. specify test.statistic=\"Roy\" emphasize Roy’s test natural visual interpretation plots. three responses jointly, main effects rate additive significant, interaction . approaches testing effects multivariate linear models (MLMs), significant multivariate tests often followed univariate tests responses separately determine responses contribute significant effect. R, univariate analyses conveniently performed using update() method mlm object plastic.mod, re-fits model single outcome variable. results show significant main effects tear, significant main effect rate gloss, significant effects opacity, don’t shed light nature effects. Traditional univariate plots means variable separately useful, don’t allow visualization relations among response variables. can visualize effects pairs variables plot, showing “size” orientation hypothesis variation (\\(\\mathbf{H}\\)) relation error variation (\\(\\mathbf{E}\\)) ellipsoids. , , model terms 1 degree freedom, \\(\\mathbf{H}\\) ellipsoids degenerate line. plots, \\(\\mathbf{H}\\) ellipses can scaled relative \\(\\mathbf{E}\\) show significance effects (size=\"evidence\"), effect size (size=\"effect\"). former case, model term significant (using Roy’s maximum root test) iff \\(\\mathbf{H}\\) projects anywhere outside \\(\\mathbf{E}\\) ellipse. plot overlays scaling, using thicker lines effect scaling. Figure 1.1: plot effects tear gloss according factors rate, additive interaction, rate:additive. thicker lines show effect size scaling; thinner lines show significance scaling. interpretation can easily read plot, least two response variables (tear gloss) shown bivariate view. effect rate extrusion highly significant: high rate shows greater tear compared low rate. effect amount additive significant view, high level additive greater tear gloss. effect scaling, \\(\\mathbf{H}\\) \\(\\mathbf{E}\\) sums squares products matrices divided error df, giving multivariate analogs univariate measures effect size, e.g., \\((\\bar{y}_1-\\bar{y}_2) / s\\). significance scaling, \\(\\mathbf{H}\\) ellipse divided \\(\\lambda_\\alpha\\), critical value Roy’s largest root statistic. scaling property \\(\\mathbf{H}\\) ellipse protrude somewhere outside \\(\\mathbf{E}\\) ellipse iff multivariate test significant level \\(\\alpha\\). Figure 1.2 shows scalings, using thinner line significance scaling. Note (degenerate) ellipse additive significant, protrude outside \\(\\mathbf{E}\\) ellipse view. guaranteed protrude somewhere 3D space responses. design, means levels interaction terms shown plot, general can lead messy displays. can add term rate:additive follows: Figure 1.2: plot effects tear gloss according factors rate, additive interaction, rate:additive. Annotations added means combinations rate additive. factor means plot (Figure 1.2 simple interpretation: high rate level yields greater tear resistance lower gloss low level. high additive amount produces greater tear resistance greater gloss. rate:additive interaction significant overall, though approaches significance gloss. cell means combinations rate additive shown figure suggest explanation, tutorial purposes: low level rate, little difference gloss levels additive. high level rate, larger difference gloss. \\(\\mathbf{H}\\) ellipse interaction rate:additive therefore “points” direction gloss indicating variable contributes interaction multivariate tests. MANOVA models, interest test sub-hypotheses given main effect interaction, conversely test composite hypotheses pool together certain effects test jointly. tests (, indeed, tests terms given model) carried tests general linear hypotheses MLM. example, might useful test two composite hypotheses: one corresponding main effects jointly, another corresponding difference among means four groups (equivalent joint test overall model). tests specified terms subsets linear combinations model parameters. Thus, example, joint test main effects tests parameters rateHigh additiveHigh. Correspondingly, can display tests plot specifying tests hypothesis argument heplot(), shown Figure 1.3. Figure 1.3: plot tear gloss, supplemented ellipses representing joint tests main effects group differences Finally, 3D plot can produced heplot3d(), giving Figure 1.4. plot rotated interactively view shows main effects protruding outside error ellipsoid. Figure 1.4: 3D plot plastic MLM","code":"data(Plastic, package=\"heplots\") str(Plastic) #> 'data.frame': 20 obs. of 5 variables: #> $ tear : num 6.5 6.2 5.8 6.5 6.5 6.9 7.2 6.9 6.1 6.3 ... #> $ gloss : num 9.5 9.9 9.6 9.6 9.2 9.1 10 9.9 9.5 9.4 ... #> $ opacity : num 4.4 6.4 3 4.1 0.8 5.7 2 3.9 1.9 5.7 ... #> $ rate : Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 1 1 1 1 1 ... #> $ additive: Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 2 2 2 2 2 ... plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) Anova(plastic.mod, test.statistic=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> rate 1 1.619 7.55 3 14 0.003 ** #> additive 1 0.912 4.26 3 14 0.025 * #> rate:additive 1 0.287 1.34 3 14 0.302 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Anova(update(plastic.mod, tear ~ .)) #> Anova Table (Type II tests) #> #> Response: tear #> Sum Sq Df F value Pr(>F) #> rate 1.74 1 15.8 0.0011 ** #> additive 0.76 1 6.9 0.0183 * #> rate:additive 0.00 1 0.0 0.9471 #> Residuals 1.76 16 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Anova(update(plastic.mod, gloss ~ .)) #> Anova Table (Type II tests) #> #> Response: gloss #> Sum Sq Df F value Pr(>F) #> rate 1.301 1 7.92 0.012 * #> additive 0.612 1 3.73 0.071 . #> rate:additive 0.544 1 3.32 0.087 . #> Residuals 2.628 16 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Anova(update(plastic.mod, opacity ~ .)) #> Anova Table (Type II tests) #> #> Response: opacity #> Sum Sq Df F value Pr(>F) #> rate 0.4 1 0.10 0.75 #> additive 4.9 1 1.21 0.29 #> rate:additive 4.0 1 0.98 0.34 #> Residuals 64.9 16 ## Compare evidence and effect scaling colors = c(\"red\", \"darkblue\", \"darkgreen\", \"brown\") heplot(plastic.mod, size=\"evidence\", col=colors, cex=1.25, fill=TRUE, fill.alpha=0.1) heplot(plastic.mod, size=\"effect\", add=TRUE, lwd=5, term.labels=FALSE, col=colors) # Compare evidence and effect scaling colors = c(\"red\", \"darkblue\", \"darkgreen\", \"brown\") heplot(plastic.mod, size=\"evidence\", col=colors, cex=1.25, fill=TRUE, fill.alpha=0.05) heplot(plastic.mod, size=\"effect\", add=TRUE, lwd=5, term.labels=FALSE, col=colors) ## add interaction means intMeans <- termMeans(plastic.mod, 'rate:additive', abbrev.levels=2) points(intMeans[,1], intMeans[,2], pch=18, cex=1.2, col=\"brown\") text(intMeans[,1], intMeans[,2], rownames(intMeans), adj=c(0.5, 1), col=\"brown\") lines(intMeans[c(1,3),1], intMeans[c(1,3),2], col=\"brown\") lines(intMeans[c(2,4),1], intMeans[c(2,4),2], col=\"brown\") plastic.mod #> #> Call: #> lm(formula = cbind(tear, gloss, opacity) ~ rate * additive, data = Plastic) #> #> Coefficients: #> tear gloss opacity #> (Intercept) 6.30 9.56 3.74 #> rateHigh 0.58 -0.84 -0.60 #> additiveHigh 0.38 0.02 0.10 #> rateHigh:additiveHigh 0.02 0.66 1.78 print(linearHypothesis(plastic.mod, c(\"rateHigh\", \"additiveHigh\"), title=\"Main effects\"), SSP=FALSE) #> #> Multivariate Tests: Main effects #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.71161 2.7616 6 30 0.029394 * #> Wilks 2 0.37410 2.9632 6 28 0.022839 * #> Hotelling-Lawley 2 1.44400 3.1287 6 26 0.019176 * #> Roy 2 1.26253 6.3127 3 15 0.005542 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(plastic.mod, c(\"rateHigh\", \"additiveHigh\", \"rateHigh:additiveHigh\"), title=\"Groups\"), SSP=FALSE) #> #> Multivariate Tests: Groups #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 3 1.14560 3.2948 9 48.000 0.003350 ** #> Wilks 3 0.17802 3.9252 9 34.223 0.001663 ** #> Hotelling-Lawley 3 2.81752 3.9654 9 38.000 0.001245 ** #> Roy 3 1.86960 9.9712 3 16.000 0.000603 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(plastic.mod, hypotheses=list(\"Group\" = c(\"rateHigh\", \"additiveHigh\", \"rateHigh:additiveHigh \")), col=c(colors, \"purple\"), fill = TRUE, fill.alpha = 0.1, lwd=c(2, 3, 3, 3, 2), cex=1.25) heplot(plastic.mod, hypotheses=list(\"Main effects\" = c(\"rateHigh\", \"additiveHigh\")), add=TRUE, col=c(colors, \"darkgreen\"), cex=1.25) colors = c(\"pink\", \"darkblue\", \"darkgreen\", \"brown\") heplot3d(plastic.mod, col=colors)"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"effects-of-physical-attractiveness-on-mock-jury-decisions","dir":"Articles","previous_headings":"","what":"Effects of physical attractiveness on mock jury decisions","title":"HE plot MANOVA Examples","text":"social psychology study influences jury decisions Plaster (1989), male participants (prison inmates) shown picture one three young women. Pilot work indicated one woman beautiful, another average physical attractiveness, third unattractive. Participants rated woman saw twelve attributes scales 1–9. measures used check manipulation “attractiveness” photo. participants told person photo committed Crime, asked rate seriousness crime recommend prison sentence, Years. data contained data frame MockJury.1 Sample sizes roughly balanced independent variables three conditions attractiveness photo, combinations Crime: main questions interest : attractiveness “defendant” influence sentence perceived seriousness crime? attractiveness interact nature crime?","code":"data(MockJury, package = \"heplots\") str(MockJury) #> 'data.frame': 114 obs. of 17 variables: #> $ Attr : Factor w/ 3 levels \"Beautiful\",\"Average\",..: 1 1 1 1 1 1 1 1 1 1 ... #> $ Crime : Factor w/ 2 levels \"Burglary\",\"Swindle\": 1 1 1 1 1 1 1 1 1 1 ... #> $ Years : int 10 3 5 1 7 7 3 7 2 3 ... #> $ Serious : int 8 8 5 3 9 9 4 4 5 2 ... #> $ exciting : int 6 9 3 3 1 1 5 4 4 6 ... #> $ calm : int 9 5 4 6 1 5 6 9 8 8 ... #> $ independent : int 9 9 6 9 5 7 7 2 8 7 ... #> $ sincere : int 8 3 3 8 1 5 6 9 7 5 ... #> $ warm : int 5 5 6 8 8 8 7 6 1 7 ... #> $ phyattr : int 9 9 7 9 8 8 8 5 9 8 ... #> $ sociable : int 9 9 4 9 9 9 7 2 1 9 ... #> $ kind : int 9 4 2 9 4 5 5 9 5 7 ... #> $ intelligent : int 6 9 4 9 7 8 7 9 9 9 ... #> $ strong : int 9 5 5 9 9 9 5 2 7 5 ... #> $ sophisticated: int 9 5 4 9 9 9 6 2 7 6 ... #> $ happy : int 5 5 5 9 8 9 5 2 6 8 ... #> $ ownPA : int 9 7 5 9 7 9 6 5 3 6 ... table(MockJury$Attr) #> #> Beautiful Average Unattractive #> 39 38 37 table(MockJury$Attr, MockJury$Crime) #> #> Burglary Swindle #> Beautiful 21 18 #> Average 18 20 #> Unattractive 20 17"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"manipulation-check","dir":"Articles","previous_headings":"2 Effects of physical attractiveness on mock jury decisions","what":"Manipulation check","title":"HE plot MANOVA Examples","text":"first, check manipulation attractiveness, try assess ratings photos relation presumed categories independent variable Attr. questions : ratings photos physical attractiveness (phyattr) confirm original classification? ratings differentiate photos? keep things simple, consider ratings one-way MANOVA. Note Beautiful baseline category Attr, intercept term gives means level. see means significantly different four variables collectively, joint multivariate test. traditional analysis might follow univariate ANOVAs measure separately. aid interpretation MANOVA results can examine test Attr model plot pairs variables, e.g., phyattr happy (Figure 2.1). means plot show Beautiful rated higher physical attractiveness two photos, Unattractive rated less happy two. Comparing sizes ellipses, differences among group means physical attractiveness contributes significance ratings happy. Figure 2.1: plot ratings phyattr happy according classification photos Attr function pairs.mlm() produces pairwise plots. plot (Figure 2.2) shows means happy independent highly correlated, means phyattr sophisticated. pairwise plots, means form triangle rather line, suggesting attributes indeed measuring different aspects photos. Figure 2.2: plots pairs ratings according classification photos Attr 3 groups 4 variables, \\(\\mathbf{H}\\) ellipsoid \\(s=\\min(df_h, p)=2\\) dimensions. candisc() carries canonical discriminant analysis MLM returns object can used show plot space canonical dimensions. plotted Figure 2.3. heplot.candisc() plot method candisc objects Figure 2.3: Canonical discriminant plot MockJury data. Variable vectors show correlations predictors canonical dimensions. plot, variable vectors determined canonical structure coefficients represent correlations predictor variables canonical variables. Thus, angle near zero axis represents correlation close 1.0; angle near 90\\(^o\\) represent correlation close 0.0. (axes must scaled equal unit lengths angles interpretable.) lengths arrows scaled roughly fill plot, relative length represents overall strength relation variable canonical dimensions. Points represent means canonical scores two dimensions three groups photos. can see 91% variation among group means accounted first dimension, nearly completely aligned phyattr. second dimension, accounting remaining 9% determined nearly entirely ratings happy independent. display gives relatively simple account results MANOVA relations ratings discrimination among photos.","code":"(jury.mod1 <- lm( cbind(phyattr, happy, independent, sophisticated) ~ Attr, data=MockJury)) #> #> Call: #> lm(formula = cbind(phyattr, happy, independent, sophisticated) ~ #> Attr, data = MockJury) #> #> Coefficients: #> phyattr happy independent sophisticated #> (Intercept) 8.282 5.359 6.410 6.077 #> AttrAverage -4.808 0.430 0.537 -1.340 #> AttrUnattractive -5.390 -1.359 -1.410 -1.753 Anova(jury.mod1, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 1.77 48.2 4 109 <2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod1, main=\"HE plot for manipulation check\", fill = TRUE, fill.alpha = 0.1) pairs(jury.mod1) jury.can <- candisc(jury.mod1) jury.can #> #> Canonical Discriminant Analysis for Attr: #> #> CanRsq Eigenvalue Difference Percent Cumulative #> 1 0.639 1.767 1.6 91.33 91.3 #> 2 0.144 0.168 1.6 8.67 100.0 #> #> Test of H0: The canonical correlations in the #> current row and all that follow are zero #> #> LR test stat approx F numDF denDF Pr(> F) #> 1 0.309 21.53 8 216 < 2e-16 *** #> 2 0.856 6.09 3 109 0.00072 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.can, rev.axes = TRUE, fill = c(TRUE,FALSE), prefix=\"Canonical dimension\", main=\"Canonical HE plot\") #> Vector scale factor set to 8.8177"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"main-analysis","dir":"Articles","previous_headings":"2 Effects of physical attractiveness on mock jury decisions","what":"Main analysis","title":"HE plot MANOVA Examples","text":"Proceeding main questions interest, carry two-way MANOVA responses Years Serious relation independent variables Attr Crime. see nearly significant interaction Attr Crime strong effect Attr. Figure 2.4: plot two-way MANOVA Years Serious plot shows nearly significant interaction Attr:Crime mainly terms differences among groups response Years sentence, little contribution Serious. explore interaction bit detail . main effect Attr also dominated differences among groups Years. assume Years sentence main outcome interest, also makes sense carry step-test variable , controlling rating seriousness (Serious) crime. model jury.mod3 equivalent ANCOVA Years. Thus, even adjusting Serious rating, still significant main effect Attr photo, also hint interaction Attr Crime. coefficient Serious indicates participants awarded 0.84 additional years sentence 1 unit step scale seriousness crime. particularly useful method visualizing fitted effects univariate response models provided effects. default allEffects() calculates predicted values high-order terms given model, plot method produces plots values term. statements produce Figure 2.5. Figure 2.5: Effect plots Serious Attr * Crime interaction ANCOVA model jury.mod3. effect plot Serious shows expected linear relation variable Years. greater interest nature possible interaction Attr Crime Years sentence, controlling Serious. effect plot shows crime Swindle, much greater Years sentence awarded Unattractive defendants.","code":"# influence of Attr of photo and nature of crime on Serious and Years jury.mod2 <- lm( cbind(Serious, Years) ~ Attr * Crime, data=MockJury) Anova(jury.mod2, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 0.0756 4.08 2 108 0.020 * #> Crime 1 0.0047 0.25 2 107 0.778 #> Attr:Crime 2 0.0501 2.71 2 108 0.071 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod2) # stepdown test (ANCOVA), controlling for Serious jury.mod3 <- lm( Years ~ Serious + Attr * Crime, data=MockJury) t(coef(jury.mod3)) #> (Intercept) Serious AttrAverage AttrUnattractive CrimeSwindle #> [1,] 0.011612 0.83711 0.39586 0.60285 -0.26302 #> AttrAverage:CrimeSwindle AttrUnattractive:CrimeSwindle #> [1,] -0.53701 2.5123 Anova(jury.mod3) #> Anova Table (Type II tests) #> #> Response: Years #> Sum Sq Df F value Pr(>F) #> Serious 379 1 41.14 3.9e-09 *** #> Attr 74 2 4.02 0.021 * #> Crime 4 1 0.43 0.516 #> Attr:Crime 49 2 2.67 0.074 . #> Residuals 987 107 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 library(effects) jury.eff <- allEffects(jury.mod3) plot(jury.eff, ask=FALSE)"},{"path":"https://friendly.github.io/heplots/articles/HE_manova.html","id":"egyptian-skulls-from-five-epochs","dir":"Articles","previous_headings":"","what":"Egyptian skulls from five epochs","title":"HE plot MANOVA Examples","text":"example examines physical measurements size shape made 150 Egyptian skulls five epochs ranging 4000 BC 150 AD. measures : maximal breadth (mb), basibregmatic height (bh), basialiveolar length (bl), nasal height (nh) skull. See Figure 3.1 diagram. question interest whether measurements change time. Systematic changes time interest indicate interbreeding immigrant populations. Figure 3.1: Diagram skull measurements. Maximal breadth basibregmatic height basic measures “size” skull. Basialveolar length nasal height important anthropometric measures “shape”. Note epoch ordered factor, default contrasts orthogonal polynomials. assumes epoch values equally spaced, . However, examining linear quadratic trends useful first approximation. ease labeling various outputs, useful trim epoch values assign meaningful variable labels. start simple displays means epoch. numbers, means don’t seem vary much. pairs plot, Figure 3.2, joining points epoch somewhat revealing bivariate relations among means. Figure 3.2: Pairs plot means Skulls data, epoch. Perhaps better visualizing trends time set boxplots, joining means epoch. Using bwplot() lattice package requires reshaping data wide long format. following code produces Figure 3.3. Figure 3.3: Boxplots Skulls data, epoch, variable. trend lines aren’t linear, neither random, something systematic going ! Now, fit MANOVA model, test effect epoch car::Anova(). see multivariate means differ substantially. Perhaps greater interest focused tests trends time. based tests coefficients model sk.mod jointly equal zero, subsets (polynomial) contrasts epoch. use linearHypothesis() multivariate test epoch.L linear effect. linear trend highly significant. obvious Figure 3.2 maximal breadth nasal increasing time, two measurements negative slopes. linearHypothesis() can also used test composite hypotheses. test non-linear coefficients jointly. result indicates , collectively, non-linear terms significantly different zero. , plots can show patterns tests multivariate hypotheses. four response variables, easiest look pairwise plots pairs.mlm() function. statement produces Figure 3.4. plot, show hypothesis ellipsoids overall effect epoch, well tests just shown linear trend component epoch.L well joint test non-linear terms. Figure 3.4: Pairs plot Skulls data, showing multivariate tests epoch, well tests linear nonlinear trends. plots interesting geometric interpretation: \\(\\mathbf{H}\\) ellipses overall effect epoch representations additive decomposition effect \\(\\mathbf{H}\\) ellipses linear nonlinear linear hypothesis tests according \\[\\mathbf{H}_{\\textrm{epoch}} = \\mathbf{H}_{\\textrm{linear}} + \\mathbf{H}_{\\textrm{nonlinear}}\\] linear term rank 1 (plots line), nonlinear term rank 3. panel, can seen large direction \\(\\mathbf{H}_{\\textrm{epoch}}\\) leading significance effect corresponds essentially linear contrast. \\(\\mathbf{H}_{\\textrm{nonlinear}}\\) orthogonal complement \\(\\mathbf{H}_{\\textrm{linear}}\\) space \\(\\mathbf{H}_{\\textrm{epoch}}\\), nowhere protrude beyond boundary \\(\\mathbf{E}\\) ellipsoid.","code":"data(Skulls) str(Skulls) #> 'data.frame': 150 obs. of 5 variables: #> $ epoch: Ord.factor w/ 5 levels \"c4000BC\"<\"c3300BC\"<..: 1 1 1 1 1 1 1 1 1 1 ... #> $ mb : num 131 125 131 119 136 138 139 125 131 134 ... #> $ bh : num 138 131 132 132 143 137 130 136 134 134 ... #> $ bl : num 89 92 99 96 100 89 108 93 102 99 ... #> $ nh : num 49 48 50 44 54 56 48 48 51 51 ... table(Skulls$epoch) #> #> c4000BC c3300BC c1850BC c200BC cAD150 #> 30 30 30 30 30 # make shorter labels for epochs Skulls$epoch <- factor(Skulls$epoch, labels=sub(\"c\",\"\",levels(Skulls$epoch))) # assign better variable labels vlab <- c(\"maxBreadth\", \"basibHeight\", \"basialLength\", \"nasalHeight\") means <- aggregate(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls, FUN=mean)[,-1] rownames(means) <- levels(Skulls$epoch) means #> mb bh bl nh #> 4000BC 131.37 133.60 99.167 50.533 #> 3300BC 132.37 132.70 99.067 50.233 #> 1850BC 134.47 133.80 96.033 50.567 #> 200BC 135.50 132.30 94.533 51.967 #> AD150 136.17 130.33 93.500 51.367 pairs(means, vlab, panel = function(x, y) { text(x, y, levels(Skulls$epoch)) lines(x,y) }) library(lattice) library(reshape2) sklong <- melt(Skulls, id=\"epoch\") bwplot(value ~ epoch | variable, data=sklong, scales=\"free\", ylab=\"Variable value\", xlab=\"Epoch\", strip=strip.custom(factor.levels=paste(vlab, \" (\", levels(sklong$variable), \")\", sep=\"\")), panel = function(x,y, ...) { panel.bwplot(x, y, ...) panel.linejoin(x,y, col=\"red\", ...) }) # fit manova model sk.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) Anova(sk.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> epoch 4 0.353 3.51 16 580 4.7e-06 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 coef(sk.mod) #> mb bh bl nh #> (Intercept) 133.97333 132.54667 96.460000 50.93333 #> epoch.L 4.02663 -2.19251 -5.017481 1.07517 #> epoch.Q -0.46325 -1.26504 -0.089087 0.12472 #> epoch.C -0.46380 -0.78003 1.075174 -0.83273 #> epoch^4 0.34263 0.80479 -0.661360 -0.41833 coef(sk.mod)[\"epoch.L\",] #> mb bh bl nh #> 4.0266 -2.1925 -5.0175 1.0752 print(linearHypothesis(sk.mod, \"epoch.L\"), SSP=FALSE) # linear component #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.29138 14.597 4 142 5.195e-10 *** #> Wilks 1 0.70862 14.597 4 142 5.195e-10 *** #> Hotelling-Lawley 1 0.41119 14.597 4 142 5.195e-10 *** #> Roy 1 0.41119 14.597 4 142 5.195e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(sk.mod, c(\"epoch.Q\", \"epoch.C\", \"epoch^4\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 3 0.06819 0.83726 12 432.00 0.6119 #> Wilks 3 0.93296 0.83263 12 375.99 0.6167 #> Hotelling-Lawley 3 0.07063 0.82791 12 422.00 0.6216 #> Roy 3 0.04519 1.62676 4 144.00 0.1707 pairs(sk.mod, variables=c(1,4,2,3), hypotheses=list(Lin=\"epoch.L\", NonLin=c(\"epoch.Q\", \"epoch.C\", \"epoch^4\")), var.labels=vlab[c(1,4,2,3)])"},{"path":[]},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"multivariate-multiple-regression-designs","dir":"Articles","previous_headings":"","what":"Multivariate Multiple Regression Designs","title":"HE plot MMRA Examples","text":"ideas behind plots extend naturally multivariate multiple regression (MMRA) multivariate analysis covariance (MANCOVA). MMRA designs, \\(\\mathbf{X}\\) matrix contains quantitative predictors, MANCOVA designs, contains mixture factors quantitative predictors (covariates), typically just one “group” factor. MANCOVA case, often subtle difference emphasis: true MANCOVA analyses focus differences among groups defined factors, adjusting (controlling ) quantitative covariates. Analyses concerned homogeneity regression focus quantitative predictors attempt test whether regression relations groups defined factors.","code":""},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"rohwer-data-aptitude-and-achievement","dir":"Articles","previous_headings":"","what":"Rohwer data: Aptitude and achievement","title":"HE plot MMRA Examples","text":"illustrate homogeneity regression flavor, use data study Rohwer (given Timm (1975), Ex. 4.3, 4.7, 4.23) kindergarten children, designed determine well set paired-associate (PA) tasks predicted performance measures achievement: Peabody Picture Vocabulary test (PPVT), student achievement test (SAT), Raven Progressive matrices test (Raven). PA tasks considered measures learning aptitude varied stimuli presented, called named (n), still (s), named still (ns), named action (na), sentence still (ss). Two groups tested: group \\(n=37\\) children low socioeconomic status (SES) school, group \\(n=32\\) high SES children upper-class, white residential school. data data frame Rohwer heplots package:","code":"data(Rohwer) Rohwer |> dplyr::sample_n(6) #> group SES SAT PPVT Raven n s ns na ss #> 31 1 Lo 9 63 11 2 12 5 25 14 #> 7 1 Lo 6 71 21 0 1 20 23 18 #> 18 1 Lo 45 54 10 0 6 6 14 16 #> 17 1 Lo 19 66 13 7 12 21 35 27 #> 50 2 Hi 4 87 14 1 4 14 25 19 #> 59 2 Hi 36 89 15 1 6 15 23 28"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"preliminary-plots","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"Preliminary plots","title":"HE plot MMRA Examples","text":"fitting models, usually useful data exploration graphing. multivariate multiple regression data, among helpful plots scatterplots response variable, Y, predictor, X, can get better sense relationships adding linear regression lines, loess smooths enhancements. scatterplot matrix, using graphics::pairs() GGally::ggpairs() easy . However, 3 response variables, 4 predictors group factor (SES), can overwhelming. alternative compose rectangular matrix plots Y variables Xs. turned easy might seem, none pairs() methods allow possibility. trick reshape data wide long format use facets ggplot2 compose pairwise scatterplots desired rectangular matrix format.1 , can use ggplot2 make produce pairwise plots combination x y variables. Using color=SES aesthetic results separate regression line two SES groups produced geom_smooth(). Figure 1.1: Plot matrix response variables (SAT, PPVT Raven) three predictors (n, s, ns). lines show separate linear regressions SES group. plots form framework understanding model fits statistical tests turn now.","code":"library(tidyr) library(dplyr) library(ggplot2) yvars <- c(\"SAT\", \"PPVT\", \"Raven\" ) # outcome variables xvars <- c(\"n\", \"s\", \"ns\", \"na\", \"ss\") # predictors xvars <- c(\"n\", \"s\", \"ns\") # make a smaller example Rohwer_long <- Rohwer %>% dplyr::select(-group, -na, -ss) |> tidyr::pivot_longer(cols = all_of(xvars), names_to = \"xvar\", values_to = \"x\") |> tidyr::pivot_longer(cols = all_of(yvars), names_to = \"yvar\", values_to = \"y\") |> dplyr::mutate(xvar = factor(xvar, levels = xvars), yvar = factor(yvar, levels = yvars)) Rohwer_long #> # A tibble: 621 x 5 #> SES xvar x yvar y #> #> 1 Lo n 1 SAT 49 #> 2 Lo n 1 PPVT 48 #> 3 Lo n 1 Raven 8 #> 4 Lo s 2 SAT 49 #> 5 Lo s 2 PPVT 48 #> 6 Lo s 2 Raven 8 #> 7 Lo ns 6 SAT 49 #> 8 Lo ns 6 PPVT 48 #> 9 Lo ns 6 Raven 8 #> 10 Lo n 5 SAT 47 #> # i 611 more rows ggplot(Rohwer_long, aes(x, y, color = SES, shape = SES)) + geom_jitter(size=1.5) + geom_smooth(method = \"lm\", se = FALSE, formula = y ~ x, size=1.5) + facet_grid(yvar ~ xvar, # plot matrix of Y by X scales = \"free\") + theme_bw(base_size = 16) + theme(legend.position = \"bottom\")"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"separate-models","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"Separate models","title":"HE plot MMRA Examples","text":"one approach, might tempted fit separate regression models High Low SES groups. approach generally recommended lacks power (smaller sample sizes group combined analysis) allow hypotheses equality slopes intercepts tested directly. fits separate slopes intercepts two groups, difficult compare coefficients numerically. function heplots::coefplot() makes bit easier, plotting bivariate confidence ellipses coefficients multivariate linear model. problem, three response variables, 95% confidence regions 3D ellipsoids, plot 2D. 3D versions property given predictor significant multivariate test ellipsoid excludes point (0, 0, 0). Figure 1.2: Coefficient plots separate models High Low SES groups Rohwer data. ellipses 95% confidence regions pairs regression coefficients (SAT, PPVT) predictor model. Alternatively, can visualize results multivariate tests predictors plots. make use fact several plots can overlaid using option add=TRUE shown Figure 1.3. Figure 1.3: plot SAT PPVT, showing effects PA predictors High Low SES groups separately can readily see difference means two SES groups (Hi greater scores variables) also appears slopes predictor ellipses shallower High Low group, indicating greater relation SAT score.","code":"rohwer.ses1 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Hi\") Anova(rohwer.ses1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.202 2.02 3 24 0.1376 #> s 1 0.310 3.59 3 24 0.0284 * #> ns 1 0.358 4.46 3 24 0.0126 * #> na 1 0.465 6.96 3 24 0.0016 ** #> ss 1 0.089 0.78 3 24 0.5173 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 rohwer.ses2 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Lo\") Anova(rohwer.ses2) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.0384 0.39 3 29 0.764 #> s 1 0.1118 1.22 3 29 0.321 #> ns 1 0.2252 2.81 3 29 0.057 . #> na 1 0.2675 3.53 3 29 0.027 * #> ss 1 0.1390 1.56 3 29 0.220 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 coef(rohwer.ses1) #> SAT PPVT Raven #> (Intercept) -28.4675 39.69709 13.24384 #> n 3.2571 0.06728 0.05935 #> s 2.9966 0.36998 0.49244 #> ns -5.8591 -0.37438 -0.16402 #> na 5.6662 1.52301 0.11898 #> ss -0.6227 0.41016 -0.12116 coef(rohwer.ses2) #> SAT PPVT Raven #> (Intercept) 4.15106 33.00577 11.17338 #> n -0.60887 -0.08057 0.21100 #> s -0.05016 -0.72105 0.06457 #> ns -1.73240 -0.29830 0.21358 #> na 0.49456 1.47042 -0.03732 #> ss 2.24772 0.32396 -0.05214 coefplot(rohwer.ses1, fill=TRUE, cex.label=1.5, cex.lab=1.5) text(-10, 3, \"High SES group\", pos=4, cex=1.4) coefplot(rohwer.ses2, fill=TRUE, cex.label=1.5, cex.lab=1.5) text(-4.7, 2.5, \"Low SES group\", pos=4, cex=1.4) heplot(rohwer.ses1, ylim=c(40,110), # allow more room for 2nd plot col=c(\"red\", \"black\"), fill = TRUE, fill.alpha = 0.1, lwd=2, cex=1.2) heplot(rohwer.ses2, add=TRUE, col=c(\"brown\", \"black\"), grand.mean=TRUE, error.ellipse=TRUE, # not shown by default when add=TRUE fill = TRUE, fill.alpha = 0.1, lwd=2, cex=1.2) # label the groups at their centroid means <- aggregate(cbind(SAT,PPVT)~SES, data=Rohwer, mean) text(means[,2], means[,3], labels=means[,1], pos=3, cex=2, col=\"black\")"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"mancova-model","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"MANCOVA model","title":"HE plot MMRA Examples","text":"Alternatively (optimistically), can fit MANCOVA model allows different means two SES groups responses, constrains slopes PA covariates equal. Note , although multivariate tests two covariates (ns na) highly significant, univariate multiple regression tests separate responses [summary(rohwer.mod)] relatively weak. can also test global 5 df hypothesis, \\(\\mathbf{B}=\\mathbf{0}\\), covariates null effects responses linear hypothesis. First, extract names PA tests predictors model. car::linearHypothesis() takes vector names coefficients tested simultaneously. 2D views additive MANCOVA model rohwer.mod overall test covariates produced follows, giving plots Figure 1.4. Figure 1.4: plot SAT PPVT (left) SAT Raven (right) using MANCOVA model. ellipses labeled ‘Regr’ show test overall model, including predictors. positive orientation Regr ellipses shows predicted values three responses positively correlated (SAT PPVT). well, High SES group higher responses Low SES group. Alternatively, pairwise plots among responses drawn using pairs.mlm() function, 3D plot, using heplot3d() shown Figure 1.5. Figure 1.5: 3D plot MANCOVA model fit Rohwer data.","code":"# MANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.379 12.18 3 60 2.5e-06 *** #> n 1 0.040 0.84 3 60 0.4773 #> s 1 0.093 2.04 3 60 0.1173 #> ns 1 0.193 4.78 3 60 0.0047 ** #> na 1 0.231 6.02 3 60 0.0012 ** #> ss 1 0.050 1.05 3 60 0.3770 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 covariates <- c(\"n\", \"s\", \"ns\", \"na\", \"ss\") # or: covariates <- rownames(coef(rohwer.mod))[-(1:2)] Regr <- linearHypothesis(rohwer.mod, covariates) print(Regr, digits=4, SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 5 0.6658 3.537 15 186 2.31e-05 *** #> Wilks 5 0.4418 3.812 15 166 8.28e-06 *** #> Hotelling-Lawley 5 1.0309 4.032 15 176 2.79e-06 *** #> Roy 5 0.7574 9.392 5 62 1.06e-06 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 colors <- c(\"red\", \"blue\", rep(\"black\",5), \"#969696\") heplot(rohwer.mod, col=colors, variables=c(1,2), hypotheses=list(\"Regr\" = covariates), fill = TRUE, fill.alpha = 0.1, cex=1.5, lwd=c(2, rep(3,5), 4), main=\"(SAT, PPVT) in Rohwer MANCOVA model\") heplot(rohwer.mod, col=colors, variables=c(1,3), hypotheses=list(\"Regr\" = covariates), fill = TRUE, fill.alpha = 0.1, cex=1.5, lwd=c(2, rep(3,5), 4), main=\"(SAT, Raven) in Rohwer MANCOVA model\") pairs(rohwer.mod, col=colors, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), cex=1.3, lwd=c(2, rep(3,5), 4)) colors <- c(\"pink\", \"blue\", rep(\"black\",5), \"#969696\") heplot3d(rohwer.mod, col=colors, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")))"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"testing-homogeneity-of-regression","dir":"Articles","previous_headings":"1 Rohwer data: Aptitude and achievement","what":"Testing homogeneity of regression","title":"HE plot MMRA Examples","text":"MANCOVA model, rohwer.mod, relatively simple interpretations (large effect SES, ns na major predictors) test relies assumption homogeneity slopes predictors. can test assumption follows, adding interactions SES covariates: appears weak evidence unequal slopes separate SES: terms. evidence heterogeneity stronger, however, terms tested collectively using linearHypothesis() function: model (rohwer.mod2) similar spirit two models (rohwer.ses1 rohwer.ses2) fit two SES groups separately show Figure 1.3, except model rohwer.mod2 assumes common within-groups error covariance matrix allows overall tests. illustrate model rohwer.mod2, construct plot SAT PPVT shown Figure 1.6. simplify display, show hypothesis ellipses overall effects PA tests baseline high-SES group, single combined ellipse SESLo: interaction terms tested previously, representing differences slopes low high-SES groups. SES “treatment-coded” model, ellipse covariate represents hypothesis slopes covariate zero high-SES baseline category. parameterization, ellipse Slopes represents joint hypothesis slopes covariates differ low-SES group. Figure 1.6: plot SAT PPVT, fitting model rohwer.mod2 allows unequal slopes covariates. Comparing Figure 1.6 heterogeneous slopes model Figure 1.4 (left) homogeneous slopes model, can seen covariates ellipses similar size orientation, reflecting similar evidence respective null hypotheses, effect SES, showing greater performance high-SES group response measures. Somewhat subtle, error ellipse noticeably smaller Figure 1.6, reflecting additional variation accounted differences slopes.","code":"rohwer.mod2 <- lm(cbind(SAT, PPVT, Raven) ~ SES * (n + s + ns + na + ss), data=Rohwer) Anova(rohwer.mod2) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.391 11.78 3 55 4.5e-06 *** #> n 1 0.079 1.57 3 55 0.20638 #> s 1 0.125 2.62 3 55 0.05952 . #> ns 1 0.254 6.25 3 55 0.00100 *** #> na 1 0.307 8.11 3 55 0.00015 *** #> ss 1 0.060 1.17 3 55 0.32813 #> SES:n 1 0.072 1.43 3 55 0.24417 #> SES:s 1 0.099 2.02 3 55 0.12117 #> SES:ns 1 0.118 2.44 3 55 0.07383 . #> SES:na 1 0.148 3.18 3 55 0.03081 * #> SES:ss 1 0.057 1.12 3 55 0.35094 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (coefs <- rownames(coef(rohwer.mod2))) #> [1] \"(Intercept)\" \"SESLo\" \"n\" \"s\" \"ns\" #> [6] \"na\" \"ss\" \"SESLo:n\" \"SESLo:s\" \"SESLo:ns\" #> [11] \"SESLo:na\" \"SESLo:ss\" print(linearHypothesis(rohwer.mod2, coefs[grep(\":\", coefs)]), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 5 0.4179 1.845 15 171.0 0.03209 * #> Wilks 5 0.6236 1.894 15 152.2 0.02769 * #> Hotelling-Lawley 5 0.5387 1.927 15 161.0 0.02396 * #> Roy 5 0.3846 4.385 5 57.0 0.00191 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 colors <- c(\"red\", \"blue\", rep(\"black\",5), \"#969696\") heplot(rohwer.mod2, col=c(colors, \"brown\"), terms=c(\"SES\", \"n\", \"s\", \"ns\", \"na\", \"ss\"), hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"), \"Slopes\" = coefs[grep(\":\", coefs)]))"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"recovery-from-hernia-repair","dir":"Articles","previous_headings":"","what":"Recovery from hernia repair","title":"HE plot MMRA Examples","text":"example uses Hernior data (Mosteller & Tukey (1977), Data Exhibit 8, p. 567-568), comprising data measures post-operative recovery 32 patients undergoing elective herniorrhaphy operation, relation pre-operative measures. outcome measures : leave, patient’s condition upon leaving recovery room (1-4 scale, 1=best), nurse, level nursing required one week operation (1-5 scale, 1=worst) los, length stay hospital operation (days) predictor variables : patient age, sex, `pstat, physical status ( 1-5 scale, 1=perfect health, …, 5=poor health), build, body build (1-5 scale, 1=emaciated, …, 5=obese), preoperative complications (cardiac) heart respiration (resp), 1-4 scales, 1=none, …, 4=severe.","code":"data(Hernior) str(Hernior) #> 'data.frame': 32 obs. of 9 variables: #> $ age : int 78 60 68 62 76 76 64 74 68 79 ... #> $ sex : Factor w/ 2 levels \"f\",\"m\": 2 2 2 2 2 2 2 1 2 1 ... #> $ pstat : int 2 2 2 3 3 1 1 2 3 2 ... #> $ build : int 3 3 3 5 4 3 2 3 4 2 ... #> $ cardiac: int 1 2 1 3 3 1 1 2 2 1 ... #> $ resp : int 1 2 1 1 2 1 2 2 1 1 ... #> $ leave : int 2 2 1 1 2 1 1 1 1 2 ... #> $ los : int 9 4 7 35 9 7 5 16 7 11 ... #> $ nurse : num 3 5 4 3 4 5 5 3 5 3 ..."},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"all-predictors-model","dir":"Articles","previous_headings":"2 Recovery from hernia repair","what":"All predictors model","title":"HE plot MMRA Examples","text":"begin model fitting predictors. Note ordinal predictors, pstat, build, cardiac resp arguably treated factors, rather linear, regression terms. give tests nonlinear effects relations responses. ignore possibility example. results multivariate tests somewhat disappointing. physical status predictor (pstat) appears significant conventional levels. univariate models response implicit MLM Hern.mod. can printed using summary(), can use summary() extract certain statistics univariate response model, . conveniently, function heplots::glance.mlm() extends broom::glance.lm() give one-line summary statistics response variable MLM. \\(R^2\\) \\(F\\) statistics overall model assessing impact predictors. Univariate tests predictors models (shown ) hard interpret, largely show significant effects leave variable. Yet, \\(R^2\\) values responses slightly promising. proceed multivariate overall test \\(\\mathbf{B} = 0\\) predictors, whose term names can easily extracted rownames coefficients. Figure 2.1: pairs plot Hernior data pairs() plot MLM gives set plots shown Figure 2.1 helps interpret relations among predictors lead highly significant overall test. Among predictors, age sex small insignificant effects outcome measures jointly. predictors contribute overall test \\(\\mathbf{B} = 0\\), though different ways various responses. example, panel (leave, los) Figure 2.1, can seen pstat individually outside \\(\\mathbf{E}\\) ellipse, build resp contribute overall test opposite direction.","code":"Hern.mod <- lm(cbind(leave, nurse, los) ~ age + sex + pstat + build + cardiac + resp, data=Hernior) Anova(Hern.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> age 1 0.143 1.27 3 23 0.307 #> sex 1 0.026 0.21 3 23 0.892 #> pstat 1 0.333 3.84 3 23 0.023 * #> build 1 0.257 2.65 3 23 0.073 . #> cardiac 1 0.228 2.26 3 23 0.108 #> resp 1 0.248 2.53 3 23 0.082 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Hern.summary <- summary(Hern.mod) unlist(lapply(Hern.summary, function(x) x$r.squared)) #> Response leave Response nurse Response los #> 0.5918 0.2474 0.3653 glance.mlm(Hern.mod) #> # A tibble: 3 x 9 #> response r.squared adj.r.squared sigma fstatistic numdf dendf p.value nobs #> #> 1 leave 0.592 0.494 0.388 6.04 6 25 0.000519 32 #> 2 nurse 0.247 0.0668 0.841 1.37 6 25 0.265 32 #> 3 los 0.365 0.213 5.62 2.40 6 25 0.0573 32 # test overall regression (predictors <- rownames(coef(Hern.mod))[-1]) #> [1] \"age\" \"sexm\" \"pstat\" \"build\" \"cardiac\" \"resp\" Regr <- linearHypothesis(Hern.mod, predictors) print(Regr, digits=5, SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 6 1.10198 2.4192 18 75.000 0.0041356 ** #> Wilks 6 0.21734 2.6046 18 65.539 0.0025239 ** #> Hotelling-Lawley 6 2.26797 2.7300 18 65.000 0.0016285 ** #> Roy 6 1.55434 6.4764 6 25.000 0.0003232 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 clr <- c(\"red\", \"darkgray\", \"blue\", \"darkgreen\", \"magenta\", \"brown\", \"black\") vlab <- c(\"LeaveCondition\\n(leave)\", \"NursingCare\\n(nurse)\", \"LengthOfStay\\n(los)\") hyp <- list(\"Regr\" = predictors) pairs(Hern.mod, hypotheses=hyp, col=clr, var.labels=vlab, fill=c(TRUE,FALSE), fill.alpha = 0.1, cex=1.25)"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"canonical-analysis","dir":"Articles","previous_headings":"2 Recovery from hernia repair","what":"Canonical analysis","title":"HE plot MMRA Examples","text":"multivariate regression example, terms model Hern.mod 1 df, plot lines plots. alternative view effects can seen canonical discriminant space, , predictor shows scores linear combination responses contributes multivariate test effect, together weights responses. use candiscList() calculate canonical analyses predictor terms Hern.mod. 1D canonical discriminant plots terms can obtained interactively menu, simply plotting Hern.canL object. Plots separate terms produced lines , shown Figure 2.2 Figure 2.3. pstat build: Figure 2.2: 1D Canonical discriminant plots physical status (pstat) build. canonical scores better outcomes associated smaller scores. Arrows show correlations responses 1D canonical scores. age cardiac: Figure 2.3: 1D Canonical discriminant plots age cardiac. canonical scores better outcomes associated smaller scores. plots, canonical scores panel shows linear combinations response variables largest possible \\(R^2\\). Better outcomes correspond numerically smaller canonical scores. arrows structure panel proportional canonical weights. plots provide simple interpretations results canonical combinations responses. Better physical status, smaller body build, lower age absence cardiac complications positively related better outcomes.","code":"Hern.canL <- candiscList(Hern.mod) plot(Hern.canL) plot(Hern.canL, term=\"pstat\") plot(Hern.canL, term=\"build\") plot(Hern.canL, term=\"age\") plot(Hern.canL, term=\"cardiac\")"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"grades-in-a-sociology-course","dir":"Articles","previous_headings":"","what":"Grades in a Sociology Course","title":"HE plot MMRA Examples","text":"data set SocGrades contains four outcome measures student performance introductory sociology course together six potential predictors. data used Marascuilo & Levin (1983) example canonical correlation analysis, also suitable examples multivariate multiple regression, MANOVA, MANCOVA step-analysis multivariate linear models. outcome measures used three test scores course, midterm1, midterm2, final, course evaluation (eval).2 Predictor variables : class, student’s social class (ordered factor levels 1 > 2 > 3) sex, gpa, grade point average, boards, College Board test scores, hssoc, previous high school unit sociology? (values , yes), pretest, score course pretest.","code":"str(SocGrades) #> 'data.frame': 40 obs. of 10 variables: #> $ class : Ord.factor w/ 3 levels \"3\"<\"2\"<\"1\": 2 2 2 1 2 1 3 2 1 2 ... #> $ sex : Factor w/ 2 levels \"F\",\"M\": 2 2 2 2 2 2 1 2 2 1 ... #> $ gpa : num 3.55 2.7 3.5 2.91 3.1 3.49 3.17 3.57 3.76 3.81 ... #> $ boards : int 410 390 510 430 600 610 610 560 700 460 ... #> $ hssoc : Factor w/ 2 levels \"no\",\"yes\": 1 1 1 1 1 1 1 1 2 2 ... #> $ pretest : int 17 20 22 13 16 28 14 10 28 30 ... #> $ midterm1: int 43 50 47 24 47 57 42 42 69 48 ... #> $ midterm2: int 61 47 79 40 60 59 61 79 83 67 ... #> $ final : int 129 60 119 100 79 99 92 107 156 110 ... #> $ eval : int 3 1 1 1 2 1 3 2 1 1 ..."},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"models","dir":"Articles","previous_headings":"3 Grades in a Sociology Course","what":"Models","title":"HE plot MMRA Examples","text":"basic MLM fit grades.mod predictor variables.","code":"data(SocGrades) grades.mod <- lm(cbind(midterm1, midterm2, final, eval) ~ class + sex + gpa + boards + hssoc + pretest, data=SocGrades) Anova(grades.mod, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 1.567 11.75 4 30 7.3e-06 *** #> sex 1 0.553 4.01 4 29 0.0104 * #> gpa 1 1.208 8.76 4 29 9.2e-05 *** #> boards 1 0.731 5.30 4 29 0.0025 ** #> hssoc 1 0.035 0.25 4 29 0.9052 #> pretest 1 0.313 2.27 4 29 0.0859 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"screening-for-interactions","dir":"Articles","previous_headings":"3 Grades in a Sociology Course > 3.1 Models","what":"Screening for interactions","title":"HE plot MMRA Examples","text":"univariate multivariate response models, often useful screen higher-order terms (interactions, non-linear predictors). can easily done using update(), . First, try extended model pairwise interactions predictors. model formula, ~.^2, . represents terms model, ^2 generates products terms, class:sex, class:gpa, forth. results , interaction class:sex significant, main effects hssoc pretest remain insignificant. revised model explore grades.mod3, pairwise plot responses (Figure 3.1 shows nearly effects expected directions: higher gpa, boards, class leads better performance outcomes. interaction class:sex seems confined largely midterm1. Figure 3.1: pairs plot SocGrade, model grades.mod3. effects easier appreciate three exam grades jointly 3D plot can rotate interactively. snapshot shown Figure 3.2. Figure 3.2: 3D plot SocGrades, model grades.mod3 Interactive rotation plot shows effect class two dimensional, , one dimension small. major axis class ellipsoid aligned increasing performance three grades, expected ordering three social classes.","code":"grades.mod2 <- update(grades.mod, . ~ .^2) Anova(grades.mod2, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 2.817 7.04 4 10 0.0058 ** #> sex 1 0.487 1.09 4 9 0.4152 #> gpa 1 1.998 4.49 4 9 0.0286 * #> boards 1 2.338 5.26 4 9 0.0183 * #> hssoc 1 0.281 0.63 4 9 0.6522 #> pretest 1 0.510 1.15 4 9 0.3946 #> class:sex 2 2.039 5.10 4 10 0.0168 * #> class:gpa 2 0.982 2.45 4 10 0.1137 #> class:boards 2 0.522 1.31 4 10 0.3321 #> class:hssoc 2 0.356 0.89 4 10 0.5041 #> class:pretest 2 1.005 2.51 4 10 0.1082 #> sex:gpa 1 0.269 0.60 4 9 0.6694 #> sex:boards 1 0.184 0.41 4 9 0.7944 #> sex:hssoc 1 0.909 2.04 4 9 0.1714 #> sex:pretest 1 0.885 1.99 4 9 0.1795 #> gpa:boards 1 0.447 1.00 4 9 0.4537 #> gpa:hssoc 1 0.596 1.34 4 9 0.3269 #> gpa:pretest 1 0.472 1.06 4 9 0.4291 #> boards:hssoc 1 0.353 0.80 4 9 0.5573 #> boards:pretest 1 0.705 1.59 4 9 0.2593 #> hssoc:pretest 1 1.464 3.29 4 9 0.0635 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 grades.mod3 <- update(grades.mod, . ~ . + class:sex - hssoc - pretest) Anova(grades.mod3, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 1.588 11.91 4 30 6.5e-06 *** #> sex 1 0.575 4.17 4 29 0.00864 ** #> gpa 1 1.434 10.40 4 29 2.4e-05 *** #> boards 1 0.895 6.49 4 29 0.00074 *** #> class:sex 2 0.450 3.38 4 30 0.02143 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 pairs(grades.mod3) heplot3d(grades.mod3, wire=FALSE)"},{"path":"https://friendly.github.io/heplots/articles/HE_mmra.html","id":"canonical-analysis-1","dir":"Articles","previous_headings":"3 Grades in a Sociology Course","what":"Canonical analysis","title":"HE plot MMRA Examples","text":"representation effects canonical space particularly useful . , use candiscList() compute canonical decompositions terms model, extract canonical \\(R^2\\) terms result. use heplot() \"candiscList\" object show effects class canonical space, giving Figure 3.3. Figure 3.3: Canonical plot class effect grades.mod3 can seen Figure 3.3 nearly variation exam performance due class aligned first canonical dimension. three tests course evaluation similar weights dimension, course evaluation differs rest along second, small dimension. 1D plots canonical scores effects model also interest, provide simple interpretations effects response variables. statements produce plots shown Figure 3.4. Figure 3.4: 1D Canonical discriminant plots sex gpa. Higher canonical scores reflect better course performance. readily seen males perform better overall, effect sex strongest midterm2. well, increasing course performance tests strongly associated gpa.","code":"# calculate canonical results for all terms grades.can <- candiscList(grades.mod3) # extract canonical R^2s unlist(lapply(grades.can, function(x) x$canrsq)) #> class1 class2 sex gpa boards class:sex1 class:sex2 #> 0.61362 0.02419 0.36527 0.58915 0.47227 0.31046 0.13293 # plot class effect in canonical space heplot(grades.can, term=\"class\", scale=4, fill=TRUE, var.col=\"black\", var.lwd=2) plot(grades.can, term=\"sex\") plot(grades.can, term=\"gpa\")"},{"path":[]},{"path":"https://friendly.github.io/heplots/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Michael Friendly. Author, maintainer. John Fox. Author. Georges Monette. Author. Phil Chalmers. Contributor. Duncan Murdoch. Contributor.","code":""},{"path":"https://friendly.github.io/heplots/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Michael Friendly John Fox Georges Monette (2023). heplots: Visualizing Tests Multivariate Linear Models. R package version 1.6.0. URL https://CRAN.R-project.org/package=heplots Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 2007, 16, 421-444 Michael Friendly (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. DOI: 10.18637/jss.v037.i04","code":"@Manual{, title = {{heplots}: Visualizing Tests in Multivariate Linear Models}, author = {Michael Friendly and John Fox and Georges Monette}, year = {2023}, note = {R package version 1.6.0}, url = {https://CRAN.R-project.org/package=heplots}, } @Article{, title = {HE plots for Multivariate General Linear Models}, author = {Michael Friendly}, year = {2007}, journal = {Journal of Computational and Graphical Statistics}, volume = {16}, number = {4}, pages = {421--444}, } @Article{, title = {HE Plots for Repeated Measures Designs}, author = {Michael Friendly}, journal = {Journal of Statistical Software}, year = {2010}, volume = {37}, number = {4}, pages = {1--40}, doi = {10.18637/jss.v037.i04}, }"},{"path":[]},{"path":"https://friendly.github.io/heplots/index.html","id":"visualizing-hypothesis-tests-in-multivariate-linear-models","dir":"","previous_headings":"","what":"Visualizing Hypothesis Tests in Multivariate Linear Models","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"Version 1.6.0","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"description","dir":"","previous_headings":"","what":"Description","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"heplots package provides functions visualizing hypothesis tests multivariate linear models (MANOVA, multivariate multiple regression, MANCOVA, repeated measures designs). plots represent sums--squares--products matrices linear hypotheses (H) error (E) using ellipses (two dimensions), ellipsoids (three dimensions), line segments one dimension. theory applications, see: Fox, Friendly Monette (2009) brief introduction, Friendly (2010) application ideas repeated measure designs, Friendly, Monette Fox (2013) general discussion role elliptical geometry statistical understanding, Friendly & Sigal (2017) applied R tutorial, Friendly & Sigal (2018) theory examples visualizing equality covariance matrices. topics now addressed include: robust MLMs, using iteratively re-weighted least squared -weight observations large multivariate residuals, robmlm(). Mahalanobis() calculates classical robust Mahalanobis squared distances using MCD MVE estimators center covariance. visualizing tests equality covariance matrices MLMs (Box’s M test), boxM() plot.boxM(). χ2 Q-Q plots MLMs (cqplot()) detect outliers assess multivariate normality residuals. bivariate coefficient plots showing elliptical confidence regions (coefplot()). respect, heplots package now aims provide wide range tools analyzing visualizing multivariate response linear models, together packages: related candisc package provides plots canonical discriminant space, space linear combinations responses show maximum possible effects canonical correlation multivariate regression designs. Another package, mvinfluence, provides diagnostic measures plots influential observations MLM designs. Several tutorial vignettes also included. See vignette(package=\"heplots\").","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/index.html","id":"he-plot-functions","dir":"","previous_headings":"","what":"HE plot functions","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"graphical functions contained display multivariate model effects variable (data) space, one response variables (contrasts among response variables repeated measures designs). heplot() constructs two-dimensional plots model terms linear hypotheses pairs response variables multivariate linear models. heplot3d() constructs analogous 3D plots triples response variables. pairs method, pairs.mlm() constructs scatterplot matrix pairwise plots. heplot1d() constructs 1-dimensional analogs plots model terms linear hypotheses single response variables.","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"other-functions","dir":"","previous_headings":"","what":"Other functions","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"glance.mlm() extends broom::glance.lm() multivariate response models, giving one-line statistical summary response variable. boxM() Calculates Box’s M test homogeneity covariance matrices MANOVA design. plot method displays visual representation components test. Associated , bartletTests() levineTests() give univariate tests homogeneity variance response measure MLM. covEllipses() draw covariance (data) ellipses one group, optionally including ellipse pooled within-group covariance.","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"repeated-measure-designs","dir":"","previous_headings":"Other functions","what":"Repeated measure designs","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"repeated measure designs, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. terms involving within-subject effects, functions carry linear transformation matrix Y responses matrix Y M, M model matrix term intra-subject design produce plots H E matrices transformed space. vignette \"repeated\" describes graphical methods repeated measures designs. (present, vignette available plots repeated measures designs.)","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"datasets","dir":"","previous_headings":"","what":"Datasets","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"package also provides large collection data sets illustrating variety multivariate linear models types listed , together graphical displays. table classifies method tags. names linked documentation pkgdown website, [http://friendly.github.io/heplots].","code":""},{"path":"https://friendly.github.io/heplots/index.html","id":"examples","dir":"","previous_headings":"","what":"Examples","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"example illustrates plots using classic iris data set. means flower variables differ Species? dataset imputus R. . Fisher (1936) propose method discriminant analysis using data collected Edgar Anderson (1928). Though may rightly deprecate Fisher supporter eugenics, Anderson’s iris dataset blamed. basic plot shows H E ellipses first two response variables (: Sepal.Length Sepal.Width). multivariate test significant (Roy’s test) iff H ellipse projects anywhere outside E ellipse. positions group means show differ two response variables shown, provide interpretation orientation H ellipse: long directions differences among means.","code":"iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) heplot(iris.mod)"},{"path":"https://friendly.github.io/heplots/index.html","id":"contrasts","dir":"","previous_headings":"Examples","what":"Contrasts","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"Contrasts linear hypotheses can shown well, ellipses look better filled. create contrasts test differences versacolor virginca also setosa average two. 1 df contrast plots degenerate 1D ellipse– line. contrasts orthogonal, add total 2 df effect Species. Note first contrast, labeled V:V, distinguishes means versicolor virginica; second contrast, S:VV distinguishes setosa two.","code":"par(mar=c(4,4,1,1)+.1) contrasts(iris$Species)<-matrix(c(0, -1, 1, 2, -1, -1), nrow=3, ncol=2) contrasts(iris$Species) #> [,1] [,2] #> setosa 0 2 #> versicolor -1 -1 #> virginica 1 -1 iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) hyp <- list(\"V:V\"=\"Species1\",\"S:VV\"=\"Species2\") heplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=0.1)"},{"path":"https://friendly.github.io/heplots/index.html","id":"all-pairwise-he-plots","dir":"","previous_headings":"Examples","what":"All pairwise HE plots","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"pairwise plots produced using pairs() method MLM objects.","code":"pairs(iris.mod, hypotheses=hyp, hyp.labels=FALSE, fill=TRUE, fill.alpha=0.1)"},{"path":"https://friendly.github.io/heplots/index.html","id":"covariance-ellipses","dir":"","previous_headings":"Examples","what":"Covariance ellipses","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"MANOVA relies assumption within-group covariance matrices equal. useful visualize space predictors. covEllipses() provides classical robust estimates. figure shows three Iris species pooled covariance matrix, E matrix used MANOVA tests.","code":"covEllipses(iris[,1:4], iris$Species) covEllipses(iris[,1:4], iris$Species, fill=TRUE, method=\"mve\", add=TRUE, labels=\"\")"},{"path":"https://friendly.github.io/heplots/index.html","id":"references","dir":"","previous_headings":"","what":"References","title":"Visualizing Hypothesis Tests in Multivariate Linear Models","text":"Anderson, E. (1928). Problem Species Northern Blue Flags, Iris versicolor L. Iris virginica L. Annals Missouri Botanical Garden, 13, 241–313. Fisher, R. . (1936). Use Multiple Measurements Taxonomic Problems. Annals Eugenics, 8, 379–388. Fox, J., Friendly, M. & Monette, G. (2009). Visualizing hypothesis tests multivariate linear models: heplots package R Computational Statistics, 24, 233-246. Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples. Journal Statistical Software, 17, 1-42. Friendly, M. (2010). plots repeated measures designs. Journal Statistical Software, 37, 1–37. Friendly, M.; Monette, G. & Fox, J. (2013). Elliptical Insights: Understanding Statistical Methods Elliptical Geometry Statistical Science, 28, 1-39. Friendly, M. & Sigal, M. (2017). Graphical Methods Multivariate Linear Models Psychological Research: R Tutorial. Quantitative Methods Psychology, 13, 20-45. Friendly, M. & Sigal, M. (2018): Visualizing Tests Equality Covariance Matrices, American Statistician, DOI","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":null,"dir":"Reference","previous_headings":"","what":"Adolescent Health Data — AddHealth","title":"Adolescent Health Data — AddHealth","text":"data taken National Longitudinal Study Adolescent Health. cross-sectional sample participants grades 7--12, described analyzed Warne (2014).","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Adolescent Health Data — AddHealth","text":"data frame 4344 observations following 3 variables. grade ordered factor levels 7 < 8 < 9 < 10 < 11 < 12 depression numeric vector anxiety numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Adolescent Health Data — AddHealth","text":"Warne, R. T. (2014). primer Multivariate Analysis Variance (MANOVA) Behavioral Scientists. Practical Assessment, Research & Evaluation, 19 (1). https://scholarworks.umass.edu/pare/vol19/iss1/17/","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Adolescent Health Data — AddHealth","text":"depression response question \"last month, often feel depressed blue?\" anxiety response question \"last month, often trouble relaxing?\" responses depression anxiety recorded 5-point Likert scale, categories 0=\"Never\", 1=\"Rarely\", 2=\"Occasionally\", 3=\"Often\", 4=\"Every day\"","code":""},{"path":"https://friendly.github.io/heplots/reference/AddHealth.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Adolescent Health Data — AddHealth","text":"","code":"data(AddHealth) # fit mlm AH.mod <- lm(cbind(depression, anxiety) ~ grade, data=AddHealth) car::Anova(AH.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> grade 5 0.022415 9.834 10 8676 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 summary(car::Anova(AH.mod)) #> #> Type II MANOVA Tests: #> #> Sum of squares and products for error: #> depression anxiety #> depression 6058.911 3021.691 #> anxiety 3021.691 5210.233 #> #> ------------------------------------------ #> #> Term: grade #> #> Sum of squares and products for the hypothesis: #> depression anxiety #> depression 112.76722 87.57399 #> anxiety 87.57399 75.02650 #> #> Multivariate Tests: grade #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 5 0.0224153 9.833964 10 8676 < 2.22e-16 *** #> Wilks 5 0.9776192 9.872584 10 8674 < 2.22e-16 *** #> Hotelling-Lawley 5 0.0228579 9.911186 10 8672 < 2.22e-16 *** #> Roy 5 0.0211939 18.387786 5 4338 < 2.22e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(AH.mod, hypotheses=\"grade.L\", fill=c(TRUE, FALSE))"},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":null,"dir":"Reference","previous_headings":"","what":"Adopted Children — Adopted","title":"Adopted Children — Adopted","text":"Data subset observational, longitudinal, study adopted children. child's intelligence related intelligence biological mother intelligence adoptive mother?","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Adopted Children — Adopted","text":"data frame 62 observations following 6 variables. AMED adoptive mother's years education (proxy IQ) BMIQ biological mother's score IQ test Age2IQ IQ child age 2 Age4IQ IQ child age 4 Age8IQ IQ child age 8 Age13IQ IQ child age 13","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Adopted Children — Adopted","text":"Ramsey, F.L. Schafer, D.W. (2002). Statistical Sleuth: Course Methods Data Analysis (2nd ed), Duxbury. data set identical ex1605 Sleuth2 package.","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Adopted Children — Adopted","text":"child's intelligence measured age 2, 4, 8, 13 sample. intelligence change time, changes related intelligence birth adoptive mother?","code":""},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Adopted Children — Adopted","text":"Friendly, M. (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Skodak, M. Skeels, H.M. (1949). Final Follow-Study One Hundred Adopted Children, Journal Genetic Psychology 75: 85--125.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/Adopted.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Adopted Children — Adopted","text":"","code":"# Treat as multivariate regression problem Adopted.mod <- lm(cbind(Age2IQ, Age4IQ, Age8IQ, Age13IQ) ~ AMED + BMIQ, data=Adopted) Adopted.mod #> #> Call: #> lm(formula = cbind(Age2IQ, Age4IQ, Age8IQ, Age13IQ) ~ AMED + #> BMIQ, data = Adopted) #> #> Coefficients: #> Age2IQ Age4IQ Age8IQ Age13IQ #> (Intercept) 117.63046 93.33771 88.03739 76.84827 #> AMED -0.44136 -0.02073 -0.01216 -0.16063 #> BMIQ 0.04001 0.22172 0.30961 0.36747 #> require(car) #> Loading required package: car #> Loading required package: carData # test overall multivariate regression print(linearHypothesis(Adopted.mod, c(\"AMED\",\"BMIQ\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.1964576 1.552235 8 114 0.147134 #> Wilks 2 0.8065020 1.589253 8 112 0.135846 #> Hotelling-Lawley 2 0.2362528 1.624238 8 110 0.125939 #> Roy 2 0.2195371 3.128404 4 57 0.021426 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # show separate linear regressions op <- par(mfcol=c(2,4), mar=c(4,4,1,1)+.1) for (i in 3:6) { dataEllipse(as.matrix(Adopted[,c(1,i)]), col=\"black\", levels=0.68, ylim=c(70,140)) abline(lm(Adopted[,i] ~ Adopted[,1]), col=\"red\", lwd=2) dataEllipse(as.matrix(Adopted[,c(2,i)]), col=\"black\", levels=0.68, ylim=c(70,140)) abline(lm(Adopted[,i] ~ Adopted[,2]), col=\"red\", lwd=2) abline(a=0,b=1, lty=1, col=\"blue\") } par(op) # between-S (MMReg) plots heplot(Adopted.mod, hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\")), main=\"IQ scores of adopted children: MMReg\") pairs(Adopted.mod, hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\"))) if(requireNamespace(\"rgl\")){ heplot3d(Adopted.mod, hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\")), col = c(\"red\", \"blue\", \"black\", \"gray\"), wire=FALSE) } # Treat IQ at different ages as a repeated measure factor # within-S models & plots Age <- data.frame(Age=ordered(c(2,4,8,13))) car::Anova(Adopted.mod, idata=Age, idesign=~Age, test=\"Roy\") #> #> Type II Repeated Measures MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 115.669 6824.5 1 59 < 2.2e-16 *** #> AMED 1 0.002 0.1 1 59 0.737878 #> BMIQ 1 0.126 7.5 1 59 0.008302 ** #> Age 1 0.712 13.5 3 57 8.911e-07 *** #> AMED:Age 1 0.014 0.3 3 57 0.845454 #> BMIQ:Age 1 0.122 2.3 3 57 0.085792 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # within-S plots heplot(Adopted.mod, idata=Age, idesign=~Age, iterm=\"Age\", cex=1.25, cex.lab=1.4, fill=c(FALSE, TRUE), hypotheses=list(\"Reg\"=c(\"AMED\", \"BMIQ\")) )"},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw a 3D Arrow in an RGL Scene — arrow3d","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"Draws 3D arrow rgl scene barbs arrow head","code":""},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"","code":"arrow3d( p0 = c(0, 0, 0), p1 = c(1, 1, 1), barblen, s = 0.05, theta = pi/6, n = 3, ... )"},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"p0 Initial point (tail arrow) p1 Ending point (head arrow) barblen Length barb, data units s length barb fraction line length (unless barblen specified) theta opening angle barbs n number barbs ... args passed lines3d line styling, e.g., color, lwd, etc. See material3d.","code":""},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"Returns (invisibly): integer ID line added scene","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"Barry Rowlingson, posted R-help, 1/10/2010","code":""},{"path":"https://friendly.github.io/heplots/reference/arrow3d.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw a 3D Arrow in an RGL Scene — arrow3d","text":"","code":"arrow3d(c(0,0,0), c(2,2,2), barblen=.2, lwd=3, col=\"black\") arrow3d(c(0,0,0), c(-2,2,2), barblen=.2, lwd=3, col=\"red\")"},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":null,"dir":"Reference","previous_headings":"","what":"Bartlett Tests of Homogeneity of Variances — bartlettTests","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"function extends bartlett.test multivariate response setting. performs Bartlett test homogeneity variances set response variables, prints compact summary.","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"","code":"bartlettTests(y, group, ...)"},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"y data frame matrix numeric response variables multivariate linear model. group vector factor object giving group corresponding elements rows y ... arguments, passed bartlett.test","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"object classes \"anova\" \"data.frame\", one observation response variable y.","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"Bartlett's test univariate version Box's M test equality covariance matrices. function provides univariate follow-test Box's M test give one simple assessment response variables contribute significant differences variances among groups.","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"Bartlett, M. S. (1937). Properties sufficiency statistical tests. Proceedings Royal Society London Series , 160, 268-282.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/bartlettTests.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bartlett Tests of Homogeneity of Variances — bartlettTests","text":"","code":"bartlettTests(iris[,1:4], iris$Species) #> Bartlett's Tests for Homogeneity of Variance #> #> Chisq df Pr(>Chisq) #> Sepal.Length 16.0057 2 0.0003345 *** #> Sepal.Width 2.0911 2 0.3515028 #> Petal.Length 55.4225 2 9.229e-13 *** #> Petal.Width 39.2131 2 3.055e-09 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 data(Skulls, package=\"heplots\") bartlettTests(Skulls[,-1], Skulls$epoch) #> Bartlett's Tests for Homogeneity of Variance #> #> Chisq df Pr(>Chisq) #> mb 7.3382 4 0.1191 #> bh 0.7315 4 0.9474 #> bl 3.5155 4 0.4755 #> nh 4.3763 4 0.3575"},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"Ellipsoids created rgl functions meshes points, segments, ... coordinates various forms. function calculates bounding box, defined range x, y, z coordinates.","code":""},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"","code":"bbox3d(x, ...)"},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"x mesh3d object ... ignored","code":""},{"path":"https://friendly.github.io/heplots/reference/bbox3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Find the bounding box of a rgl::mesh3d or rgl::qmesh3d object — bbox3d","text":"2 x 3 matrix, giving minimum maximum values rows x, y, z coordinates columns.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":null,"dir":"Reference","previous_headings":"","what":"Captive and maltreated bees — Bees","title":"Captive and maltreated bees — Bees","text":"Pabalan, Davey Packe (2000) studied effects captivity maltreatment reproductive capabilities queen worker bees complex factorial design.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Captive and maltreated bees — Bees","text":"data frame 246 observations following 6 variables. caste factor levels Queen Worker treat factor levels \"\" CAP MAL time ordered factor: time treatment Iz index ovarian development Iy index ovarian reabsorption trtime factor levels 0 CAP05 CAP07 CAP10 CAP12 CAP15 MAL05 MAL07 MAL10 MAL12 MAL15","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Captive and maltreated bees — Bees","text":"Pabalan, N., Davey, K. G. & Packe, L. (2000). Escalation Aggressive Interactions Staged Encounters Halictus ligatus Say (Hymenoptera: Halictidae), Comparison Circle Tube Behaviors Halictine Species Journal Insect Behavior, 13, 627-650.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Captive and maltreated bees — Bees","text":"Bees placed small tube either held captive (CAP) shaken periodically (MAL) one 5, 7.5, 10, 12.5 15 minutes, sacrificed two measures: ovarian development (Iz) ovarian reabsorption (Iy), taken. single control group measured treatment, .e., time 0; n=10 per group. design thus nearly three-way factorial, factors caste (Queen, Worker), treat (CAP, MAL) time, except 11 combinations Treatment Time; call trtime . Models three-way factorial design, using formula cbind(Iz,Iy) ~ caste*treat*time ignore control condition time==0, treat==NA. handle additional control group time==0, separating effects Treatment Time, 10 contrasts can defined trtime factor model cbind(Iz,Iy) ~ caste*trtime See demo(bees.contrasts) details. heplot examples , default size=\"evidence\" displays crowded interpret, effects highly significant. alternative effect-size scaling, size=\"effect\", makes relations clearer.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Captive and maltreated bees — Bees","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17, 1-42.","code":""},{"path":"https://friendly.github.io/heplots/reference/Bees.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Captive and maltreated bees — Bees","text":"","code":"data(Bees) require(car) # 3-way factorial, ignoring 0 group bees.mod <- lm(cbind(Iz,Iy) ~ caste*treat*time, data=Bees) car::Anova(bees.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> caste 1 0.72792 240.787 2 180 < 2.2e-16 *** #> treat 1 0.19313 21.542 2 180 4.098e-09 *** #> time 4 0.75684 27.548 8 362 < 2.2e-16 *** #> caste:treat 1 0.02506 2.313 2 180 0.1019 #> caste:time 4 0.28670 7.572 8 362 2.288e-09 *** #> treat:time 4 0.01941 0.443 8 362 0.8945 #> caste:treat:time 4 0.06796 1.592 8 362 0.1257 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 op<-palette(c(palette()[1:4],\"brown\",\"magenta\", \"olivedrab\",\"darkgray\")) heplot(bees.mod, xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*treat*time\") heplot(bees.mod, size=\"effect\", xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*treat*time\", ) # two-way design, using trtime bees.mod1 <- lm(cbind(Iz,Iy) ~ caste*trtime, data=Bees) Anova(bees.mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> caste 1 0.67976 236.673 2 223 < 2.2e-16 *** #> trtime 10 0.82851 15.842 20 448 < 2.2e-16 *** #> caste:trtime 10 0.32173 4.294 20 448 3.746e-09 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # HE plots for this model, with both significance and effect size scaling heplot(bees.mod1, xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*trtime\") heplot(bees.mod1, xlab=\"Iz: Ovarian development\", ylab=\"Iz: Ovarian reabsorption\", main=\"Bees: ~caste*trtime\", size=\"effect\") palette(op) # effect plots for separate responses if(require(effects)) { bees.lm1 <-lm(Iy ~ treat*caste*time, data=Bees) bees.lm2 <-lm(Iz ~ treat*caste*time, data=Bees) bees.eff1 <- allEffects(bees.lm1) plot(bees.eff1,multiline=TRUE,ask=FALSE) bees.eff2 <- allEffects(bees.lm2) plot(bees.eff2,multiline=TRUE,ask=FALSE) } #> Loading required package: effects #> lattice theme set by effectsTheme() #> See ?effectsTheme for details."},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":null,"dir":"Reference","previous_headings":"","what":"Box's M-test — boxM","title":"Box's M-test — boxM","text":"boxM performs Box's (1949) M-test homogeneity covariance matrices obtained multivariate normal data according one classification factors. test compares product log determinants separate covariance matrices log determinant pooled covariance matrix, analogous likelihood ratio test. test statistic uses chi-square approximation.","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Box's M-test — boxM","text":"","code":"boxM(Y, ...) # S3 method for default boxM(Y, group, ...) # S3 method for formula boxM(Y, data, ...) # S3 method for lm boxM(Y, ...) # S3 method for boxM summary(object, digits = getOption(\"digits\"), cov = FALSE, quiet = FALSE, ...)"},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Box's M-test — boxM","text":"Y response variable matrix default method, \"mlm\" \"formula\" object multivariate linear model. Y linear-model object formula, variables right-hand-side model must factors must completely crossed, e.g., :B ... Arguments passed methods. group factor defining groups, vector length n . data numeric data.frame matrix containing n observations p variables; expected n > p. object \"boxM\" object summary method digits number digits print summary method cov logical; TRUE covariance matrices printed. quiet logical; TRUE printing summary suppressed","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Box's M-test — boxM","text":"list class c(\"htest\", \"boxM\") containing following components: statistic approximated value chi-square distribution. parameter degrees freedom related test statistic case follows Chi-square distribution. p.value p-value test. cov list containing within covariance matrix level grouping. pooled pooled covariance matrix. logDet vector containing natural logarithm matrix cov, followed value pooled covariance matrix means matrix means groups, followed grand means df vector degrees freedom groups, followed pooled covariance matrix data.name character string giving names data. method character string \"Box's M-test Homogeneity Covariance Matrices\".","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Box's M-test — boxM","text":"object class \"htest\", statistical test printed normally default. object class \"boxM\", methods available. general provision yet handling missing data. Missing data simply removed, warning. well, computation assumes covariance matrix group non-singular, \\(log det(S_i)\\) can calculated group. minimum, requires \\(n > p\\) group. Box's M test multivariate linear model highly sensitive departures multivariate normality, just analogous univariate test. also affected adversely unbalanced designs. people recommend ignore result unless highly significant, e.g., p < .0001 worse. summary method prints variety additional statistics based eigenvalues covariance matrices. returned invisibly, list containing following components: logDet - log determinants eigs - eigenvalues covariance matrices eigstats - statistics computed eigenvalues covariance matrix:product: product eigenvalues, \\(\\prod{\\lambda_i}\\);sum: sum eigenvalues, \\(\\sum{\\lambda_i}\\);precision: average precision eigenvalues, \\(1/\\sum(1/\\lambda_i)\\);max: maximum eigenvalue, \\(\\lambda_1\\)","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Box's M-test — boxM","text":"Box, G. E. P. (1949). general distribution theory class likelihood criteria. Biometrika, 36, 317-346. Morrison, D.F. (1976) Multivariate Statistical Methods.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Box's M-test — boxM","text":"default method taken biotools package, Anderson Rodrigo da Silva anderson.agro@hotmail.com Generalized Michael Friendly John Fox","code":""},{"path":"https://friendly.github.io/heplots/reference/boxM.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Box's M-test — boxM","text":"","code":"data(iris) # default method res <- boxM(iris[, 1:4], iris[, \"Species\"]) res #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: iris[, 1:4] #> Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16 #> summary(res) #> Summary for Box's M-test of Equality of Covariance Matrices #> #> Chi-Sq:\t 140.943 #> df:\t 20 #> p-value: < 2.2e-16 #> #> log of Covariance determinants: #> setosa versicolor virginica pooled #> -13.067360 -10.874325 -8.927058 -9.958539 #> #> Eigenvalues: #> setosa versicolor virginica pooled #> 1 0.236455690 0.487873944 0.69525484 0.44356592 #> 2 0.036918732 0.072384096 0.10655123 0.08618331 #> 3 0.026796399 0.054776085 0.05229543 0.05535235 #> 4 0.009033261 0.009790365 0.03426585 0.02236372 #> #> Statistics based on eigenvalues: #> setosa versicolor virginica pooled #> product 2.113088e-06 1.893828e-05 0.0001327479 4.732183e-05 #> sum 3.092041e-01 6.248245e-01 0.8883673469 6.074653e-01 #> precision 5.576122e-03 7.338788e-03 0.0169121236 1.304819e-02 #> max 2.364557e-01 4.878739e-01 0.6952548382 4.435659e-01 # visualize (what is done in the plot method) dets <- res$logDet ng <- length(res$logDet)-1 dotchart(dets, xlab = \"log determinant\") points(dets , 1:4, cex=c(rep(1.5, ng), 2.5), pch=c(rep(16, ng), 15), col= c(rep(\"blue\", ng), \"red\")) # formula method boxM( cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Y #> Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16 #> ### Skulls dat data(Skulls) # lm method skulls.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) boxM(skulls.mod) #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Y #> Chi-Sq (approx.) = 45.667, df = 40, p-value = 0.2483 #>"},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Coefficient plots for Multivariate Linear Models — coefplot","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"Displays confidence ellipses parameters multivariate linear model, given pair variables. , generalization confidenceEllipse.","code":""},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"","code":"coefplot(object, ...) # S3 method for mlm coefplot( object, variables = 1:2, parm = NULL, df = NULL, level = 0.95, intercept = FALSE, Scheffe = FALSE, bars = TRUE, fill = FALSE, fill.alpha = 0.2, labels = !add, label.pos = NULL, xlab, ylab, xlim = NULL, ylim = NULL, axes = TRUE, main = \"\", add = FALSE, lwd = 1, lty = 1, pch = 19, col = palette(), cex = 2, cex.label = 1.5, lty.zero = 3, col.zero = 1, pch.zero = \"+\", verbose = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"object multivariate linear model, fit lm(cbind(y1, y2, ...) ~ ...) ... parameters passed methods variables Response variables plot, given indices names parm Parameters plot, given indices names df Degrees freedom hypothesis tests level Confidence level confidence ellipses intercept logical. Include intercept? Scheffe TRUE, confidence intervals parameters Scheffe coverage, otherwise, individual coverage. bars Draw univariate confidence intervals variables? fill logical value vector. TRUE means confidence ellipses filled. fill.alpha Opacity confidence ellipses labels Labels confidence ellipses label.pos Positions labels ellipse. See label.ellipse xlab, ylab x, y axis labels xlim, ylim Axis limits axes Draw axes? main Plot title add logical. Add existing plot? lwd Line widths lty Line types pch Point symbols parameter estimates col Colors confidence ellipses, points, lines cex Character size points showing parameter estimates cex.label Character size ellipse labels lty.zero, col.zero, pch.zero Line type, color point symbol horizontal vertical lines 0, 0. verbose logical. Print parameter estimates variance-covariance parameter?","code":""},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"Returns invisibly list coordinates ellipses drawn","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/coefplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Coefficient plots for Multivariate Linear Models — coefplot","text":"","code":"rohwer.mlm <- lm(cbind(SAT,PPVT,Raven)~n+s+ns, data=Rohwer) coefplot(rohwer.mlm, lwd=2, main=\"Bivariate coefficient plot for SAT and PPVT\", fill=TRUE) coefplot(rohwer.mlm, add=TRUE, Scheffe=TRUE, fill=TRUE) coefplot(rohwer.mlm, var=c(1,3)) mod1 <- lm(cbind(SAT,PPVT,Raven)~n+s+ns+na+ss, data=Rohwer) coefplot(mod1, lwd=2, fill=TRUE, parm=(1:5), main=\"Bivariate 68% coefficient plot for SAT and PPVT\", level=0.68)"},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate column deviations from central values — colDevs","title":"Calculate column deviations from central values — colDevs","text":"colDevs calculates column deviations data values central value (mean, median, etc.), possibly stratified grouping variable.","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate column deviations from central values — colDevs","text":"","code":"colDevs(x, group, center = mean, ...)"},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate column deviations from central values — colDevs","text":"x numeric data frame matrix. group factor (variable can coerced factor) indicating membership observation x one groups. missing, data treated single group. center function used center values (group group specified. function must take vector argument return scalar result. ... Arguments passed ","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate column deviations from central values — colDevs","text":"numeric matrix containing deviations centering function.","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate column deviations from central values — colDevs","text":"Conceptually, function similar column-wise sweep, group, allowing arbitrary center function. Non-numeric columns x removed, warning.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate column deviations from central values — colDevs","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/colDevs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate column deviations from central values — colDevs","text":"","code":"data(iris) Species <- iris$Species irisdev <- colDevs(iris[,1:4], Species, mean) irisdev <- colDevs(iris[,1:4], Species, median) # trimmed mean, using an anonymous function irisdev <- colDevs(iris[,1:4], Species, function(x) mean(x, trim=0.25)) # no grouping variable: deviations from column grand means # include all variables (but suppress warning for this doc) irisdev <- suppressWarnings( colDevs(iris) )"},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"function draws covariance ellipses one groups optionally pooled total sample. uses either classical product-moment covariance estimate, robust alternative, provided cov.rob. Provisions provided two variables, scatterplot matrix format.","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"","code":"covEllipses(x, ...) # S3 method for data.frame covEllipses( x, group, pooled = TRUE, method = c(\"classical\", \"mve\", \"mcd\"), ... ) # S3 method for matrix covEllipses( x, group, pooled = TRUE, method = c(\"classical\", \"mve\", \"mcd\"), ... ) # S3 method for formula covEllipses(x, data, ...) # S3 method for boxM covEllipses(x, ...) # S3 method for default covEllipses( x, means, df, labels = NULL, variables = 1:2, level = 0.68, segments = 60, center = FALSE, center.pch = \"+\", center.cex = 2, col = getOption(\"heplot.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"brown\", \"magenta\", \"darkgray\")), lty = 1, lwd = 2, fill = FALSE, fill.alpha = 0.3, label.pos = 0, xlab, ylab, vlabels, var.cex = 2, main = \"\", xlim, ylim, axes = TRUE, offset.axes, add = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"x generic argument. default method, list covariance matrices. data.frame matrix methods, numeric matrix two columns supplying variables analyzed. ... arguments passed default method plot, text, points group factor defining groups, vector length n=nrow(x) . missing, single covariance ellipse drawn. pooled Logical; TRUE, pooled covariance matrix total sample also computed plotted method covariance method used: classical product-moment (\"classical\"), minimum volume ellipsoid (\"mve\"), minimum covariance determinant (\"mcd\"). data formula method, data.frame evaluate. means default method, matrix means groups (followed grand means, pooled=TRUE). Rows groups, columns variables. assumed means column names corresponding variables covariance matrices. df default method, vector degrees freedom covariance matrices labels Either character vector labels groups, TRUE, indicating group labels taken names covariance matrices. Use labels=\"\" suppress group labels, e.g., add=TRUE variables indices names response variables plotted; defaults 1:2. two variables supplied, function plots pairwise covariance ellipses scatterplot matrix format. level equivalent coverage data ellipse normally-distributed errors, defaults 0.68. segments number line segments composing ellipse; defaults 40. center TRUE, covariance ellipses centered centroid. center.pch character use plotting centroid data; defaults \"+\". center.cex size character use plotting centroid data; defaults 2. col color vector colors use plotting ellipses --- recycled necessary single color can given, case used ellipses. convenience, default colors plots produced given session can changed assigning color vector via options(heplot.colors =c(...). Otherwise, default colors c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lty vector line types use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line type can given. Defaults 2:1. lwd vector line widths use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line width can given. Defaults 1:2. fill logical vector indicating whether ellipse filled . first value used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single fill value can given. Defaults FALSE backward compatibility. See Details . fill.alpha Alpha transparency filled ellipses, numeric scalar vector values within [0,1], 0 means fully transparent 1 means fully opaque. Defaults 0.3. label.pos Label position, vector integers (0:4) character strings (c(\"center\", \"bottom\", \"left\", \"top\", \"right\")) use labeling ellipses, recycled necessary. Values 1, 2, 3 4, respectively indicate positions , left , right max/min coordinates ellipse; value 0 specifies centroid ellipse object. default, label.pos=NULL uses correlation ellipse determine \"top\" (r>=0) \"bottom\" (r<0). xlab x-axis label; defaults name x variable. ylab y-axis label; defaults name y variable. vlabels Labels variables can also supplied argument, convenient length(variables) > 2. var.cex character size variable labels pairs plot main main plot label; defaults \"\", presently effect. xlim x-axis limits; absent, computed data. ylim y-axis limits; absent, computed data. axes Whether draw x, y axes; defaults TRUE offset.axes proportion extend axes direction computed data; optional. add TRUE, add current plot; default FALSE. argument effect two variables plotted.","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"Nothing returned. function used side-effect producing plot.","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"plot methods provide one way visualize possible heterogeneity within-group covariance matrices one-way MANOVA design. covariance matrices nearly equal, covariance ellipses shape. centered common mean, also overlap. can also used visualize difference classical robust covariance matrices.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/covEllipses.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw classical and robust covariance ellipses for one or more groups — covEllipses","text":"","code":"data(iris) # compare classical and robust covariance estimates covEllipses(iris[,1:4], iris$Species) covEllipses(iris[,1:4], iris$Species, fill=TRUE, method=\"mve\", add=TRUE, labels=\"\") # method for a boxM object x <- boxM(iris[, 1:4], iris[, \"Species\"]) x #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: iris[, 1:4] #> Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16 #> covEllipses(x, fill=c(rep(FALSE,3), TRUE) ) covEllipses(x, fill=c(rep(FALSE,3), TRUE), center=TRUE, label.pos=1:4 ) # method for a list of covariance matrices cov <- c(x$cov, pooled=list(x$pooled)) df <- c(table(iris$Species)-1, nrow(iris)-3) covEllipses(cov, x$means, df, label.pos=3, fill=c(rep(FALSE,3), TRUE)) covEllipses(cov, x$means, df, label.pos=3, fill=c(rep(FALSE,3), TRUE), center=TRUE) # scatterplot matrix version covEllipses(iris[,1:4], iris$Species, fill=c(rep(FALSE,3), TRUE), variables=1:4, fill.alpha=.1)"},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Chi Square Quantile-Quantile plots — cqplot","title":"Chi Square Quantile-Quantile plots — cqplot","text":"chi square quantile-quantile plots show relationship data-based values distributed \\(\\chi^2\\) corresponding quantiles \\(\\chi^2\\) distribution. multivariate analyses, often used assess multivariate normality check outliers, using Mahalanobis squared distances (\\(D^2\\)) observations centroid.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Chi Square Quantile-Quantile plots — cqplot","text":"","code":"cqplot(x, ...) # S3 method for mlm cqplot(x, ...) # S3 method for default cqplot( x, method = c(\"classical\", \"mcd\", \"mve\"), detrend = FALSE, pch = 19, col = palette()[1], cex = par(\"cex\"), ref.col = \"red\", ref.lwd = 2, conf = 0.95, env.col = \"gray\", env.lwd = 2, env.lty = 1, env.fill = TRUE, fill.alpha = 0.2, fill.color = trans.colors(ref.col, fill.alpha), labels = if (!is.null(rownames(x))) rownames(x) else 1:nrow(x), id.n, id.method = \"y\", id.cex = 1, id.col = palette()[1], xlab, ylab, main, what = deparse(substitute(x)), ylim, ... )"},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Chi Square Quantile-Quantile plots — cqplot","text":"x either numeric data frame matrix default method, object class \"mlm\" representing multivariate linear model. latter case, residuals model plotted. ... arguments passed methods method estimation method used center covariance, one : \"classical\" (product-moment), \"mcd\" (minimum covariance determinant), \"mve\" (minimum volume ellipsoid). detrend logical; FALSE, plot shows values \\(D^2\\) vs. \\(\\chi^2\\). TRUE, ordinate shows values \\(D^2 - \\chi^2\\) pch plot symbol points Can vector length equal number rows x. col color points; default first entry current color palette (see palette par. cex character symbol size points. Can vector length equal number rows x. ref.col Color reference line ref.lwd Line width reference line conf confidence coverage approximate confidence envelope env.col line color boundary confidence envelope env.lwd line width confidence envelope env.lty line type confidence envelope env.fill logical; confidence envelope filled? fill.alpha transparency value fill.color fill.color color used fill confidence envelope labels vector text strings used identify points, defaults rownames(x) observation numbers rownames(x) NULL id.n number points labeled. id.n=0, default, point identification occurs. id.method point identification method. default id.method=\"y\" identify id.n points largest value abs(y-mean(y)). See showLabels options. id.cex size text point labels id.col color point labels xlab label horizontal (theoretical quantiles) axis ylab label vertical (empirical quantiles) axis main plot title name object plotted; used construction main specified. ylim limits vertical axis. specified, range confidence envelope used.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Chi Square Quantile-Quantile plots — cqplot","text":"Returns invisibly vector squared Mahalanobis distances corresponding rows x residuals model.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Chi Square Quantile-Quantile plots — cqplot","text":"cqplot general version similar functions packages produce chi square QQ plots. allows classical Mahalanobis squared distances well robust estimates based MVE MCD; provides approximate confidence (concentration) envelope around line unit slope, detrended version, reference line horizontal, ability identify label unusual points, graphical features. method \"mlm\" objects applies residuals model. calculation confidence envelope follows used SAS program, http://www.datavis.ca/sasmac/cqplot.html comes Chambers et al. (1983), Section 6.8. essential formula $$ SE ( z_{()} ) = \\frac{\\hat{\\delta}}{g ( q_i)) \\times \\sqrt{ frac{ p_i (1-p_i} }{n}} $$ \\(z_{()}\\) -th order value \\(D^2\\), \\(\\hat{\\delta}\\) estimate slope reference line obtained corresponding quartiles \\(g(q_i)\\) density chi square distribution quantile \\(q_i\\). Note confidence envelope applies \\(D^2\\) computed using classical estimates location scatter. car::qqPlot() function provides simulated envelopes, univariate measure. Oldford (2016) provides general theory methods QQ plots.","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Chi Square Quantile-Quantile plots — cqplot","text":"J. Chambers, W. S. Cleveland, B. Kleiner, P. . Tukey (1983). Graphical methods data analysis, Wadsworth. R. W. Oldford (2016), \"Self calibrating quantile-quantile plots\", American Statistician, 70, 74-90.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Chi Square Quantile-Quantile plots — cqplot","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/cqplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Chi Square Quantile-Quantile plots — cqplot","text":"","code":"cqplot(iris[, 1:4]) iris.mod <- lm(as.matrix(iris[,1:4]) ~ Species, data=iris) cqplot(iris.mod, id.n=3) # compare with car::qqPlot car::qqPlot(Mahalanobis(iris[, 1:4]), dist=\"chisq\", df=4) #> [1] 132 135 # Adopted data Adopted.mod <- lm(cbind(Age2IQ, Age4IQ, Age8IQ, Age13IQ) ~ AMED + BMIQ, data=Adopted) cqplot(Adopted.mod, id.n=3) cqplot(Adopted.mod, id.n=3, method=\"mve\") # Sake data Sake.mod <- lm(cbind(taste, smell) ~ ., data=Sake) cqplot(Sake.mod) cqplot(Sake.mod, method=\"mve\", id.n=2) # SocialCog data -- one extreme outlier data(SocialCog) SC.mlm <- lm(cbind(MgeEmotions,ToM, ExtBias, PersBias) ~ Dx, data=SocialCog) cqplot(SC.mlm, id.n=1) # data frame example: stackloss data data(stackloss) cqplot(stackloss[, 1:3], id.n=4) # very strange cqplot(stackloss[, 1:3], id.n=4, detrend=TRUE) cqplot(stackloss[, 1:3], id.n=4, method=\"mve\") cqplot(stackloss[, 1:3], id.n=4, method=\"mcd\")"},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw a 3D cross in an rgl scene — cross3d","title":"Draw a 3D cross in an rgl scene — cross3d","text":"Draws 3D cross axis vectors rgl scene.","code":""},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw a 3D cross in an rgl scene — cross3d","text":"","code":"cross3d(centre = rep(0, 3), scale = rep(1, 3), ...)"},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw a 3D cross in an rgl scene — cross3d","text":"centre scalar vector length 3, giving centre 3D cross scale scalar vector length 3, giving lengths arms 3D cross ... arguments, passed segments3d","code":""},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw a 3D cross in an rgl scene — cross3d","text":"Used side-effect, returns (invisibly) 6 3 matrix containing end-points three axes, pairs.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/cross3d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw a 3D cross in an rgl scene — cross3d","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":null,"dir":"Reference","previous_headings":"","what":"Diabetes Dataset — Diabetes","title":"Diabetes Dataset — Diabetes","text":"Reaven Miller (1979) examined relationship among blood chemistry measures glucose tolerance insulin 145 nonobese adults. used PRIM9 system Stanford Linear Accelerator Center visualize data 3D, discovered peculiar pattern looked like large blob two wings different directions.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Diabetes Dataset — Diabetes","text":"data frame 145 observations following 6 variables. relwt relative weight, expressed ratio actual weight expected weight, given person's height, numeric vector glufast fasting plasma glucose level, numeric vector glutest test plasma glucose level, measure glucose intolerance, numeric vector instest plasma insulin test, measure insulin response oral glucose, numeric vector sspg steady state plasma glucose, measure insulin resistance, numeric vector group diagnostic group, factor levels Normal Chemical_Diabetic Overt_Diabetic","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Diabetes Dataset — Diabetes","text":"Andrews, D. F. & Herzberg, . M. (1985). Data: Collection Problems Many Fields Student Research Worker, Springer-Verlag, Ch. 36. Friendly, M. (1991). SAS System Statistical Graphics, Cary, NC: SAS Institute.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Diabetes Dataset — Diabetes","text":"analysis, subjects classified subclinical (chemical) diabetics, overt diabetics normals. study influential defining stages development Type 2 diabetes. Overt diabetes advanced stage, characterized elevated fasting blood glucose concentration classical symptoms. Preceding overt diabetes latent chemical diabetic stage, symptoms diabetes demonstrable abnormality oral intravenous glucose tolerance. glutest defined \"area plasma glucose curve three hour oral glucose tolerance test.\" Reaven & Miller refer variable \"Glucose area\". instest defined \"area plasma insulin curve\", referred paper \"Insulin area\". study influential defining stages development Type 2 diabetes. Overt diabetes advanced stage, characterized elevated fasting blood glucose concentration classical symptoms. Preceding overt diabetes latent chemical diabetic stage, symptoms diabetes demonstrable abnormality oral intravenous glucose tolerance.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Diabetes Dataset — Diabetes","text":"Reaven, G. M. Miller, R. G. (1979). attempt define nature chemical diabetes using multidimensional analysis. Diabetologia, 16, 17-24.","code":""},{"path":"https://friendly.github.io/heplots/reference/Diabetes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Diabetes Dataset — Diabetes","text":"","code":"data(Diabetes) col <- c(\"blue\", \"red\", \"darkgreen\")[Diabetes$group] pch <- c(16,15,17)[Diabetes$group] # a perplexing plot, similar to Fig 2, but with a loess smooth plot(instest ~ glutest, data=Diabetes, pch=16, cex.lab=1.25, xlab=\"Glucose area (glutest)\", ylab=\"Insulin area (instest)\") lines( loess.smooth(Diabetes$glutest, Diabetes$instest), col=\"blue\", lwd=2) # scatterplot matrix, colored by group plot(Diabetes[,1:5], col=col, pch=pch) # covariance ellipses covEllipses(Diabetes[,2:5], Diabetes$group, fill=TRUE, pooled=FALSE, col=col) covEllipses(Diabetes[,2:5], Diabetes$group, fill=TRUE, pooled=FALSE, col=col, variables=1:4) # Box's M test diab.boxm <- boxM(Diabetes[,2:5], Diabetes$group) diab.boxm #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Diabetes[, 2:5] #> Chi-Sq (approx.) = 382.84, df = 20, p-value < 2.2e-16 #> plot(diab.boxm) # heplots diab.mlm <- lm(cbind(glufast, glutest, instest, sspg) ~ group, data=Diabetes) heplot(diab.mlm) pairs(diab.mlm, fill=TRUE, fill.alpha=0.1)"},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw axes of a 3D ellipsoid — ellipse3d.axes","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"function draw major axes 3D ellipsoid correlation, covariance sums squares cross products matrix.","code":""},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"","code":"ellipse3d.axes( x, centre = c(0, 0, 0), scale = c(1, 1, 1), level = 0.95, t = sqrt(qchisq(level, 3)), which = 1:3, labels = TRUE, label.ends = c(2, 4, 6), ... )"},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"x square positive definite matrix least 3x3 size. treated correlation covariance multivariate normal distribution. centre center ellipse scale x correlation matrix, standard deviations parameter can given scale parameter. defaults c(1, 1, 1), rescaling done. level confidence level simultaneous confidence region. default 0.95, 95% region. used control size ellipsoid. t size ellipsoid may also controlled specifying value t-statistic boundary. parameter selects variables object plotted. default first 3. labels Either logical value, character string, character vector length 3. TRUE, default, axes labeled PC1, PC2, PC3. single character string, digits 1, 2, 3 pasted end. label.ends vector length 3 indicating ends axes labeled, corresponding selection rows 6 x 3 matrix axes end points. Default: c(2,4,6). ... arguments passed segments3d text3d.","code":""},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"Returns 6 x 3 matrix containing end points three axis lines pairs rows.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/ellipse3d.axes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw axes of a 3D ellipsoid — ellipse3d.axes","text":"","code":"data(iris) iris3 <- iris[,1:3] cov <- cov(iris3) mu <- colMeans(iris3) col <-c(\"blue\", \"green\", \"red\")[iris$Species] library(rgl) #> #> Attaching package: 'rgl' #> The following objects are masked from 'package:heplots': #> #> arrow3d, bbox3d plot3d(iris3, type=\"s\", size=0.4, col=col, cex=2, box=FALSE, aspect=\"iso\") plot3d( ellipse3d(cov, centre=mu, level=0.68), col=\"gray\", alpha=0.2, add = TRUE) {\"x\":{\"material\":{\"color\":\"#000000\",\"alpha\":1,\"lit\":true,\"ambient\":\"#000000\",\"specular\":\"#FFFFFF\",\"emission\":\"#000000\",\"shininess\":50,\"smooth\":true,\"front\":\"filled\",\"back\":\"filled\",\"size\":3,\"lwd\":1,\"fog\":true,\"point_antialias\":false,\"line_antialias\":false,\"texture\":null,\"textype\":\"rgb\",\"texmipmap\":false,\"texminfilter\":\"linear\",\"texmagfilter\":\"linear\",\"texenvmap\":false,\"depth_mask\":true,\"depth_test\":\"less\",\"isTransparent\":false,\"polygon_offset\":[0,0],\"margin\":\"\",\"floating\":false,\"tag\":\"\",\"blend\":[\"src_alpha\",\"one_minus_src_alpha\"]},\"rootSubscene\":7,\"objects\":{\"44\":{\"id\":44,\"type\":\"spheres\",\"material\":{},\"vertices\":\"0\",\"colors\":\"1\",\"radii\":[[0.0281609129160643]],\"centers\":\"2\",\"ignoreExtent\":false,\"fastTransparency\":true,\"flags\":32771},\"46\":{\"id\":46,\"type\":\"text\",\"material\":{\"lit\":false,\"margin\":0,\"floating\":true,\"edge\":[0,1,1]},\"vertices\":\"3\",\"colors\":\"4\",\"texts\":[[\"Sepal.Length\"]],\"cex\":[[1]],\"adj\":[[0.5,0.5,0.5]],\"centers\":\"5\",\"family\":[[\"sans\"]],\"font\":[[1]],\"ignoreExtent\":true,\"flags\":33808},\"47\":{\"id\":47,\"type\":\"text\",\"material\":{\"lit\":false,\"margin\":1,\"floating\":true,\"edge\":[1,1,1]},\"vertices\":\"6\",\"colors\":\"7\",\"texts\":[[\"Sepal.Width\"]],\"cex\":[[1]],\"adj\":[[0.5,0.5,0.5]],\"centers\":\"8\",\"family\":[[\"sans\"]],\"font\":[[1]],\"ignoreExtent\":true,\"flags\":33808},\"48\":{\"id\":48,\"type\":\"text\",\"material\":{\"lit\":false,\"margin\":2,\"floating\":true,\"edge\":[1,1,1]},\"vertices\":\"9\",\"colors\":\"10\",\"texts\":[[\"Petal.Length\"]],\"cex\":[[1]],\"adj\":[[0.5,0.5,0.5]],\"centers\":\"11\",\"family\":[[\"sans\"]],\"font\":[[1]],\"ignoreExtent\":true,\"flags\":33808},\"49\":{\"id\":49,\"type\":\"quads\",\"material\":{\"alpha\":0.200000002980232,\"isTransparent\":true},\"vertices\":\"12\",\"colors\":\"14\",\"centers\":\"15\",\"normals\":\"13\",\"ignoreExtent\":false,\"flags\":32811},\"11\":{\"id\":11,\"type\":\"light\",\"vertices\":[[0,0,1]],\"colors\":[[1,1,1,1],[1,1,1,1],[1,1,1,1]],\"viewpoint\":true,\"finite\":false},\"15\":{\"id\":15,\"type\":\"background\",\"material\":{\"lit\":false,\"back\":\"lines\"},\"colors\":\"16\",\"centers\":\"17\",\"sphere\":false,\"fogtype\":\"none\",\"fogscale\":1,\"flags\":32768},\"45\":{\"id\":45,\"type\":\"bboxdeco\",\"material\":{\"front\":\"lines\",\"back\":\"lines\"},\"vertices\":\"18\",\"colors\":\"19\",\"axes\":{\"mode\":[\"pretty\",\"pretty\",\"pretty\"],\"step\":[1,0.5,1],\"nticks\":[5,5,5],\"marklen\":[15,15,15],\"expand\":[1.02999997138977,1.02999997138977,1.02999997138977]},\"draw_front\":false,\"flags\":32769},\"7\":{\"id\":7,\"type\":\"subscene\",\"par3d\":{\"antialias\":8,\"FOV\":30,\"ignoreExtent\":false,\"listeners\":7,\"mouseMode\":{\"none\":\"none\",\"left\":\"trackball\",\"right\":\"zoom\",\"middle\":\"fov\",\"wheel\":\"pull\"},\"observer\":[0,0,19.4337673187256],\"modelMatrix\":[[1,0,0,-6.09999990463257],[0,0.965925812721252,-0.258819043636322,-2.11832070350647],[0,0.258819043636322,0.965925812721252,-23.8919372558594],[0,0,0,1]],\"projMatrix\":[[3.73205089569092,0,0,0],[0,3.73205089569092,0,0],[0,0,-3.86370325088501,-70.0564804077148],[0,0,-1,0]],\"skipRedraw\":false,\"userMatrix\":[[1,0,0,0],[0,0.965925812721252,-0.258819043636322,0],[0,0.258819043636322,0.965925812721252,0],[0,0,0,1]],\"userProjection\":[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],\"scale\":[1,1,1],\"viewport\":{\"x\":0,\"y\":0,\"width\":1,\"height\":1},\"zoom\":1,\"bbox\":[4.2718391418457,7.92816114425659,1.97183907032013,4.42816114425659,0.453815817832947,7.06218433380127],\"windowRect\":[60,83,316,339],\"family\":\"sans\",\"font\":1,\"cex\":1,\"useFreeType\":false,\"fontname\":\"TT Arial\",\"maxClipPlanes\":8,\"glVersion\":4.6,\"activeSubscene\":0},\"embeddings\":{\"viewport\":\"replace\",\"projection\":\"replace\",\"model\":\"replace\",\"mouse\":\"replace\"},\"objects\":[15,45,44,46,47,48,49,11],\"subscenes\":[],\"flags\":34107}},\"crosstalk\":{\"key\":[],\"group\":[],\"id\":[],\"options\":[]},\"width\":700,\"height\":700,\"buffer\":{\"accessors\":[{\"bufferView\":0,\"componentType\":5126,\"count\":150,\"type\":\"VEC3\"},{\"bufferView\":1,\"componentType\":5121,\"count\":150,\"type\":\"VEC4\",\"normalized\":true},{\"bufferView\":2,\"componentType\":5126,\"count\":150,\"type\":\"VEC3\"},{\"bufferView\":3,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":4,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":5,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":6,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":7,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":8,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":9,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":10,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":11,\"componentType\":5126,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":12,\"componentType\":5126,\"count\":1536,\"type\":\"VEC3\"},{\"bufferView\":13,\"componentType\":5126,\"count\":1536,\"type\":\"VEC3\"},{\"bufferView\":14,\"componentType\":5126,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":15,\"componentType\":5126,\"count\":384,\"type\":\"VEC3\"},{\"bufferView\":16,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"},{\"bufferView\":17,\"componentType\":5121,\"count\":1,\"type\":\"VEC3\"},{\"bufferView\":18,\"componentType\":5126,\"count\":15,\"type\":\"VEC3\"},{\"bufferView\":19,\"componentType\":5121,\"count\":1,\"type\":\"VEC4\"}],\"bufferViews\":[{\"buffer\":0,\"byteLength\":1800,\"byteOffset\":0},{\"buffer\":0,\"byteLength\":600,\"byteOffset\":1800},{\"buffer\":0,\"byteLength\":1800,\"byteOffset\":2400},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4200},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":4212},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4216},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4228},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":4240},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4244},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4256},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":4268},{\"buffer\":0,\"byteLength\":12,\"byteOffset\":4272},{\"buffer\":0,\"byteLength\":18432,\"byteOffset\":4284},{\"buffer\":0,\"byteLength\":18432,\"byteOffset\":22716},{\"buffer\":0,\"byteLength\":16,\"byteOffset\":41148},{\"buffer\":0,\"byteLength\":4608,\"byteOffset\":41164},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":45772},{\"buffer\":0,\"byteLength\":3,\"byteOffset\":45776},{\"buffer\":0,\"byteLength\":180,\"byteOffset\":45780},{\"buffer\":0,\"byteLength\":4,\"byteOffset\":45960}],\"buffers\":[{\"byteLength\":45964,\"bytes\":\"MzOjQAAAYEAzM7M/zcycQAAAQEAzM7M/ZmaWQM3MTEBmZqY/MzOTQGZmRkAAAMA/AACgQGZm\\nZkAzM7M/zcysQJqZeUCamdk/MzOTQJqZWUAzM7M/AACgQJqZWUAAAMA/zcyMQJqZOUAzM7M/\\nzcycQGZmRkAAAMA/zcysQM3MbEAAAMA/mpmZQJqZWUDNzMw/mpmZQAAAQEAzM7M/mpmJQAAA\\nQEDNzIw/mpm5QAAAgECamZk/Zma2QM3MjEAAAMA/zcysQJqZeUBmZqY/MzOjQAAAYEAzM7M/\\nZma2QDMzc0Camdk/MzOjQDMzc0AAAMA/zcysQJqZWUCamdk/MzOjQM3MbEAAAMA/MzOTQGZm\\nZkAAAIA/MzOjQDMzU0Camdk/mpmZQJqZWUAzM/M/AACgQAAAQEDNzMw/AACgQJqZWUDNzMw/\\nZmamQAAAYEAAAMA/ZmamQJqZWUAzM7M/ZmaWQM3MTEDNzMw/mpmZQGZmRkDNzMw/zcysQJqZ\\nWUAAAMA/ZmamQDMzg0AAAMA/AACwQGZmhkAzM7M/zcycQGZmRkAAAMA/AACgQM3MTECamZk/\\nAACwQAAAYEBmZqY/zcycQGZmZkAzM7M/zcyMQAAAQEBmZqY/MzOjQJqZWUAAAMA/AACgQAAA\\nYEBmZqY/AACQQDMzE0BmZqY/zcyMQM3MTEBmZqY/AACgQAAAYEDNzMw/MzOjQDMzc0AzM/M/\\nmpmZQAAAQEAzM7M/MzOjQDMzc0DNzMw/MzOTQM3MTEAzM7M/mpmpQM3MbEAAAMA/AACgQDMz\\nU0AzM7M/AADgQM3MTEBmZpZAzczMQM3MTEAAAJBAzczcQGZmRkDNzJxAAACwQDMzE0AAAIBA\\nAADQQDMzM0AzM5NAZma2QDMzM0AAAJBAmpnJQDMzU0BmZpZAzcycQJqZGUAzM1NAMzPTQJqZ\\nOUAzM5NAZmamQM3MLECamXlAAACgQAAAAEAAAGBAzcy8QAAAQEBmZoZAAADAQM3MDEAAAIBA\\nMzPDQJqZOUBmZpZAMzOzQJqZOUBmZmZAZmbWQGZmRkDNzIxAMzOzQAAAQEAAAJBAmpm5QM3M\\nLEAzM4NAZmbGQM3MDEAAAJBAMzOzQAAAIECamXlAzcy8QM3MTECamZlAMzPDQDMzM0AAAIBA\\nmpnJQAAAIEDNzJxAMzPDQDMzM0BmZpZAzczMQJqZOUCamYlAMzPTQAAAQEDNzIxAmpnZQDMz\\nM0CamZlAZmbWQAAAQEAAAKBAAADAQJqZOUAAAJBAZma2QGZmJkAAAGBAAACwQJqZGUAzM3NA\\nAACwQJqZGUDNzGxAmpm5QM3MLECamXlAAADAQM3MLEAzM6NAzcysQAAAQEAAAJBAAADAQJqZ\\nWUAAAJBAZmbWQGZmRkBmZpZAmpnJQDMzE0DNzIxAMzOzQAAAQEAzM4NAAACwQAAAIEAAAIBA\\nAACwQGZmJkDNzIxAMzPDQAAAQEAzM5NAmpm5QGZmJkAAAIBAAACgQDMzE0AzM1NAMzOzQM3M\\nLEBmZoZAZma2QAAAQEBmZoZAZma2QJqZOUBmZoZAZmbGQJqZOUCamYlAMzOjQAAAIEAAAEBA\\nZma2QDMzM0AzM4NAmpnJQDMzU0AAAMBAmpm5QM3MLEAzM6NAMzPjQAAAQEDNzLxAmpnJQJqZ\\nOUAzM7NAAADQQAAAQECamblAMzPzQAAAQEAzM9NAzcycQAAAIEAAAJBAmpnpQJqZOUCamclA\\nZmbWQAAAIECamblAZmbmQGZmZkAzM8NAAADQQM3MTEAzM6NAzczMQM3MLECamalAmpnZQAAA\\nQEAAALBAZma2QAAAIEAAAKBAmpm5QDMzM0AzM6NAzczMQM3MTECamalAAADQQAAAQEAAALBA\\nZmb2QDMzc0BmZtZAZmb2QGZmJkDNzNxAAADAQM3MDEAAAKBAzczcQM3MTEBmZrZAMzOzQDMz\\nM0DNzJxAZmb2QDMzM0BmZtZAmpnJQM3MLEDNzJxAZmbWQDMzU0BmZrZAZmbmQM3MTEAAAMBA\\nZmbGQDMzM0CamZlAMzPDQAAAQEDNzJxAzczMQDMzM0AzM7NAZmbmQAAAQECamblAzczsQDMz\\nM0AzM8NAzcz8QDMzc0DNzMxAzczMQDMzM0AzM7NAmpnJQDMzM0AzM6NAMzPDQGZmJkAzM7NA\\nZmb2QAAAQEAzM8NAmpnJQJqZWUAzM7NAzczMQGZmRkAAALBAAADAQAAAQECamZlAzczcQGZm\\nRkDNzKxAZmbWQGZmRkAzM7NAzczcQGZmRkAzM6NAmpm5QM3MLEAzM6NAmpnZQM3MTEDNzLxA\\nZmbWQDMzU0BmZrZAZmbWQAAAQEBmZqZAmpnJQAAAIEAAAKBAAADQQAAAQEBmZqZAZmbGQJqZ\\nWUDNzKxAzcy8QAAAQEAzM6NAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//\\nAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA\\n//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//\\nAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA\\n//8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/\\nAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/\\nAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/\\nAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A//8AAP//AAD//wAA//8A\\nAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/\\n/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8A\\nAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/\\n/wAA//8AAP//AAD//wAA//8AAP//AAD/MzOjQAAAYEAzM7M/zcycQAAAQEAzM7M/ZmaWQM3M\\nTEBmZqY/MzOTQGZmRkAAAMA/AACgQGZmZkAzM7M/zcysQJqZeUCamdk/MzOTQJqZWUAzM7M/\\nAACgQJqZWUAAAMA/zcyMQJqZOUAzM7M/zcycQGZmRkAAAMA/zcysQM3MbEAAAMA/mpmZQJqZ\\nWUDNzMw/mpmZQAAAQEAzM7M/mpmJQAAAQEDNzIw/mpm5QAAAgECamZk/Zma2QM3MjEAAAMA/\\nzcysQJqZeUBmZqY/MzOjQAAAYEAzM7M/Zma2QDMzc0Camdk/MzOjQDMzc0AAAMA/zcysQJqZ\\nWUCamdk/MzOjQM3MbEAAAMA/MzOTQGZmZkAAAIA/MzOjQDMzU0Camdk/mpmZQJqZWUAzM/M/\\nAACgQAAAQEDNzMw/AACgQJqZWUDNzMw/ZmamQAAAYEAAAMA/ZmamQJqZWUAzM7M/ZmaWQM3M\\nTEDNzMw/mpmZQGZmRkDNzMw/zcysQJqZWUAAAMA/ZmamQDMzg0AAAMA/AACwQGZmhkAzM7M/\\nzcycQGZmRkAAAMA/AACgQM3MTECamZk/AACwQAAAYEBmZqY/zcycQGZmZkAzM7M/zcyMQAAA\\nQEBmZqY/MzOjQJqZWUAAAMA/AACgQAAAYEBmZqY/AACQQDMzE0BmZqY/zcyMQM3MTEBmZqY/\\nAACgQAAAYEDNzMw/MzOjQDMzc0AzM/M/mpmZQAAAQEAzM7M/MzOjQDMzc0DNzMw/MzOTQM3M\\nTEAzM7M/mpmpQM3MbEAAAMA/AACgQDMzU0AzM7M/AADgQM3MTEBmZpZAzczMQM3MTEAAAJBA\\nzczcQGZmRkDNzJxAAACwQDMzE0AAAIBAAADQQDMzM0AzM5NAZma2QDMzM0AAAJBAmpnJQDMz\\nU0BmZpZAzcycQJqZGUAzM1NAMzPTQJqZOUAzM5NAZmamQM3MLECamXlAAACgQAAAAEAAAGBA\\nzcy8QAAAQEBmZoZAAADAQM3MDEAAAIBAMzPDQJqZOUBmZpZAMzOzQJqZOUBmZmZAZmbWQGZm\\nRkDNzIxAMzOzQAAAQEAAAJBAmpm5QM3MLEAzM4NAZmbGQM3MDEAAAJBAMzOzQAAAIECamXlA\\nzcy8QM3MTECamZlAMzPDQDMzM0AAAIBAmpnJQAAAIEDNzJxAMzPDQDMzM0BmZpZAzczMQJqZ\\nOUCamYlAMzPTQAAAQEDNzIxAmpnZQDMzM0CamZlAZmbWQAAAQEAAAKBAAADAQJqZOUAAAJBA\\nZma2QGZmJkAAAGBAAACwQJqZGUAzM3NAAACwQJqZGUDNzGxAmpm5QM3MLECamXlAAADAQM3M\\nLEAzM6NAzcysQAAAQEAAAJBAAADAQJqZWUAAAJBAZmbWQGZmRkBmZpZAmpnJQDMzE0DNzIxA\\nMzOzQAAAQEAzM4NAAACwQAAAIEAAAIBAAACwQGZmJkDNzIxAMzPDQAAAQEAzM5NAmpm5QGZm\\nJkAAAIBAAACgQDMzE0AzM1NAMzOzQM3MLEBmZoZAZma2QAAAQEBmZoZAZma2QJqZOUBmZoZA\\nZmbGQJqZOUCamYlAMzOjQAAAIEAAAEBAZma2QDMzM0AzM4NAmpnJQDMzU0AAAMBAmpm5QM3M\\nLEAzM6NAMzPjQAAAQEDNzLxAmpnJQJqZOUAzM7NAAADQQAAAQECamblAMzPzQAAAQEAzM9NA\\n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\\nb0B16yFAy7GZQDaYakDJ5rw/JLabQIA8aEBnuuY/8LSjQOdabUDvJApA+ZSiQH+HcECIBu4/\\nlvy6QK1YaEBz03VAlvy6QIuXb0B3pV5A3C2yQJ8tcEAheT1AyrOyQFrbaECh9VZAlvy6QG4q\\ndEBg40pAC6+xQCdvdED5GClA3C2yQJ8tcEAheT1Alvy6QIuXb0B3pV5A2xKqQOE0c0D+Cw9A\\nJLqqQGqFb0B16yFA3C2yQJ8tcEAheT1AC6+xQCdvdED5GClANFarQDhpaEDRYjtAyrOyQFrb\\naECh9VZA3C2yQJ8tcEAheT1AJLqqQGqFb0B16yFAlvy6QNyJd0AmFCtAJg+yQAHMd0CXBwtA\\nadCxQJ/edkBfoBlAlvy6QCOxdkDEDjpAN2OpQA9YdkAwXNw/Z6SpQPNtdUAMef0/adCxQJ/e\\ndkBfoBlAJg+yQAHMd0CXBwtA2xKqQOE0c0D+Cw9AC6+xQCdvdED5GClAadCxQJ/edkBfoBlA\\nZ6SpQPNtdUAMef0/lvy6QG4qdEBg40pAlvy6QCOxdkDEDjpAadCxQJ/edkBfoBlAC6+xQCdv\\ndED5GClATOeXQEmwbEA7EHQ/YmWYQN4cbECbxJg/5E+hQA5EckATPsk/dZigQL/bckBqP6c/\\ny7GZQDaYakDJ5rw/+ZSiQH+HcECIBu4/5E+hQA5EckATPsk/YmWYQN4cbECbxJg/2xKqQOE0\\nc0D+Cw9AZ6SpQPNtdUAMef0/5E+hQA5EckATPsk/+ZSiQH+HcECIBu4/N2OpQA9YdkAwXNw/\\ndZigQL/bckBqP6c/5E+hQA5EckATPsk/Z6SpQPNtdUAMef0/x6HXQBMSXkAnqa9ACUPaQJd+\\nYEB+7a1APETSQKiXZ0CumZtApXfRQD+VYUBIZ6RAYUfcQHxaYkDG96pAM2TTQPd8akAsN5ZA\\nPETSQKiXZ0CumZtACUPaQJd+YEB+7a1AUubLQBkFb0AIY4ZACD/LQAx/a0D7ZI1APETSQKiX\\nZ0CumZtAM2TTQPd8akAsN5ZA+KLKQHuJZECY3JdApXfRQD+VYUBIZ6RAPETSQKiXZ0CumZtA\\nCD/LQAx/a0D7ZI1A4BHeQBEBZEBG6KBAt2DVQFdTbEB754tASanUQA7pa0BbvZFAy5PdQNyM\\nY0DCwqZA9ZXMQM38cUDSAXFAxVTMQNUicUCqq39ASanUQA7pa0BbvZFAt2DVQFdTbEB754tA\\n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\\nb3npvlgKWD/QtJC+08FZvr0AdT9n1Em+IbL8vTe1ET4ta3u/GlM6v4rGDz/QeMm+b3npvlgK\\nWD/QtJC+8vllO2n8KT9qaj+/PNNLvyzkGj8AAAAAqTccv4DPSj8AAAAAb3npvlgKWD/QtJC+\\nGlM6v4rGDz/QeMm+uqOUPjLoZr/eo6O+NUi0PofYYb+mDaC+U25ePvg/cb/7Q4K+mTwiPniC\\ncr9vjI6+mXLOPlvQXL++fJy+ZemLPu4Hbr8ydXy+U25ePvg/cb/7Q4K+NUi0PofYYb+mDaC+\\nD5ATPpCveL9ZGUG+hcSaPbFKer86oUi+U25ePvg/cb/7Q4K+ZemLPu4Hbr8ydXy+aK92vHXc\\neb/oXl6+mTwiPniCcr9vjI6+U25ePvg/cb/7Q4K+hcSaPbFKer86oUi+nvj6PmNSUr89DZW+\\n4U3IPvFvY79M23W+YuCpPslLab9Ln3m+jhnlPnjLV78q7pi+QD+NPta3cb/0Mzi+Y15SPqcW\\ndr+XEDy+YuCpPslLab9Ln3m+4U3IPvFvY79M23W+D5ATPpCveL9ZGUG+ZemLPu4Hbr8ydXy+\\nYuCpPslLab9Ln3m+Y15SPqcWdr+XEDy+mXLOPlvQXL++fJy+jhnlPnjLV78q7pi+YuCpPslL\\nab9Ln3m+ZemLPu4Hbr8ydXy+A/98vd6Cf78AAAAABVEfvvbhfL8AAAAA1A1pPfAMfr+KvN+9\\ndQ0IPjtSfL86otW9Me2AvjjAd78AAAAATlRivFRDfr/qe+y91A1pPfAMfr+KvN+9BVEfvvbh\\nfL8AAAAAD5ATPpCveL9ZGUG+Y15SPqcWdr+XEDy+1A1pPfAMfr+KvN+9TlRivFRDfr/qe+y9\\nQD+NPta3cb/0Mzi+dQ0IPjtSfL86otW91A1pPfAMfr+KvN+9Y15SPqcWdr+XEDy+LjMBv2EB\\nXb8AAAAA2Kxxvsqadr/H8gK+cZzevbmrfL+aivK9zyC6viZ8br8AAAAAaK92vHXceb/oXl6+\\nhcSaPbFKer86oUi+cZzevbmrfL+aivK92Kxxvsqadr/H8gK+D5ATPpCveL9ZGUG+TlRivFRD\\nfr/qe+y9cZzevbmrfL+aivK9hcSaPbFKer86oUi+Me2AvjjAd78AAAAAzyC6viZ8br8AAAAA\\ncZzevbmrfL+aivK9TlRivFRDfr/qe+y9jXwiP6h2Or/KJIS+8gkcP222Qr8I6GS+xPQHP6tq\\nUb9aJ2K+oWgZP6wsQb9S5oi+4QMTPxuTTL8WETa+O+PwPjV+Xb+RizG+xPQHP6tqUb9aJ2K+\\n8gkcP222Qr8I6GS+JanOPnbtZb+giDK+Wl32PlPrWL8FEWa+xPQHP6tqUb9aJ2K+O+PwPjV+\\nXb+RizG+6YsQP3UnR78pI42+oWgZP6wsQb9S5oi+xPQHP6tqUb9aJ2K+Wl32PlPrWL8FEWa+\\nYEnWPgmAaL8AAAAABNSDPmted78AAAAAIfbJPh2Rab8NNOC9LjQFP9u2WL8fJ+a9l2oKPoWm\\nfb8AAAAAVxecPpgucr9wP+G9IfbJPh2Rab8NNOC9BNSDPmted78AAAAAJanOPnbtZb+giDK+\\nO+PwPjV+Xb+RizG+IfbJPh2Rab8NNOC9VxecPpgucr9wP+G94QMTPxuTTL8WETa+LjQFP9u2\\nWL8fJ+a9IfbJPh2Rab8NNOC9O+PwPjV+Xb+RizG+A/98vd6Cf78AAAAAdQ0IPjtSfL86otW9\\neWRiPngqeL/Tjdq9NBUKPcDaf78AAAAAQD+NPta3cb/0Mzi++fuvPq8hbL+hdDS+eWRiPngq\\neL/Tjdq9dQ0IPjtSfL86otW9JanOPnbtZb+giDK+VxecPpgucr9wP+G9eWRiPngqeL/Tjdq9\\n+fuvPq8hbL+hdDS+l2oKPoWmfb8AAAAANBUKPcDaf78AAAAAeWRiPngqeL/Tjdq9VxecPpgu\\ncr9wP+G9nvj6PmNSUr89DZW+KZYHPxytTL//DJG+Q/3gPuwlXr+3sW2+4U3IPvFvY79M23W+\\n6YsQP3UnR78pI42+Wl32PlPrWL8FEWa+Q/3gPuwlXr+3sW2+KZYHPxytTL//DJG+JanOPnbt\\nZb+giDK++fuvPq8hbL+hdDS+Q/3gPuwlXr+3sW2+Wl32PlPrWL8FEWa+QD+NPta3cb/0Mzi+\\n4U3IPvFvY79M23W+Q/3gPuwlXr+3sW2++fuvPq8hbL+hdDS+VeU7v+9yx70LEyw/v7RKv5Na\\ns73BvBo/feofvwg1D7/Pegs/Wh4Ov3ME+r6EXiw/cnJUv07Zo71GXA0/FWgwv/XwCL9zT/o+\\nfeofvwg1D7/Pegs/v7RKv5Nas73BvBo/lDDXvsldV7+YFq4+HoOhvs76Xr/p0MA+feofvwg1\\nD7/Pegs/FWgwv/XwCL9zT/o+7LscvkykXb9O7vM+Wh4Ov3ME+r6EXiw/feofvwg1D7/Pegs/\\nHoOhvs76Xr/p0MA+Dydhv0nAi73pI/E+w1hNv+ej2r5htdU+6j1Av6gP9r5P4uc+hW9bv5E+\\nl71ofAI/EhoXv/2ZQL/5yJU+pPEAv4X2Tb/zGqE+6j1Av6gP9r5P4uc+w1hNv+ej2r5htdU+\\nlDDXvsldV7+YFq4+FWgwv/XwCL9zT/o+6j1Av6gP9r5P4uc+pPEAv4X2Tb/zGqE+cnJUv07Z\\no71GXA0/hW9bv5E+l71ofAI/6j1Av6gP9r5P4uc+FWgwv/XwCL9zT/o+A/98vd6Cf78AAAAA\\nNBUKPcDaf78AAAAAlchjvp+Zdr/q9hk+lKShvg1NcL/U8g0+l2oKPoWmfb8AAAAAnLcDvv1U\\ner8ABik+lchjvp+Zdr/q9hk+NBUKPcDaf78AAAAAlDDXvsldV7+YFq4+pPEAv4X2Tb/zGqE+\\nlchjvp+Zdr/q9hk+nLcDvv1Uer8ABik+EhoXv/2ZQL/5yJU+lKShvg1NcL/U8g0+lchjvp+Z\\ndr/q9hk+pPEAv4X2Tb/zGqE+YEnWPgmAaL8AAAAA08FZPr0Adb9n1Ek+jUwUPMAUfL98PzI+\\nBNSDPmted78AAAAA7LscvkykXb9O7vM+HoOhvs76Xr/p0MA+jUwUPMAUfL98PzI+08FZPr0A\\ndb9n1Ek+lDDXvsldV7+YFq4+nLcDvv1Uer8ABik+jUwUPMAUfL98PzI+HoOhvs76Xr/p0MA+\\nl2oKPoWmfb8AAAAABNSDPmted78AAAAAjUwUPMAUfL98PzI+nLcDvv1Uer8ABik+fh5vvyC+\\nUb2O9LQ+6YJsv8kSZr6Fnp4+2RFivysZrL5vnqc+zU1sv7LpYb3258I+6yBev4j83r4oaXU+\\nTkpIv9dXEr/QF30+2RFivysZrL5vnqc+6YJsv8kSZr6Fnp4+Aec4v6ImJL9jsIQ+uNtav8UP\\nxL7wL7M+2RFivysZrL5vnqc+TkpIv9dXEr/QF30+tzZpv8w5cr3k+tA+zU1sv7LpYb3258I+\\n2RFivysZrL5vnqc+uNtav8UPxL7wL7M+LjMBv2EBXb8AAAAAzyC6viZ8br8AAAAA5jAdv834\\nRr+2sQw+S4c8vwGgKb8LvAs+Me2AvjjAd78AAAAAvHgFv6dnV7/VcBE+5jAdv834Rr+2sQw+\\nzyC6viZ8br8AAAAAAec4v6ImJL9jsIQ+TkpIv9dXEr/QF30+5jAdv834Rr+2sQw+vHgFv6dn\\nV7/VcBE+6yBev4j83r4oaXU+S4c8vwGgKb8LvAs+5jAdv834Rr+2sQw+TkpIv9dXEr/QF30+\\nA/98vd6Cf78AAAAAlKShvg1NcL/U8g0+TsbYvvElZb+GEQ8+BVEfvvbhfL8AAAAAEhoXv/2Z\\nQL/5yJU+jcUpvxdyMr/DlIs+TsbYvvElZb+GEQ8+lKShvg1NcL/U8g0+Aec4v6ImJL9jsIQ+\\nvHgFv6dnV7/VcBE+TsbYvvElZb+GEQ8+jcUpvxdyMr/DlIs+Me2AvjjAd78AAAAABVEfvvbh\\nfL8AAAAATsbYvvElZb+GEQ8+vHgFv6dnV7/VcBE+Dydhv0nAi73pI/E+qbBlv9mrgb1ev98+\\nIRhVv2J+zr6mmMI+w1hNv+ej2r5htdU+tzZpv8w5cr3k+tA+uNtav8UPxL7wL7M+IRhVv2J+\\nzr6mmMI+qbBlv9mrgb1ev98+Aec4v6ImJL9jsIQ+jcUpvxdyMr/DlIs+IRhVv2J+zr6mmMI+\\nuNtav8UPxL7wL7M+EhoXv/2ZQL/5yJU+w1hNv+ej2r5htdU+IRhVv2J+zr6mmMI+jcUpvxdy\\nMr/DlIs+fh5vvyC+Ub2O9LQ+zU1sv7LpYb3258I+mhJov0NcIz6HGsg+4ANuvywaxj2K5bU+\\ntzZpv8w5cr3k+tA+HUFkv/WVOD7nqdQ+mhJov0NcIz6HGsg+zU1sv7LpYb3258I+1ARcv5uQ\\nnj70P9A+ivRgv9jZkD721MQ+mhJov0NcIz6HGsg+HUFkv/WVOD7nqdQ+vcFov6sjZj6dcbM+\\n4ANuvywaxj2K5bU+mhJov0NcIz6HGsg+ivRgv9jZkD721MQ+Dydhv0nAi73pI/E+9pdcv5vG\\nQz40qPA+ie1gv/TuPT76SeE+qbBlv9mrgb1ev98+FNBRv6fRsz6FyOc+eWlXv9tIqT4dz9o+\\nie1gv/TuPT76SeE+9pdcv5vGQz40qPA+1ARcv5uQnj70P9A+HUFkv/WVOD7nqdQ+ie1gv/Tu\\nPT76SeE+eWlXv9tIqT4dz9o+tzZpv8w5cr3k+tA+qbBlv9mrgb1ev98+ie1gv/TuPT76SeE+\\nHUFkv/WVOD7nqdQ+l246vzCNDD9//tE+VgBBv3u9Bj/BT8k+H/RMv3ab3j5aG9M+4lhGvzM1\\n7D5uUt0+XzFHv7PTAD8OesA+ndBSv+7z0D4Mxck+H/RMv3ab3j5aG9M+VgBBv3u9Bj/BT8k+\\n1ARcv5uQnj70P9A+eWlXv9tIqT4dz9o+H/RMv3ab3j5aG9M+ndBSv+7z0D4Mxck+FNBRv6fR\\nsz6FyOc+4lhGvzM17D5uUt0+H/RMv3ab3j5aG9M+eWlXv9tIqT4dz9o++yZWvxO/4D7I5Kc+\\nKcdgvxzOqz7et64+BKtYv9AZwz47hr4+eu9Nv0Gq8z7QBrY+vcFov6sjZj6dcbM+ivRgv9jZ\\nkD721MQ+BKtYv9AZwz47hr4+KcdgvxzOqz7et64+1ARcv5uQnj70P9A+ndBSv+7z0D4Mxck+\\nBKtYv9AZwz47hr4+ivRgv9jZkD721MQ+XzFHv7PTAD8OesA+eu9Nv0Gq8z7QBrY+BKtYv9AZ\\nwz47hr4+ndBSv+7z0D4Mxck+VeU7v+9yx70LEyw/bo83v4yDOz6oLCw//rVHv14ccj6JSBQ/\\nv7RKv5Nas73BvBo/7u0ov+apzz5M6yE/xcg7vxpBzj6aIgw//rVHv14ccj6JSBQ/bo83v4yD\\nOz6oLCw/cLxEvwN2xj7SUgI/ed5Pv43xbT6mEQk//rVHv14ccj6JSBQ/xcg7vxpBzj6aIgw/\\ncnJUv07Zo71GXA0/v7RKv5Nas73BvBo//rVHv14ccj6JSBQ/ed5Pv43xbT6mEQk/iHoDv9j5\\nLz/ddQM/B1Qcvy9pIj9Sp/I+Rz8tv2fXBj+trQM/ZccWvy4OET/UgxM/ptQpv2h2GT+8SOU+\\nYqQ4v2Me/z46WfY+Rz8tv2fXBj+trQM/B1Qcvy9pIj9Sp/I+cLxEvwN2xj7SUgI/xcg7vxpB\\nzj6aIgw/Rz8tv2fXBj+trQM/YqQ4v2Me/z46WfY+7u0ov+apzz5M6yE/ZccWvy4OET/UgxM/\\nRz8tv2fXBj+trQM/xcg7vxpBzj6aIgw/l246vzCNDD9//tE+4lhGvzM17D5uUt0+fNY/v/r+\\n9T6KSek+Bfkyv46kEj9OGNs+FNBRv6fRsz6FyOc+/0xLv6Nmvj5dGvY+fNY/v/r+9T6KSek+\\n4lhGvzM17D5uUt0+cLxEvwN2xj7SUgI/YqQ4v2Me/z46WfY+fNY/v/r+9T6KSek+/0xLv6Nm\\nvj5dGvY+ptQpv2h2GT+8SOU+Bfkyv46kEj9OGNs+fNY/v/r+9T6KSek+YqQ4v2Me/z46WfY+\\nDydhv0nAi73pI/E+hW9bv5E+l71ofAI/+5NWv3rsWD7YpgA/9pdcv5vGQz40qPA+cnJUv07Z\\no71GXA0/ed5Pv43xbT6mEQk/+5NWv3rsWD7YpgA/hW9bv5E+l71ofAI/cLxEvwN2xj7SUgI/\\n/0xLv6Nmvj5dGvY++5NWv3rsWD7YpgA/ed5Pv43xbT6mEQk/FNBRv6fRsz6FyOc+9pdcv5vG\\nQz40qPA++5NWv3rsWD7YpgA//0xLv6Nmvj5dGvY+uqOUvjLoZj/eo6M+NUi0vofYYT+mDaA+\\n7MPjvp/NUT/q7Lg+n9msvo+AXj/4CLk+mXLOvlvQXD++fJw+Wyz+viT5Sj9t9rQ+7MPjvp/N\\nUT/q7Lg+NUi0vofYYT+mDaA+p9MNv/fuPD/rO8U+NloAv/noRD9K3Mo+7MPjvp/NUT/q7Lg+\\nWyz+viT5Sj9t9rQ+bgXHvrO1Uz+s988+n9msvo+AXj/4CLk+7MPjvp/NUT/q7Lg+NloAv/no\\nRD9K3Mo+nvj6vmNSUj89DZU+ubwRvxGdQD+pqqk+o3MIv2IERj/Dka8+jhnlvnjLVz8q7pg+\\nLiohv20KMD9qKrk+YrkXv/aJNj/ZyL8+o3MIv2IERj/Dka8+ubwRvxGdQD+pqqk+p9MNv/fu\\nPD/rO8U+Wyz+viT5Sj9t9rQ+o3MIv2IERj/Dka8+YrkXv/aJNj/ZyL8+mXLOvlvQXD++fJw+\\njhnlvnjLVz8q7pg+o3MIv2IERj/Dka8+Wyz+viT5Sj9t9rQ+l246vzCNDD9//tE+Bfkyv46k\\nEj9OGNs+Piglv1qFJj8AO80+GyMuv0hnHz+pBMY+ptQpv2h2GT+8SOU+fvEav+QJLj+JB9Q+\\nPiglv1qFJj8AO80+Bfkyv46kEj9OGNs+p9MNv/fuPD/rO8U+YrkXv/aJNj/ZyL8+Piglv1qF\\nJj8AO80+fvEav+QJLj+JB9Q+Liohv20KMD9qKrk+GyMuv0hnHz+pBMY+Piglv1qFJj8AO80+\\nYrkXv/aJNj/ZyL8+iHoDv9j5Lz/ddQM/EfjjvrdkRT+lD+k+PiINvybANj9nFd0+B1Qcvy9p\\nIj9Sp/I+bgXHvrO1Uz+s988+NloAv/noRD9K3Mo+PiINvybANj9nFd0+EfjjvrdkRT+lD+k+\\np9MNv/fuPD/rO8U+fvEav+QJLj+JB9Q+PiINvybANj9nFd0+NloAv/noRD9K3Mo+ptQpv2h2\\nGT+8SOU+B1Qcvy9pIj9Sp/I+PiINvybANj9nFd0+fvEav+QJLj+JB9Q+jXwiv6h2Oj/KJIQ+\\nG7gwvzkGKz+8OY4+ZhYqvz0ULz+bUZo+oWgZv6wsQT9S5og+UNw9v5wiGj8faZc+DSU2v+nq\\nHz8MwKQ+ZhYqvz0ULz+bUZo+G7gwvzkGKz+8OY4+0swvv5/4JD8ROKw+tVAjvzEPND+WiKA+\\nZhYqvz0ULz+bUZo+DSU2v+nqHz8MwKQ+6YsQv3UnRz8pI40+oWgZv6wsQT9S5og+ZhYqvz0U\\nLz+bUZo+tVAjvzEPND+WiKA++yZWvxO/4D7I5Kc+eu9Nv0Gq8z7QBrY+8K5BvzM8Dz+SR60+\\nvxJKv1xYBz8XzZ8+XzFHv7PTAD8OesA+MtY6v152FT+jFrY+8K5BvzM8Dz+SR60+eu9Nv0Gq\\n8z7QBrY+0swvv5/4JD8ROKw+DSU2v+nqHz8MwKQ+8K5BvzM8Dz+SR60+MtY6v152FT+jFrY+\\nUNw9v5wiGj8faZc+vxJKv1xYBz8XzZ8+8K5BvzM8Dz+SR60+DSU2v+nqHz8MwKQ+l246vzCN\\nDD9//tE+GyMuv0hnHz+pBMY+ugk1v7AXGj+66b0+VgBBv3u9Bj/BT8k+Liohv20KMD9qKrk+\\nUHYpv3DeKT8KebI+ugk1v7AXGj+66b0+GyMuv0hnHz+pBMY+0swvv5/4JD8ROKw+MtY6v152\\nFT+jFrY+ugk1v7AXGj+66b0+UHYpv3DeKT8KebI+XzFHv7PTAD8OesA+VgBBv3u9Bj/BT8k+\\nugk1v7AXGj+66b0+MtY6v152FT+jFrY+nvj6vmNSUj89DZU+KZYHvxytTD//DJE+LlIbv04J\\nOj9g8qQ+ubwRvxGdQD+pqqk+6YsQv3UnRz8pI40+tVAjvzEPND+WiKA+LlIbv04JOj9g8qQ+\\nKZYHvxytTD//DJE+0swvv5/4JD8ROKw+UHYpv3DeKT8KebI+LlIbv04JOj9g8qQ+tVAjvzEP\\nND+WiKA+Liohv20KMD9qKrk+ubwRvxGdQD+pqqk+LlIbv04JOj9g8qQ+UHYpv3DeKT8KebI+\\nv74+P7++Pj+/vj4/zcxMPgCRoECbUStAyYgBQHbsnkDO1zJAJN/YP7rFpkDgCTFA9GIDQLSR\\np0AUvChAMqsYQEKNnEAa+EJAkuyTP/47pUDYoEFAY+vDPwjnpUAu4DhANujjPwJ/nUAxgzpA\\ntzS0Py52tkCxfz9A0l8aQChetkCtYDZAHsQoQK7NrUDThDdApDgLQMu5rUBfe0BA/Bn5P7S2\\ntkBvYSRAetBPQIC8rkDvWiZAHU8yQHkqrkDMNi9AXjscQIV1tkA4fS1ALxY6QACRoEBYj2JA\\nT1leP7SRp0AbaWNAZD+UP7rFpkDNTVtASp6VP3bsnkA/cVtArlpYP7S2tkAKBGRA+UL1P4R1\\ntkBl+FpAuGj6P3oqrkBaTFtAhHDCP3+8rkASBGRAhYm/Py52tkDC9UhAl7UNQMy5rUCsI0pA\\nCD/fP67NrUBNFVNAXKXMPyhetkC6GlJAgaYDQEKNnEBC50tAkgJ4PwJ/nUBTIFRATUNfPwjn\\npUChrlNAviOcP/47pUBNGEtANJOqPyxo1UAYBVxAA/17QLYM10DkflRAxFmDQHMzz0DTTFZA\\nqhNhQHhnzkCfml5A6HdaQOtr2UCZXkRAph+QQC+90EDatUVADv12QCQS0ECFdk5A3c1qQCp6\\n2ECC00xALYWJQP6Cv0AC10dA2lgvQASbv0AH9lBAX/wlQIAryEDg0U9A2FJIQGE/yEBU20ZA\\nfzNSQHhCv0BE9WJAG2UaQK08x0DE+2BAmtU6QLPOx0DnH1hAmoZAQKiDv0B72VlAj9weQCxo\\n1UBaxyRAvPeiQHhnzkCX7SNAtIGUQHIzz0DmCCxAvNOMQLcM10B05StAN4aeQHhCv0CnUiNA\\nGZRvQKiDv0BOXixAYr5bQLLOx0BYCixAtYl7QK08x0CgUiNA+q+GQP6Cv0DxYD5AFQM8QGE/\\nyEAHMz1A+SBfQH8ryEBnQTRAzzhtQASbv0D5OzVA/BlLQOtr2UBxbztAeRqWQCp62EBgNjNA\\n8amaQCUS0EASqDNADFiHQC690EBmPjxAktSBQACRoECleWhA6cZhP3bsnkDHLWxAwA1iP7rF\\npkAtJ3BA6aibP7SRp0DYG2tAdHqWP0KNnEA+e29AhFCGP/47pUB0OXRAQH62PwjnpUCZ23JA\\nZiylPwJ/nUAoYG5AvHluPy52tkBoOXdAkWkUQChetkBWinVA2cgIQK7NrUAn/HRAPnjWP8u5\\nrUApnHZA7yHsP7S2tkBNPmxATqX3P4C8rkDmPWxAu+vBP3kqrkDE1XFAVPjIP4V1tkCwF3JA\\n+40AQACRoECleWhAH2UKQLSRp0DYG2tADkkiQLrFpkAsJ3BA6YcMQHbsnkDHLWxAZnzpP7S2\\ntkBMPmxA6zlaQIR1tkCwF3JAvAZEQHoqrkDF1XFAY+IlQH+8rkDmPWxAQm88QC52tkBoOXdA\\nuHIiQMy5rUAonHZApWQEQK7NrUAn/HRAeCAUQChetkBWinVA3+oxQEKNnEA+e29AjtKgPwJ/\\nnUAoYG5AADzDPwjnpUCY23JAabX0P/47pUB0OXRArpTSPyxo1UBk72FA5mWnQLYM10BtO2VA\\niK2iQHMzz0AxJmtAOGaRQHhnzkBbTWZAolCZQOtr2UCV8mdA+FOZQC+90EAC125A5X6FQCQS\\n0EB9o21AWYuLQCp62EBYE2dAxGueQP6Cv0CoGnZA/BVEQASbv0CkZXRAvUBUQIAryEC6uHFA\\noiB2QGE/yEDQU3NAoPhmQHhCv0CFL2tAi/15QK08x0CZNWlADcCLQLPOx0BRqW5AXpiCQKiD\\nv0DF+HBA8K5lQCxo1UBk72FAath8QHhnzkBcTWZAcZVbQHIzz0AxJmtA+RhkQLcM10BtO2VA\\nJpCEQHhCv0CFL2tARpYbQKiDv0DG+HBALjYiQLLOx0BQqW5AgspDQK08x0CZNWlAtAY8QP6C\\nv0CoGnZA0ww2QGE/yEDQU3NA8qRYQH8ryEC6uHFASjxNQASbv0CjZXRAuB4rQOtr2UCU8mdA\\ndrOSQCp62EBXE2dA+2uLQCUS0EB9o21AMFJvQC690EAB125AlPJ8QKoQ20AUFCRA5t6xQM5p\\n3kAj/CpAV+uxQN4k40AAkSlA1lrBQM5p3kBY8iFAQqy+QKNK4UAUdjpABNWqQDzb5kCcgTlA\\nyBW8QNWg5UAG/TBAph/AQHtY4EAQPTJAbGOvQPHD60DD5jhAuJDSQMMk6kAo+C9AWZfVQDCZ\\n6EDoPTBAHgbMQMMk6kAIATlAutfIQKRK4UBbHB9A7GzRQHtY4EAQNyBAF9LIQNWg5UB5WShA\\nTFDMQDzb5kDAfydAmX7VQKoQ20DQUVtAq+WMQM5p3kBfn1xAgmaXQN4k40Dt1FNA7hClQM5p\\n3kCTlVNA5L6WQKNK4UD3vl5AbNWmQDzb5kDs+lRAsA23QNWg5UAHb1RAvs6uQHtY4EAz4F1A\\n6oyfQPHD60DUXEJAmjvMQMMk6kBUqUJA/WDCQDCZ6EBgzktAIpO5QMMk6kA1sktAigjDQKRK\\n4UA9ZUNAM9qkQHtY4EAz2ktAqT6eQNWg5UB5y0tAiC6uQDzb5kAQ+UJAvL+1QKoQ20DQUVtA\\nXt+1QM5p3kCUlVNAzkTCQN4k40Dt1FNAqWrEQM5p3kBfn1xA5IO1QKNK4UA9ZUNA1A3UQDzb\\n5kAQ+UJAHHzXQNWg5UB5y0tApeHOQHtY4EAy2ktAW/vLQPHD60DTXEJALkDTQMMk6kA0sktA\\nYDLKQDCZ6EBhzktATwXOQMMk6kBUqUJAAPLWQKRK4UD2vl5A7nWtQHtY4EAz4F1AsoyyQNWg\\n5UAHb1RA/7DCQDzb5kDs+lRAShO+QKoQ20ATFCRAmNjaQM5p3kBY8iFAo8ncQN4k40AAkSlA\\nkLTgQM5p3kAi/CpAQnHdQKNK4UBbHB9AbQ3YQDzb5kDAfydANITcQNWg5UB5WShAjDLgQHtY\\n4EAQNyBA39HbQPHD60DE5jhATJXZQMMk6kAHATlAvGjdQDCZ6EDnPTBASnjgQMMk6kAo+C9A\\nMMHcQKRK4UAVdjpApwjaQHtY4EAQPTJAHyDdQNWg5UAG/TBAwtLgQDzb5kCcgTlAKdLdQILo\\nmkDjBCxA047qP16Pl0BUtypAvPzrP0/UkkDGgTNAp2GwP16Pl0AgwTNAEfm4P4mulEC8lyhA\\nSBoGQPAdj0DGWzJAHr/JP1hYkECs5zJAT0i3P7GglUCAdilAgtn3Pzs1ikDf+URAIhdqP2rU\\ni0BerURAmIhMP/1fjUBSiDtADveJP2rUi0B+pDtAxkKZP4mulEB28UNA7qljP7KglUCBfDtA\\n3h6SP1hYkEA6iztAt4WGP/Adj0CiXURArzdIP4LomkDjBCxAzjpHQF6Pl0AgwTNAXogzQE/U\\nkkDGgTNASeQWQF6Pl0BUtypAITkyQImulEB28UNAv1EXQPAdj0CjXURAWg3rP1hYkEA6iztA\\nFakEQLGglUCAfDtA1IgkQDs1ikDf+URA4B2RP2rUi0B9pDtAIuq1P/1fjUBSiDtAvb/bP2rU\\ni0BerURAVoi4P4mulEC8lyhATFsTQLKglUCAdilAUuwhQFhYkECs5zJAqGgDQPAdj0DGWzJA\\njNXlP4LomkCgQmNAspD6P16Pl0BcZGVARFvHP0/UkkCzxV1A9aC8P16Pl0CQWlxA7l76P4mu\\nlEBYOmhAPLF4P/Adj0D01l9AzCNYP1hYkEA6/V5AGsuQP7GglUCjH2dA8cOePzs1ikDvb05A\\n05JvP2rUi0CrVU5AYq2eP/1fjUDMGFdA0vORP2rUi0CLXldAzl1XP4mulECf4ExAHFwLQLKg\\nlUCiGVVASz8CQFhYkECsWVZAs43BP/Adj0AW1U1ALLXRP4LomkCgQmNA0FMtP16Pl0CRWlxA\\ni44YP0/UkkCzxV1AKej8Pl6Pl0BcZGVAfMsdP4mulECe4ExAXNMzP/Adj0AX1U1AUocVP1hY\\nkECsWVZA+wT7PrGglUCiGVVAmRcbPzs1ikDwb05ANW43P2rUi0CLXldAFw8eP/1fjUDLGFdA\\nQlYAP2rUi0CqVU5ArtIYP4mulEBYOmhAKa1DP7KglUCkH2dAnIklP1hYkEA6/V5ALoQCP/Ad\\nj0Dz1l9A7/YfPwCRoEBPZyVAVzoSQLSRp0BYCSFA4GQuQLrFpkCCMBxAtjk+QHbsnkBGGyJA\\nFasbQLS2tkAuJxxAmghnQIR1tkDuXRZANld7QHoqrkBirRhAatVbQH+8rkAaIR5ADIZJQC52\\ntkALPBFAFXiOQMy5rUDiAhRAhg16QK7NrUD4nRVAg+VqQChetkAQ8RJAtGKGQEKNnEAeZB9A\\nNl4uQAJ/nUBcQyBAnS4kQAjnpUA2sxlAc+9JQP47pUCyfxhAWwhWQCxo1UAO3R5Ag1CrQLYM\\n10DsKBtA+SO2QHMzz0CHLxdAHj+qQHhnzkDaOhxAi16fQOtr2UB22xdAb07IQC+90EA/HRNA\\n5927QCQS0EAbexRAuFWzQCp62ECL9hhAErS/QP6Cv0BLHRBAt0mfQASbv0BdzBFAo42XQIAr\\nyECMWhJA2HKmQGE/yECKuhBAwFCuQHhCv0BmGBtAHWaDQK08x0DMGBtAckuSQLPOx0DvgBVA\\n4JGdQKiDv0ADPxVAtH+OQCxo1UAO3R5ANUrUQHhnzkDaOhxAdOTKQHIzz0CHLxdA2JjJQLcM\\n10DsKBtAWkHUQHhCv0BmGBtAv5myQKiDv0ADPxVAFTywQLLOx0DvgBVA/kS+QK08x0DMGBtA\\nJAjAQP6Cv0BLHRBASk6mQGE/yECKuhBAl3q1QH8ryECMWhJABOW6QASbv0BdzBFAph6sQOtr\\n2UB22xdA8e7OQCp62ECK9hhA27PSQCUS0EAbexRA+DfHQC690EA/HRNAguPCQACRoEBPZyVA\\nvC1kQHbsnkBGGyJA2eVXQLrFpkCCMBxALO18QLSRp0BYCSFAWriCQEKNnEAfZB9AO587QP47\\npUCxfxhAkhNkQAjnpUA2sxlA9LNxQAJ/nUBbQyBALi5KQC52tkALPBFAqXyVQChetkAQ8RJA\\ntvOaQK7NrUD4nRVA7eSJQMu5rUDiAhRAmTCEQLS2tkAuJxxA77eiQIC8rkAaIR5AuH+SQHkq\\nrkBirRhA0p2OQIV1tkDtXRZA+2efQACRoECbUStAIwllQLSRp0AUvChAHkeDQLrFpkDgCTFA\\nevJ/QHbsnkDO1zJAnlJaQLS2tkBvYSRAhVCjQIR1tkA4fS1AyxShQHoqrkDMNi9AxT+QQH+8\\nrkDvWiZARRiTQC52tkCxfz9ApdaYQMy5rUBfe0BAUmmHQK7NrUDThDdApVmMQChetkCtYDZA\\n4oSdQEKNnEAZ+EJA2MZAQAJ/nUAxgzpAyvtNQAjnpUAu4DhASDh2QP47pUDZoEFAGAlqQCxo\\n1UBbxyRA6LfUQLYM10B05StAvHfVQHMzz0DmCCxAgBvLQHhnzkCX7SNAOXPLQOtr2UBwbztA\\nwYLRQC+90EBmPjxARt7FQCQS0EASqDNAI3rJQCp62EBgNjNAqJrUQP6Cv0DxYD5AR6ipQASb\\nv0D6OzVA0q+uQIAryEBmQTRAvFm9QGE/yEAHMz1AUbO4QHhCv0CoUiNAVDKzQK08x0CgUiNA\\nsaDAQLPOx0BYCixA8ea/QKiDv0BNXixA5eixQCxo1UAYBVxArr6vQHhnzkCfml5AeS2kQHIz\\nz0DSTFZAmNGuQLcM10DlflRASku6QHhCv0BE9WJA1pqIQKiDv0B72VlA+neTQLLOx0DnH1hA\\nZGWiQK08x0DE+2BAhFuXQP6Cv0AC10dAKlOjQGE/yEBU20ZAkzyyQH8ryEDg0U9AwOaqQASb\\nv0AH9lBAAyGcQOtr2UCZXkRA7ofLQCp62ECC00xA5XXDQCUS0ECFdk5ABYm3QC690EDatUVA\\nOoi/QACRoEBYj2JArRYbQHbsnkA/cVtAtvkjQLrFpkDOTVtArF5HQLSRp0AbaWNAvgI4QEKN\\nnEBC50tANNE0QP47pUBMGEtAAV1dQAjnpUChrlNADFZSQAJ/nUBTIFRAQrIrQC52tkDC9UhA\\niIGSQChetkC6GlJAFPaKQK7NrUBMFVNAVc1zQMu5rUCsI0pAlvKAQLS2tkALBGRADHJxQIC8\\nrkASBGRAMaZTQHkqrkBaTFtAcHxlQIV1tkBk+FpA4aOCQAEBAQEAAAAAAACgQAAAwH8AAMB/\\nAADAQAAAwH8AAMB/AADgQAAAwH8AAMB/AADAfwAAAEAAAMB/AADAfwAAIEAAAMB/AADAfwAA\\nQEAAAMB/AADAfwAAYEAAAMB/AADAfwAAgEAAAMB/AADAfwAAwH8AAIA/AADAfwAAwH8AAABA\\nAADAfwAAwH8AAEBAAADAfwAAwH8AAIBAAADAfwAAwH8AAKBAAADAfwAAwH8AAMBAAADAfwAA\\nwH8AAOBAAAAAAQ==\"}]},\"context\":{\"shiny\":false,\"rmarkdown\":null},\"vertexShader\":\"#line 2 1\\n// File 1 is the vertex shader\\n#ifdef GL_ES\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nprecision highp float;\\n#else\\nprecision mediump float;\\n#endif\\n#endif\\n\\nattribute vec3 aPos;\\nattribute vec4 aCol;\\nuniform mat4 mvMatrix;\\nuniform mat4 prMatrix;\\nvarying vec4 vCol;\\nvarying vec4 vPosition;\\n\\n#ifdef NEEDS_VNORMAL\\nattribute vec3 aNorm;\\nuniform mat4 normMatrix;\\nvarying vec4 vNormal;\\n#endif\\n\\n#if defined(HAS_TEXTURE) || defined (IS_TEXT)\\nattribute vec2 aTexcoord;\\nvarying vec2 vTexcoord;\\n#endif\\n\\n#ifdef FIXED_SIZE\\nuniform vec3 textScale;\\n#endif\\n\\n#ifdef FIXED_QUADS\\nattribute vec3 aOfs;\\n#endif\\n\\n#ifdef IS_TWOSIDED\\n#ifdef HAS_NORMALS\\nvarying float normz;\\nuniform mat4 invPrMatrix;\\n#else\\nattribute vec3 aPos1;\\nattribute vec3 aPos2;\\nvarying float normz;\\n#endif\\n#endif // IS_TWOSIDED\\n\\n#ifdef FAT_LINES\\nattribute vec3 aNext;\\nattribute vec2 aPoint;\\nvarying vec2 vPoint;\\nvarying float vLength;\\nuniform float uAspect;\\nuniform float uLwd;\\n#endif\\n\\n\\nvoid main(void) {\\n \\n#ifndef IS_BRUSH\\n#if defined(NCLIPPLANES) || !defined(FIXED_QUADS) || defined(HAS_FOG)\\n vPosition = mvMatrix * vec4(aPos, 1.);\\n#endif\\n \\n#ifndef FIXED_QUADS\\n gl_Position = prMatrix * vPosition;\\n#endif\\n#endif // !IS_BRUSH\\n \\n#ifdef IS_POINTS\\n gl_PointSize = POINTSIZE;\\n#endif\\n \\n vCol = aCol;\\n \\n#ifdef NEEDS_VNORMAL\\n vNormal = normMatrix * vec4(-aNorm, dot(aNorm, aPos));\\n#endif\\n \\n#ifdef IS_TWOSIDED\\n#ifdef HAS_NORMALS\\n /* normz should be calculated *after* projection */\\n normz = (invPrMatrix*vNormal).z;\\n#else\\n vec4 pos1 = prMatrix*(mvMatrix*vec4(aPos1, 1.));\\n pos1 = pos1/pos1.w - gl_Position/gl_Position.w;\\n vec4 pos2 = prMatrix*(mvMatrix*vec4(aPos2, 1.));\\n pos2 = pos2/pos2.w - gl_Position/gl_Position.w;\\n normz = pos1.x*pos2.y - pos1.y*pos2.x;\\n#endif\\n#endif // IS_TWOSIDED\\n \\n#ifdef NEEDS_VNORMAL\\n vNormal = vec4(normalize(vNormal.xyz/vNormal.w), 1);\\n#endif\\n \\n#if defined(HAS_TEXTURE) || defined(IS_TEXT)\\n vTexcoord = aTexcoord;\\n#endif\\n \\n#if defined(FIXED_SIZE) && !defined(ROTATING)\\n vec4 pos = prMatrix * mvMatrix * vec4(aPos, 1.);\\n pos = pos/pos.w;\\n gl_Position = pos + vec4(aOfs*textScale, 0.);\\n#endif\\n \\n#if defined(IS_SPRITES) && !defined(FIXED_SIZE)\\n vec4 pos = mvMatrix * vec4(aPos, 1.);\\n pos = pos/pos.w + vec4(aOfs, 0.);\\n gl_Position = prMatrix*pos;\\n#endif\\n \\n#ifdef FAT_LINES\\n /* This code was inspired by Matt Deslauriers' code in \\n https://mattdesl.svbtle.com/drawing-lines-is-hard */\\n vec2 aspectVec = vec2(uAspect, 1.0);\\n mat4 projViewModel = prMatrix * mvMatrix;\\n vec4 currentProjected = projViewModel * vec4(aPos, 1.0);\\n currentProjected = currentProjected/currentProjected.w;\\n vec4 nextProjected = projViewModel * vec4(aNext, 1.0);\\n vec2 currentScreen = currentProjected.xy * aspectVec;\\n vec2 nextScreen = (nextProjected.xy / nextProjected.w) * aspectVec;\\n float len = uLwd;\\n vec2 dir = vec2(1.0, 0.0);\\n vPoint = aPoint;\\n vLength = length(nextScreen - currentScreen)/2.0;\\n vLength = vLength/(vLength + len);\\n if (vLength > 0.0) {\\n dir = normalize(nextScreen - currentScreen);\\n }\\n vec2 normal = vec2(-dir.y, dir.x);\\n dir.x /= uAspect;\\n normal.x /= uAspect;\\n vec4 offset = vec4(len*(normal*aPoint.x*aPoint.y - dir), 0.0, 0.0);\\n gl_Position = currentProjected + offset;\\n#endif\\n \\n#ifdef IS_BRUSH\\n gl_Position = vec4(aPos, 1.);\\n#endif\\n}\",\"fragmentShader\":\"#line 2 2\\n// File 2 is the fragment shader\\n#ifdef GL_ES\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nprecision highp float;\\n#else\\nprecision mediump float;\\n#endif\\n#endif\\nvarying vec4 vCol; // carries alpha\\nvarying vec4 vPosition;\\n#if defined(HAS_TEXTURE) || defined (IS_TEXT)\\nvarying vec2 vTexcoord;\\nuniform sampler2D uSampler;\\n#endif\\n\\n#ifdef HAS_FOG\\nuniform int uFogMode;\\nuniform vec3 uFogColor;\\nuniform vec4 uFogParms;\\n#endif\\n\\n#if defined(IS_LIT) && !defined(FIXED_QUADS)\\nvarying vec4 vNormal;\\n#endif\\n\\n#if NCLIPPLANES > 0\\nuniform vec4 vClipplane[NCLIPPLANES];\\n#endif\\n\\n#if NLIGHTS > 0\\nuniform mat4 mvMatrix;\\n#endif\\n\\n#ifdef IS_LIT\\nuniform vec3 emission;\\nuniform float shininess;\\n#if NLIGHTS > 0\\nuniform vec3 ambient[NLIGHTS];\\nuniform vec3 specular[NLIGHTS]; // light*material\\nuniform vec3 diffuse[NLIGHTS];\\nuniform vec3 lightDir[NLIGHTS];\\nuniform bool viewpoint[NLIGHTS];\\nuniform bool finite[NLIGHTS];\\n#endif\\n#endif // IS_LIT\\n\\n#ifdef IS_TWOSIDED\\nuniform bool front;\\nvarying float normz;\\n#endif\\n\\n#ifdef FAT_LINES\\nvarying vec2 vPoint;\\nvarying float vLength;\\n#endif\\n\\nvoid main(void) {\\n vec4 fragColor;\\n#ifdef FAT_LINES\\n vec2 point = vPoint;\\n bool neg = point.y < 0.0;\\n point.y = neg ? (point.y + vLength)/(1.0 - vLength) :\\n -(point.y - vLength)/(1.0 - vLength);\\n#if defined(IS_TRANSPARENT) && defined(IS_LINESTRIP)\\n if (neg && length(point) <= 1.0) discard;\\n#endif\\n point.y = min(point.y, 0.0);\\n if (length(point) > 1.0) discard;\\n#endif // FAT_LINES\\n \\n#ifdef ROUND_POINTS\\n vec2 coord = gl_PointCoord - vec2(0.5);\\n if (length(coord) > 0.5) discard;\\n#endif\\n \\n#if NCLIPPLANES > 0\\n for (int i = 0; i < NCLIPPLANES; i++)\\n if (dot(vPosition, vClipplane[i]) < 0.0) discard;\\n#endif\\n \\n#ifdef FIXED_QUADS\\n vec3 n = vec3(0., 0., 1.);\\n#elif defined(IS_LIT)\\n vec3 n = normalize(vNormal.xyz);\\n#endif\\n \\n#ifdef IS_TWOSIDED\\n if ((normz <= 0.) != front) discard;\\n#endif\\n \\n#ifdef IS_LIT\\n vec3 eye = normalize(-vPosition.xyz/vPosition.w);\\n vec3 lightdir;\\n vec4 colDiff;\\n vec3 halfVec;\\n vec4 lighteffect = vec4(emission, 0.);\\n vec3 col;\\n float nDotL;\\n#ifdef FIXED_QUADS\\n n = -faceforward(n, n, eye);\\n#endif\\n \\n#if NLIGHTS > 0\\n for (int i=0;i 0) {\\n fogF = (uFogParms.y - vPosition.z/vPosition.w)/(uFogParms.y - uFogParms.x);\\n if (uFogMode > 1)\\n fogF = mix(uFogParms.w, 1.0, fogF);\\n fogF = fogF*uFogParms.z;\\n if (uFogMode == 2)\\n fogF = 1.0 - exp(-fogF);\\n // Docs are wrong: use (density*c)^2, not density*c^2\\n // https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/src/mesa/swrast/s_fog.c#L58\\n else if (uFogMode == 3)\\n fogF = 1.0 - exp(-fogF*fogF);\\n fogF = clamp(fogF, 0.0, 1.0);\\n gl_FragColor = vec4(mix(fragColor.rgb, uFogColor, fogF), fragColor.a);\\n } else gl_FragColor = fragColor;\\n#else\\n gl_FragColor = fragColor;\\n#endif // HAS_FOG\\n \\n}\",\"players\":[],\"webGLoptions\":{\"preserveDrawingBuffer\":true}},\"evals\":[],\"jsHooks\":[]} axes <- ellipse3d.axes(cov, centre=mu, level=0.68, color=\"gray\", lwd=2)"},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"experimental function designed separate internal code link{heplot3d}.","code":""},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"","code":"Ellipsoid(x, ...) # S3 method for data.frame Ellipsoid(x, which = 1:3, method = c(\"classical\", \"mve\", \"mcd\"), ...) # S3 method for default Ellipsoid( x, center = c(0, 0, 0), which = 1:3, radius = 1, df = Inf, label = \"\", cex.label = 1.5, col = \"pink\", lwd = 1, segments = 40, shade = TRUE, alpha = 0.1, wire = TRUE, verbose = FALSE, warn.rank = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"x object. default method parameter x square positive definite matrix least 3x3 size. treated correlation covariance multivariate normal distribution. data.frame method, numeric data frame least 3 columns. ... arguments parameter selects variables object plotted. default first 3. method covariance method used: classical product-moment (\"classical\"), minimum volume ellipsoid (\"mve\"), minimum covariance determinant (\"mcd\" center center ellipsoid, vector length 3, typically mean vector data radius size ellipsoid df degrees freedom associated covariance matrix, used calculate appropriate F statistic label label ellipsoid cex.label text size label col color ellipsoid lwd line wire-frame version segments number segments composing ellipsoid; defaults 40. shade logical; ellipsoid smoothly shaded? alpha transparency shaded ellipsoid wire logical; ellipsoid drawn wire frame? verbose logical; debugging warn.rank logical; warn ellipsoid less rank 3?","code":""},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"returns bounding box ellipsoid invisibly; otherwise used side effect drawing ellipsoid","code":""},{"path":"https://friendly.github.io/heplots/reference/Ellipsoid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw an Ellipsoid in an rgl Scene — Ellipsoid","text":"","code":"# none yet"},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":null,"dir":"Reference","previous_headings":"","what":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"Calculates partial eta-squared linear models multivariate analogs eta-squared (R^2), indicating partial association term multivariate linear model. different analog four standard multivariate test statistics: Pillai's trace, Hotelling-Lawley trace, Wilks' Lambda Roy's maximum root test.","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"","code":"etasq(x, ...) # S3 method for mlm etasq(x, ...) # S3 method for Anova.mlm etasq(x, anova = FALSE, ...) # S3 method for lm etasq(x, anova = FALSE, partial = TRUE, ...)"},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"x lm, mlm Anova.mlm object ... arguments passed Anova. anova logical, indicating whether result also contain test statistics produced Anova(). partial logical, indicating whether calculate partial classical eta^2.","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"anova=FALSE, one-column data frame containing eta-squared values term model. anova=TRUE, 5-column (lm) 7-column (mlm) data frame containing eta-squared values test statistics produced print.Anova() term model.","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"univariate linear models, classical \\(\\eta^2\\) = SSH / SST partial \\(\\eta^2\\) = SSH / (SSH + SSE). identical one-way designs. Partial eta-squared describes proportion total variation attributable given factor, partialing (excluding) factors total nonerror variation. commonly used measures effect size measures (non-linear) strength association ANOVA models. multivariate tests based \\(s=min(p, df_h)\\) latent roots \\(H E^{-1}\\). analogous multivariate partial \\(\\eta^2\\) measures calculated : Pillai's trace (V) \\(\\eta^2 = V/s\\) Hotelling-Lawley trace (T) \\(\\eta^2 = T/(T+s)\\) Wilks' Lambda (L) \\(\\eta^2 = L^{1/s}\\) Roy's maximum root (R) \\(\\eta^2 = R/(R+1)\\)","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"Muller, K. E. Peterson, B. L. (1984). Practical methods computing power testing Multivariate General Linear Hypothesis Computational Statistics Data Analysis, 2, 143-158. Muller, K. E. LaVange, L. M. Ramey, S. L. Ramey, C. T. (1992). Power Calculations General Linear Multivariate Models Including Repeated Measures Applications. Journal American Statistical Association, 87, 1209-1226.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/etasq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Measures of Partial Association (Eta-squared) for Linear Models — etasq","text":"","code":"library(car) data(Soils, package=\"carData\") soils.mod <- lm(cbind(pH,N,Dens,P,Ca,Mg,K,Na,Conduc) ~ Block + Contour*Depth, data=Soils) #Anova(soils.mod) etasq(Anova(soils.mod)) #> eta^2 #> Block 0.5585973 #> Contour 0.6692989 #> Depth 0.5983772 #> Contour:Depth 0.2058495 etasq(soils.mod) # same #> eta^2 #> Block 0.5585973 #> Contour 0.6692989 #> Depth 0.5983772 #> Contour:Depth 0.2058495 etasq(Anova(soils.mod), anova=TRUE) #> #> Type II MANOVA Tests: Pillai test statistic #> eta^2 Df test stat approx F num Df den Df Pr(>F) #> Block 0.55860 3 1.6758 3.7965 27 81 1.777e-06 *** #> Contour 0.66930 2 1.3386 5.8468 18 52 2.730e-07 *** #> Depth 0.59838 3 1.7951 4.4697 27 81 8.777e-08 *** #> Contour:Depth 0.20585 6 1.2351 0.8640 54 180 0.7311 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 etasq(soils.mod, test=\"Wilks\") #> eta^2 #> Block 0.5701385 #> Contour 0.7434504 #> Depth 0.8294239 #> Contour:Depth 0.2250388 etasq(soils.mod, test=\"Hotelling\") #> eta^2 #> Block 0.5823516 #> Contour 0.8009753 #> Depth 0.9421533 #> Contour:Depth 0.2456774"},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":null,"dir":"Reference","previous_headings":"","what":"Head measurements of football players — FootHead","title":"Head measurements of football players — FootHead","text":"Data collected part preliminary study examining relation football helmet design neck injuries. 30 subjects three groups: High school football players, college players non-football players.","code":""},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Head measurements of football players — FootHead","text":"data frame 90 observations following 7 variables. group factor levels High school College Non-football width numeric vector: head width widest dimension circum numeric vector: head circumference front.back numeric vector: front back distance eye level eye.top numeric vector: eye top head ear.top numeric vector:ear top head jaw numeric vector: jaw width","code":""},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Head measurements of football players — FootHead","text":"Rencher, . C. (1995), Methods Multivariate Analysis, New York: Wiley, Table 8.3.","code":""},{"path":"https://friendly.github.io/heplots/reference/FootHead.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Head measurements of football players — FootHead","text":"","code":"data(FootHead) str(FootHead) #> 'data.frame':\t90 obs. of 7 variables: #> $ group : Factor w/ 3 levels \"High school\",..: 1 1 1 1 1 1 1 1 1 1 ... #> $ width : num 13.5 15.5 14.5 15.5 14.5 14 15 15 15.5 15.5 ... #> $ circum : num 57.1 58.4 55.9 58.4 58.4 ... #> $ front.back: num 19.5 21 19 20 20 21 19.5 21 20.5 20.5 ... #> $ eye.top : num 12.5 12 10 13.5 13 12 13.5 13 13.5 13 ... #> $ ear.top : num 14 16 13 15 15.5 14 15.5 14 14.5 15 ... #> $ jaw : num 11 12 12 12 12 13 13 13 12.5 13 ... require(car) # use Helmert contrasts for group contrasts(FootHead$group) <- contr.helmert contrasts(FootHead$group) #> [,1] [,2] #> High school -1 -1 #> College 1 -1 #> Non-football 0 2 foot.mod <- lm(cbind(width, circum,front.back,eye.top,ear.top,jaw) ~ group, data=FootHead) Manova(foot.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.76116 8.4994 12 166 1.876e-12 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # show the HE plot for the first two variables heplot(foot.mod, main=\"HE plot for width and circumference\", fill=TRUE, col=c(\"red\", \"blue\")) # show it with tests of Helmert contrasts heplot(foot.mod, hypotheses=list(\"group.1\"=\"group1\",\"group.2\"=\"group2\"), col=c(\"red\", \"blue\", \"green3\", \"green3\" ), main=\"HE plot with orthogonal Helmert contrasts\") # show all pairwise HE plots pairs(foot.mod) # ... with tests of Helmert contrasts pairs(foot.mod, hypotheses=list(\"group.1\"=\"group1\",\"group.2\"=\"group2\"), col=c(\"red\", \"blue\", \"green3\", \"green3\"), hyp.labels=FALSE) # see that the hypothesis for groups really is 2D if(requireNamespace(\"rgl\")){ heplot3d(foot.mod, variables=c(1,2,6), hypotheses=list(\"group.1\"=\"group1\",\"group.2\"=\"group2\"), col=c(\"red\", \"blue\", \"green3\", \"green3\" ), wire=FALSE) }"},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Glance at an mlm object — glance.mlm","title":"Glance at an mlm object — glance.mlm","text":"function takes \"mlm\" object, fit lm multivariate response. goal return something analogous glance.lm univariate response linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Glance at an mlm object — glance.mlm","text":"","code":"# S3 method for mlm glance(x, ...)"},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Glance at an mlm object — glance.mlm","text":"x mlm object created lm, .e., multivariate response. ... Additional arguments. used.","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Glance at an mlm object — glance.mlm","text":"tibble one row response variable columns: r.squared R squared statistic, percent variation explained model. adj.r.squared Adjusted R squared statistic, like R squared statistic except taking degrees freedom account. sigma Estimated standard error residuals fstatitic Overall F statistic model numdf Numerator degrees freedom overall test dendf Denominator degrees freedom overall test p.value P-value corresponding F statistic nobs Number observations used","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Glance at an mlm object — glance.mlm","text":"multivariate case, returns tibble one row response variable, containing goodness fit measures, F-tests p-values.","code":""},{"path":"https://friendly.github.io/heplots/reference/glance.mlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Glance at an mlm object — glance.mlm","text":"","code":"iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) glance(iris.mod) #> # A tibble: 4 x 9 #> response r.squared adj.r.squared sigma fstatistic numdf dendf p.value nobs #> #> 1 Sepal.Len~ 0.619 0.614 0.515 119. 2 147 1.67e-31 150 #> 2 Sepal.Wid~ 0.401 0.393 0.340 49.2 2 147 4.49e-17 150 #> 3 Petal.Len~ 0.941 0.941 0.430 1180. 2 147 2.86e-91 150 #> 4 Petal.Wid~ 0.929 0.928 0.205 960. 2 147 4.17e-85 150"},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":null,"dir":"Reference","previous_headings":"","what":"Orthogonalize successive columns of a data frame or matrix — gsorth","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"gsorth uses sequential, orthogonal projections, Gram-Schmidt method, transform matrix numeric columns data frame uncorrelated set, possibly retaining column means standard deviations original.","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"","code":"gsorth(y, order, recenter = TRUE, rescale = TRUE, adjnames = TRUE)"},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"y numeric data frame matrix order integer vector specifying order /subset columns y orthogonalized. missing, order=1:p p=ncol(y). recenter TRUE, result column means original; else means = 0 cols 2:p. rescale TRUE, result column standard deviations original; else sd = residual variance cols 2:p adjnames TRUE, column names result adjusted form Y1, Y2.1, Y3.12, adding suffixes '.1', '.12', etc. original column names.","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"Returns matrix data frame uncorrelated columns. Row column names copied result.","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"statistical applications, interpretation depends order variables orthogonalized. multivariate linear models, orthogonalizing response, Y variables provides equivalent step-tests, Y1 tested alone, Y2.1, Y3.12, etc. can tested determine additional contributions previous response variables. Similarly, orthogonalizing model X variables provides equivalent Type tests, provided anova. method equivalent setting columns 2:p residuals linear regression column prior columns, .e., z[,j] <- resid( lm( z[,j] ~ .matrix(z[,1:(j-1)]), data=z) ) However, accuracy speed transformation carried using QR decomposition.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/gsorth.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Orthogonalize successive columns of a data frame or matrix — gsorth","text":"","code":"GSiris <- gsorth(iris[,1:4]) GSiris <- gsorth(iris, order=1:4) # same, using order str(GSiris) #> num [1:150, 1:4] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... #> - attr(*, \"dimnames\")=List of 2 #> ..$ : chr [1:150] \"1\" \"2\" \"3\" \"4\" ... #> ..$ : chr [1:4] \"Sepal.Length\" \"Sepal.Width.1\" \"Petal.Length.12\" \"Petal.Width.123\" zapsmall(cor(GSiris)) #> Sepal.Length Sepal.Width.1 Petal.Length.12 Petal.Width.123 #> Sepal.Length 1 0 0 0 #> Sepal.Width.1 0 1 0 0 #> Petal.Length.12 0 0 1 0 #> Petal.Width.123 0 0 0 1 colMeans(GSiris) #> Sepal.Length Sepal.Width.1 Petal.Length.12 Petal.Width.123 #> 5.843333 3.057333 3.758000 1.199333 # sd(GSiris) -- sd() now deprecated apply(GSiris, 2, sd) #> Sepal.Length Sepal.Width.1 Petal.Length.12 Petal.Width.123 #> 0.8280661 0.4358663 1.7652982 0.7622377 # orthogonalize Y side GSiris <- data.frame(gsorth(iris[,1:4]), Species=iris$Species) iris.mod1 <- lm(as.matrix(GSiris[,1:4]) ~ Species, data=GSiris) car::Anova(iris.mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Species 2 1.1919 53.466 8 290 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # orthogonalize X side rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer) car::Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.059964 1.2970 3 61 0.283582 #> s 1 0.097788 2.2039 3 61 0.096703 . #> ns 1 0.208820 5.3667 3 61 0.002406 ** #> na 1 0.183478 4.5690 3 61 0.005952 ** #> ss 1 0.091796 2.0552 3 61 0.115521 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # type I tests for Rohwer data Rohwer.orth <- cbind(Rohwer[,1:5], gsorth(Rohwer[, c(\"n\", \"s\", \"ns\", \"na\", \"ss\")], adjnames=FALSE)) rohwer.mod1 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer.orth) car::Anova(rohwer.mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> n 1 0.227735 5.9962 3 61 0.001195 ** #> s 1 0.088967 1.9857 3 61 0.125530 #> ns 1 0.112979 2.5898 3 61 0.060939 . #> na 1 0.302957 8.8375 3 61 5.958e-05 *** #> ss 1 0.091796 2.0552 3 61 0.115521 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # compare with anova() anova(rohwer.mod1) #> Analysis of Variance Table #> #> Df Pillai approx F num Df den Df Pr(>F) #> (Intercept) 1 0.97665 850.63 3 61 < 2.2e-16 *** #> n 1 0.22774 6.00 3 61 0.001195 ** #> s 1 0.08897 1.99 3 61 0.125530 #> ns 1 0.11298 2.59 3 61 0.060939 . #> na 1 0.30296 8.84 3 61 5.958e-05 *** #> ss 1 0.09180 2.06 3 61 0.115521 #> Residuals 63 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # compare heplots for original Xs and orthogonalized, Type I heplot(rohwer.mod) heplot(rohwer.mod1)"},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":null,"dir":"Reference","previous_headings":"","what":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"study conducted investigating effectiveness different kinds psychological treatment sensitivity headache sufferers noise, described Hand Taylor (1987), Study E.","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"data frame 98 observations following 6 variables. type Type headache, factor levels Migrane Tension treatment Treatment group, factor levels T1 T2 T3 Control. See Details u1 Noise level rated Uncomfortable, initial measure du1 Noise level rated Definitely Uncomfortable, initial measure u2 Noise level rated Uncomfortable, final measure du2 Noise level rated Definitely Uncomfortable, final measure","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"D. J. Hand C. C. Taylor (1987). Multivariate analysis variance repeated measures: practical approach behavioural scientists London: Chapman Hall. ISBN: 0412258005. Table E.1.","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"pre-post design, 98 patients first assessed volume noise found uncomfortable (U) definitely uncomfortable (DU). given relaxation training, listened noise DU level given instruction breathing techniques use visual imagery distract discomfort. One four treatments applied, patients reassessed noise volume considered uncomfortable (U) definitely uncomfortable (DU). treatments described follows: T1 Listened tone initial DU level, amount time able tolerate . T2 T1, one additional minute exposure T3 T2, explicitly instructed use relaxation techniques Control subject experienced exposure noise tone final sensitivity measures taken Hand Taylor described several substantive hypotheses related differences among treatments. Headache data frame, included contrasts(Headache$treatment)","code":""},{"path":"https://friendly.github.io/heplots/reference/Headache.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Treatment of Headache Sufferers for Sensitivity to Noise — Headache","text":"","code":"library(car) data(Headache) str(Headache) #> 'data.frame':\t98 obs. of 6 variables: #> $ type : Factor w/ 2 levels \"Migrane\",\"Tension\": 1 1 2 1 1 1 1 1 1 2 ... #> $ treatment: Factor w/ 4 levels \"T1\",\"T2\",\"T3\",..: 3 1 1 3 3 3 2 1 1 3 ... #> ..- attr(*, \"contrasts\")= num [1:4, 1:3] 1 -1 0 0 1 1 0 -2 0 0 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : chr [1:4] \"T1\" \"T2\" \"T3\" \"Control\" #> .. .. ..$ : NULL #> $ u1 : num 2.34 2.73 0.37 7.5 4.63 3.6 2.45 2.31 1.38 0.85 ... #> $ du1 : num 5.3 6.85 0.53 9.12 7.21 7.3 3.75 3.25 2.33 1.42 ... #> $ u2 : num 5.8 4.68 0.55 5.7 5.63 4.83 2.5 2 2.23 1.37 ... #> $ du2 : num 8.52 6.68 0.84 7.88 6.75 7.32 3.18 3.3 3.98 1.89 ... # basic MLM, specifying between-S effects headache.mod <- lm(cbind(u1, du1, u2, du2) ~ type * treatment, data=Headache) ############################## ## between-S tests ############################## Anova(headache.mod, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> type 1 0.042678 0.9283 4 87 0.451426 #> treatment 3 0.136154 3.0294 4 89 0.021609 * #> type:treatment 3 0.161202 3.5867 4 89 0.009281 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test each contrast separately print(linearHypothesis(headache.mod, hypothesis=\"treatment1\", test=\"Roy\"), SSP=FALSE) #> #> Multivariate Test: #> Df test stat approx F num Df den Df Pr(>F) #> Roy 1 0.01305284 0.2838993 4 87 0.88769 print(linearHypothesis(headache.mod, hypothesis=\"treatment2\", test=\"Roy\"), SSP=FALSE) #> #> Multivariate Test: #> Df test stat approx F num Df den Df Pr(>F) #> Roy 1 0.08267735 1.798232 4 87 0.13645 print(linearHypothesis(headache.mod, hypothesis=\"treatment3\", test=\"Roy\"), SSP=FALSE) #> #> Multivariate Test: #> Df test stat approx F num Df den Df Pr(>F) #> Roy 1 0.1902026 4.136907 4 87 0.0040827 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(headache.mod, variables=c(1,3), hypotheses=paste(\"treatment\", 1:3, sep=\"\"), hyp.labels=c(\"extra.exp\", \"no.inst\", \"explicit.inst\"), xlab=\"u1: Initial sensitivity\", ylab=\"u2: Final sensitivity\", main=\"Headache data: Unpleasant levels\") abline(0, 1, lty=5, col=\"gray\") heplot(headache.mod, variables=c(2,4), hypotheses=paste(\"treatment\", 1:3, sep=\"\"), xlab=\"du1: Initial sensitivity\", ylab=\"du2: Final sensitivity\", main=\"Headache data: Definitely Unpleasant levels\") abline(0, 1, lty=5, col=\"gray\") pairs(headache.mod) ############################## # between-S and within-S tests ############################## idata = expand.grid(level=factor(c(\"U\", \"DU\")), phase=factor(1:2)) Anova(headache.mod, idata=idata, idesign=~level*phase) #> #> Type II Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.64648 164.580 1 90 < 2e-16 *** #> type 1 0.00691 0.627 1 90 0.43072 #> treatment 3 0.04122 1.290 3 90 0.28275 #> type:treatment 3 0.00118 0.035 3 90 0.99106 #> level 1 0.60226 136.276 1 90 < 2e-16 *** #> type:level 1 0.00000 0.000 1 90 0.99653 #> treatment:level 3 0.00660 0.199 3 90 0.89661 #> type:treatment:level 3 0.05360 1.699 3 90 0.17287 #> phase 1 0.02459 2.269 1 90 0.13546 #> type:phase 1 0.02267 2.088 1 90 0.15193 #> treatment:phase 3 0.08074 2.635 3 90 0.05459 . #> type:treatment:phase 3 0.06236 1.995 3 90 0.12033 #> level:phase 1 0.03465 3.231 1 90 0.07563 . #> type:level:phase 1 0.00820 0.744 1 90 0.39070 #> treatment:level:phase 3 0.02164 0.663 3 90 0.57669 #> type:treatment:level:phase 3 0.03475 1.080 3 90 0.36173 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":null,"dir":"Reference","previous_headings":"","what":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"heplots package provides functions visualizing hypothesis tests multivariate linear models (MANOVA, multivariate multiple regression, MANCOVA, repeated measures designs). plots represent sums--squares--products matrices linear hypotheses error using ellipses (two dimensions), ellipsoids (three dimensions), line segments one dimension. See Fox, Friendly Monette (2007) brief introduction Friendly, Monette Fox (2013) general discussion role elliptical geometry statistical understanding. topics now addressed include robust MLMs, tests equality covariance matrices MLMs, chi square Q-Q plots MLMs. package also provides collection data sets illustrating variety multivariate linear models types listed , together graphical displays. Several tutorial vignettes also included. See vignette(package=\"heplots\").","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"graphical functions contained display multivariate model effects variable (data) space, one response variables (contrasts among response variables repeated measures designs). heplot constructs two-dimensional plots model terms linear hypotheses pairs response variables multivariate linear models. heplot3d constructs analogous 3D plots triples response variables. pairs.mlm constructs ``matrix'' pairwise plots. heplot1d constructs 1-dimensional analogs plots model terms linear hypotheses single response variables. repeated measure designs, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. terms involving within-subject effects, functions carry linear transformation matrix Y responses matrix Y M, M model matrix term intra-subject design produce plots H E matrices transformed space. vignette repeated describes graphical methods repeated measures designs. related car package calculates Type II Type III tests multivariate linear hypotheses using Anova linearHypothesis functions. candisc-package package provides functions visualizing effects MLM model terms low-dimensional canonical space shows largest hypothesis relative error variation. candisc package now also includes related methods canonical correlation analysis. heplots package also contains large number multivariate data sets examples analyses graphic displays. Use data(package=\"heplots\") see current list.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"John Fox, Michael Friendly, Georges Monette Maintainer: Michael Friendly, friendly@yorku.ca, http://datavis.ca","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot-package.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples. Journal Statistical Software, 17(6), 1-42. doi:10.18637/jss.v017.i06 Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf Fox, J., Friendly, M. & Monette, G. (2007). Visual hypothesis tests multivariate linear models: heplots package R. DSC 2007: Directions Statistical Computing. https://socialsciences.mcmaster.ca/jfox/heplots-dsc-paper.pdf Friendly, M. (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi:10.18637/jss.v037.i04 Fox, J., Friendly, M. & Weisberg, S. (2013). \tHypothesis Tests Multivariate Linear Models Using car Package. \tR Journal, 5(1), \thttps://journal.r-project.org/archive/2013-1/fox-friendly-weisberg.pdf. Friendly, M., Monette, G. & Fox, J. (2013). \tElliptical Insights: Understanding Statistical Methods Elliptical Geometry. \tStatistical Science, 2013, 28 (1), 1-39, \thttp://datavis.ca/papers/ellipses.pdf. Friendly, M. & Sigal, M. (2014). Recent Advances Visualizing Multivariate Linear Models. Revista Colombiana de Estadistica, 37, 261-283 Friendly, M. & Sigal, M. (2016). Graphical Methods Multivariate Linear Models Psychological Research: R Tutorial. Submitted publication.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Two-Dimensional HE Plots — heplot","title":"Two-Dimensional HE Plots — heplot","text":"function plots ellipses representing hypothesis error sums--squares--products matrices terms linear hypotheses multivariate linear model. include MANOVA models (explanatory variables factors), multivariate regression (quantitative predictors), MANCOVA models, homogeneity regression, well repeated measures designs treated multivariate perspective.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Two-Dimensional HE Plots — heplot","text":"","code":"heplot(mod, ...) # S3 method for mlm heplot( mod, terms, hypotheses, term.labels = TRUE, hyp.labels = TRUE, err.label = \"Error\", label.pos = NULL, variables = 1:2, error.ellipse = !add, factor.means = !add, grand.mean = !add, remove.intercept = TRUE, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = c(\"contr.sum\", \"contr.poly\"), imatrix = NULL, iterm = NULL, markH0 = !is.null(iterm), manova, size = c(\"evidence\", \"effect.size\"), level = 0.68, alpha = 0.05, segments = 60, center.pch = \"+\", center.cex = 2, col = getOption(\"heplot.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\")), lty = 2:1, lwd = 1:2, fill = FALSE, fill.alpha = 0.3, xlab, ylab, main = \"\", xlim, ylim, axes = TRUE, offset.axes, add = FALSE, verbose = FALSE, warn.rank = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Two-Dimensional HE Plots — heplot","text":"mod model object class \"mlm\". ... arguments pass plot, text, points. terms logical value character vector terms model plot hypothesis matrices; missing TRUE, defaults terms; FALSE, terms plotted. hypotheses optional list linear hypotheses plot hypothesis matrices; hypotheses specified linearHypothesis function car package; list elements can named, case names used. term.labels logical value character vector names terms plotted. TRUE (default) names terms used; FALSE, term labels plotted. hyp.labels logical value character vector names hypotheses plotted. TRUE (default) names components list hypotheses used; FALSE, hypothesis labels plotted. err.label Label error ellipse label.pos Label position, vector integers (0:4) character strings (c(\"center\", \"bottom\", \"left\", \"top\", \"right\"), c(\"C\", \"S\", \"W\", \"N\", \"E\") use labeling ellipses, recycled necessary. Values 1, 2, 3 4, respectively indicate positions , left , right max/min coordinates ellipse; value 0 specifies centroid ellipse object. default, label.pos=NULL uses correlation ellipse determine \"top\" (r>=0) \"bottom\" (r<0). Even flexible options described label.ellipse variables indices names two response variables plotted; defaults 1:2. error.ellipse TRUE, plot error ellipse; defaults TRUE, argument add FALSE (see ). factor.means logical value character vector names factors means plotted, TRUE FALSE; defaults TRUE, argument add FALSE (see ). grand.mean TRUE, plot centroid data; defaults TRUE, argument add FALSE (see ). remove.intercept TRUE (default), plot ellipse intercept even MANOVA table. type ``type'' sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Friendly (2010) Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. markH0 logical value (else list arguments mark.H0) used draw cross-hairs point indicating value point null hypothesis. default TRUE iterm non-NULL. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. size scale hypothesis ellipse relative error ellipse; \"evidence\", default, scaling done ``significant'' hypothesis ellipse level alpha extends outside error ellipse; \"effect.size\", hypothesis ellipse scale error ellipse. level equivalent coverage ellipse normally-distributed errors, defaults 0.68, giving standard 1 SD bivariate ellipse. alpha significance level Roy's greatest-root test statistic; size=\"evidence\", hypothesis ellipse scaled just touches error ellipse specified alpha level; larger hypothesis ellipse somewhere space response variables therefore indicates statistical significance; defaults 0.05. segments number line segments composing ellipse; defaults 60. center.pch character use plotting centroid data; defaults \"+\". center.cex size character use plotting centroid data; defaults 2. col color vector colors use plotting ellipses; first color used error ellipse; remaining colors --- recycled necessary --- used hypothesis ellipses. single color can given, case used ellipses. convenience, default colors heplots produced given session can changed assigning color vector via options(heplot.colors =c(...). Otherwise, default colors c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lty vector line types use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line type can given. Defaults 2:1. lwd vector line widths use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line width can given. Defaults 1:2. fill logical vector indicating whether ellipse filled . first value used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single fill value can given. Defaults FALSE backward compatibility. See Details . fill.alpha Alpha transparency filled ellipses, numeric scalar vector values within [0,1], 0 means fully transparent 1 means fully opaque. xlab x-axis label; defaults name x variable. ylab y-axis label; defaults name y variable. main main plot label; defaults \"\". xlim x-axis limits; absent, computed data. ylim y-axis limits; absent, computed data. axes Whether draw x, y axes; defaults TRUE offset.axes proportion extend axes direction computed data; optional. add TRUE, add current plot; default FALSE. TRUE, error ellipse plotted. verbose TRUE, print MANOVA table details hypothesis tests; default FALSE. warn.rank TRUE, suppress warnings rank hypothesis matrix ellipse collapses line; default FALSE.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Two-Dimensional HE Plots — heplot","text":"function invisibly returns object class \"heplot\", coordinates various hypothesis ellipses error ellipse, limits horizontal vertical axes. may useful adding additional annotations plot, using standard plotting functions. (methods manipulating objects currently available.) components : H list containing coordinates ellipse hypothesis terms E matrix containing coordinates error ellipse center x,y coordinates centroid xlim x-axis limits ylim y-axis limits radius radius unit circles used generate ellipses","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Two-Dimensional HE Plots — heplot","text":"heplot function plots representation covariance ellipses hypothesized model terms linear hypotheses (H) corresponding error (E) matrices two response variables multivariate linear model (mlm). plot helps visualize nature dimensionality response variation two variables jointly relation error variation summarized various multivariate test statistics (Wilks' Lambda, Pillai trace, Hotelling-Lawley trace, Roy maximum root). Roy's maximum root test particularly simple visual interpretation, exploited size=\"evidence\" version plot. See description argument alpha. 1 df hypothesis term (quantitative regressor, single contrast parameter test), H matrix rank 1 (one non-zero latent root \\(H E^{-1}\\)) H \"ellipse\" collapses degenerate line. Typically, fit mlm mymlm <- lm(cbind(y1, y2, y3, ...) ~ modelterms), plot modelterms heplot(mymlm, ...). Arbitrary linear hypotheses related terms model (e.g., contrasts effect) can included plot using hypotheses argument. See linearHypothesis details. repeated measure designs, response variables correspond one variates observed within-subject design, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. specify intra-subject term (iterm), analysis plots amount analysis matrix Y responses post-multiplied matrix M determined intra-subject design term. See Friendly (2010) vignette(\"repeated\") package extended discussion examples. related candisc package provides functions visualizing multivariate linear model low-dimensional view via generalized canonical discriminant analyses. heplot.candisc heplot3d.candisc provide low-rank 2D (3D) view effects given term space maximum discrimination. element fill TRUE, ellipse outline drawn using corresponding color col, interior filled transparent version color specified fill.alpha. produce filled (non-degenerate) ellipses without bounding outline, use value lty=0 corresponding position.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Two-Dimensional HE Plots — heplot","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17(6), 1--42. https://www.jstatsoft.org/v17/i06/ c(\"\\Sexpr[results=rd,stage=build]tools:::Rd_expr_doi(\\\"#1\\\")\", \"10.18637/jss.v017.i06\")doi: 10.18637/jss.v017.i06 Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421--444. http://datavis.ca/papers/jcgs-heplots.pdf Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Fox, J., Friendly, M. & Weisberg, S. (2013). Hypothesis Tests Multivariate Linear Models Using car Package. R Journal, 5(1), https://journal.r-project.org/archive/2013-1/fox-friendly-weisberg.pdf. Friendly, M. & Sigal, M. (2014) Recent Advances Visualizing Multivariate Linear Models. Revista Colombiana de Estadistica, 37, 261-283.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Two-Dimensional HE Plots — heplot","text":"","code":"## iris data contrasts(iris$Species)<-matrix(c(0,-1,1, 2, -1, -1), 3,2) contrasts(iris$Species) #> [,1] [,2] #> setosa 0 2 #> versicolor -1 -1 #> virginica 1 -1 iris.mod <- lm(cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris) hyp <- list(\"V:V\"=\"Species1\",\"S:VV\"=\"Species2\") heplot(iris.mod, hypotheses=hyp) # compare with effect-size scaling heplot(iris.mod, hypotheses=hyp, size=\"effect\", add=TRUE) # try filled ellipses heplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=0.2, col=c(\"red\", \"blue\")) heplot(iris.mod, hypotheses=hyp, fill=TRUE, col=c(\"red\", \"blue\"), lty=c(0,0,1,1)) # vary label position and fill.alpha heplot(iris.mod, hypotheses=hyp, fill=TRUE, fill.alpha=c(0.3,0.1), col=c(\"red\", \"blue\"), lty=c(0,0,1,1), label.pos=0:3) hep <-heplot(iris.mod, variables=c(1,3), hypotheses=hyp) str(hep) #> List of 6 #> $ H :List of 3 #> ..$ Species: num [1:61, 1:2] 9.66 9.68 9.66 9.6 9.5 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : NULL #> .. .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> ..$ V:V : num [1:61, 1:2] 7.41 7.4 7.38 7.33 7.27 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : NULL #> .. .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> ..$ S:VV : num [1:61, 1:2] 9.33 9.31 9.25 9.16 9.03 ... #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : NULL #> .. .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> $ E : num [1:61, 1:2] 6.62 6.62 6.61 6.59 6.56 ... #> ..- attr(*, \"dimnames\")=List of 2 #> .. ..$ : NULL #> .. ..$ : chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> $ center: Named num [1:2] 5.84 3.76 #> ..- attr(*, \"names\")= chr [1:2] \"Sepal.Length\" \"Petal.Length\" #> $ xlim : Named num [1:2] 2.01 9.68 #> ..- attr(*, \"names\")= chr [1:2] \"Sepal.Length\" \"Sepal.Length\" #> $ ylim : Named num [1:2] -6.33 13.84 #> ..- attr(*, \"names\")= chr [1:2] \"Petal.Length\" \"Petal.Length\" #> $ radius: num 1.52 #> - attr(*, \"class\")= chr \"heplot\" # all pairs pairs(iris.mod, hypotheses=hyp, hyp.labels=FALSE) ## Pottery data, from car package data(Pottery, package = \"carData\") pottery.mod <- lm(cbind(Al, Fe, Mg, Ca, Na) ~ Site, data=Pottery) heplot(pottery.mod) heplot(pottery.mod, terms=FALSE, add=TRUE, col=\"blue\", hypotheses=list(c(\"SiteCaldicot = 0\", \"SiteIsleThorns=0\")), hyp.labels=\"Sites Caldicot and Isle Thorns\") ## Rohwer data, multivariate multiple regression/ANCOVA #-- ANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) car::Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.37853 12.1818 3 60 2.507e-06 *** #> n 1 0.04030 0.8400 3 60 0.477330 #> s 1 0.09271 2.0437 3 60 0.117307 #> ns 1 0.19283 4.7779 3 60 0.004729 ** #> na 1 0.23134 6.0194 3 60 0.001181 ** #> ss 1 0.04990 1.0504 3 60 0.376988 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 col <- c(\"red\", \"black\", \"blue\", \"cyan\", \"magenta\", \"brown\", \"gray\") heplot(rohwer.mod, col=col) # Add ellipse to test all 5 regressors heplot(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), col=col, fill=TRUE) # View all pairs pairs(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"))) # or 3D plot if(requireNamespace(\"rgl\")){ col <- c(\"pink\", \"black\", \"blue\", \"cyan\", \"magenta\", \"brown\", \"gray\") heplot3d(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), col=col) }"},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":null,"dir":"Reference","previous_headings":"","what":"One-Dimensional HE Plots — heplot1d","title":"One-Dimensional HE Plots — heplot1d","text":"function plots 1-dimensional representation hypothesis (H) error (E) sums--squares--products matrices terms linear hypotheses multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"One-Dimensional HE Plots — heplot1d","text":"","code":"heplot1d(mod, ...) # S3 method for mlm heplot1d( mod, terms, hypotheses, term.labels = TRUE, hyp.labels = TRUE, variables = 1, error.ellipse = !add, factor.means = !add, grand.mean = !add, remove.intercept = TRUE, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = c(\"contr.sum\", \"contr.poly\"), imatrix = NULL, iterm = NULL, manova, size = c(\"evidence\", \"effect.size\"), level = 0.68, alpha = 0.05, center.pch = \"|\", col = getOption(\"heplot.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\")), lty = 2:1, lwd = 1:2, xlab, main = \"\", xlim, axes = TRUE, offset.axes = 0.1, add = FALSE, verbose = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"One-Dimensional HE Plots — heplot1d","text":"mod model object class \"mlm\". ... arguments pass plot, text, points. terms logical value character vector terms model plot hypothesis matrices; missing TRUE, defaults terms; FALSE, terms plotted. hypotheses optional list linear hypotheses plot hypothesis matrices; hypotheses specified linearHypothesis function car package; list elements can named, case names used. term.labels logical value character vector names terms plotted. TRUE (default) names terms used; FALSE, term labels plotted. hyp.labels logical value character vector names hypotheses plotted. TRUE (default) names components list hypotheses used; FALSE, hypothesis labels plotted. variables indices names two response variables plotted; defaults 1:2. error.ellipse TRUE, plot error ellipse; defaults TRUE, argument add FALSE (see ). factor.means logical value character vector names factors means plotted, TRUE FALSE; defaults TRUE, argument add FALSE (see ). grand.mean TRUE, plot centroid data; defaults TRUE, argument add FALSE (see ). remove.intercept TRUE (default), plot ellipse intercept even MANOVA table. type ``type'' sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. size scale hypothesis ellipse relative error ellipse; \"evidence\", default, scaling done ``significant'' hypothesis ellipse extends outside error ellipse; \"effect.size\", hypothesis ellipse scale error ellipse. level equivalent coverage ellipse normally-distributed errors, defaults 0.68. alpha significance level Roy's greatest-root test statistic; size=\"evidence\", hypothesis ellipse scaled just touches error ellipse specified alpha level; larger hypothesis ellipse therefore indicates statistical significance; defaults 0.05. center.pch character use plotting centroid data; defaults \"|\". col color vector colors use plotting ellipses; first color used error ellipse; remaining colors --- recycled necessary --- used hypothesis ellipses. single color can given, case used ellipses. convenience, default colors heplots produced given session can changed assigning color vector via options(heplot.colors =c(...). Otherwise, default colors c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lty vector line types use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line type can given. Defaults 2:1. lwd vector line widths use plotting ellipses; first used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single line width can given. Defaults 1:2. xlab x-axis label; defaults name x variable. main main plot label; defaults \"\". xlim x-axis limits; absent, computed data. axes Whether draw x, y axes; defaults TRUE offset.axes proportion extend axes direction computed data; optional. add TRUE, add current plot; default FALSE. TRUE, error ellipse plotted. verbose TRUE, print MANOVA table details hypothesis tests; default FALSE.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"One-Dimensional HE Plots — heplot1d","text":"function invisibly returns object class \"heplot1d\", coordinates various hypothesis ellipses error ellipse, limits horizontal vertical axes. (methods manipulating objects currently available.) components : H ranges hypothesis terms E range E xlim x-axis limits","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"One-Dimensional HE Plots — heplot1d","text":"particular, given response, 1-D representations H E matrices correspond line segments. E ``ellipse'' shown filled rectangle whose width equals mean squared error response. H ``ellipse'' model term shown line segment whose length represents either size effect evidence effect. version initial sketch. Details implementation subject change.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"One-Dimensional HE Plots — heplot1d","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot1d.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"One-Dimensional HE Plots — heplot1d","text":"","code":"## Plastics data plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) heplot1d(plastic.mod, col=c(\"pink\",\"blue\")) heplot1d(plastic.mod, col=c(\"pink\",\"blue\"),variables=2) heplot1d(plastic.mod, col=c(\"pink\",\"blue\"),variables=3) ## Bees data bees.mod <- lm(cbind(Iz,Iy) ~ caste*treat*time, data=Bees) heplot1d(bees.mod) heplot1d(bees.mod, variables=2)"},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":null,"dir":"Reference","previous_headings":"","what":"Three-Dimensional HE Plots — heplot3d","title":"Three-Dimensional HE Plots — heplot3d","text":"function plots ellipsoids 3D representing hypothesis error sums--squares--products matrices terms linear hypotheses multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Three-Dimensional HE Plots — heplot3d","text":"","code":"heplot3d(mod, ...) # S3 method for mlm heplot3d( mod, terms, hypotheses, term.labels = TRUE, hyp.labels = TRUE, err.label = \"Error\", variables = 1:3, error.ellipsoid = !add, factor.means = !add, grand.mean = !add, remove.intercept = TRUE, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = c(\"contr.sum\", \"contr.poly\"), imatrix = NULL, iterm = NULL, manova, size = c(\"evidence\", \"effect.size\"), level = 0.68, alpha = 0.05, segments = 40, col = getOption(\"heplot3d.colors\", c(\"red\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\")), lwd = c(1, 4), shade = TRUE, shade.alpha = 0.2, wire = c(TRUE, FALSE), bg.col = c(\"white\", \"black\"), fogtype = c(\"none\", \"exp2\", \"linear\", \"exp\"), fov = 30, offset = 0.01, xlab, ylab, zlab, xlim, ylim, zlim, cex.label = 1.5, add = FALSE, verbose = FALSE, warn.rank = FALSE, ... )"},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Three-Dimensional HE Plots — heplot3d","text":"mod model object class \"mlm\". ... arguments passed generic. terms logical value character vector terms model plot hypothesis matrices; missing TRUE, defaults terms; FALSE, terms plotted. hypotheses optional list linear hypotheses plot hypothesis matrices; hypotheses specified linearHypothesis function car package; list elements can named, case names used. term.labels logical value character vector names terms plotted. TRUE (default) names terms used; FALSE, term labels plotted. hyp.labels logical value character vector names hypotheses plotted. TRUE (default) names components list hypotheses used; FALSE, hypothesis labels plotted. err.label Label error ellipse variables indices names three response variables plotted; defaults 1:3. error.ellipsoid TRUE, plot error ellipsoid; defaults TRUE, argument add FALSE (see ). factor.means logical value character vector names factors means plotted, TRUE FALSE; defaults TRUE, argument add FALSE (see ). grand.mean TRUE, plot centroid data; defaults TRUE, argument add FALSE (see ). remove.intercept TRUE (default), plot ellipsoid intercept even MANOVA table. type ``type'' sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. size scale hypothesis ellipsoid relative error ellipsoid; \"evidence\", default, scaling done ``significant'' hypothesis ellipsoid extends outside error ellipsoid; \"effect.size\", hypothesis ellipsoid scale error ellipsoid. level equivalent coverage ellipsoid normally-distributed errors, defaults 0.68. alpha significance level Roy's greatest-root test statistic; size=\"evidence\", hypothesis ellipsoid scaled just touches error ellipsoid specified alpha level; larger hypothesis ellipsoid therefore indicates statistical significance; defaults 0.05. segments number segments composing ellipsoid; defaults 40. col color vector colors use plotting ellipsoids; first color used error ellipsoid; remaining colors --- recycled necessary --- used hypothesis ellipsoid. single color can given, case used ellipsoid. convenience, default colors heplots produced given session can changed assigning color vector via options(heplot3d.colors=c(...). Otherwise, default colors c(\"pink\", \"blue\", \"black\", \"darkgreen\", \"darkcyan\", \"magenta\", \"brown\", \"darkgray\"). lwd two-element vector giving line width drawing ellipsoids (including degenerate ellipse) drawing ellipsoids degenerate line segment. default c(1, 4). shade logical scalar vector, indicating whether ellipsoids rendered shade3d. Works like col, except FALSE used 1 df degenerate ellipsoid. shade.alpha numeric value range [0,1], vector values, giving alpha transparency ellipsoids rendered shade=TRUE. wire logical scalar vector, indicating whether ellipsoids rendered wire3d. Works like col, except TRUE used 1 df degenerate ellipsoid. bg.col background colour, \"white\" \"black\", defaulting \"white\". fogtype type ``fog'' use depth-cueing; default \"none\". See bg. fov field view angle; controls perspective. See viewpoint. offset proportion axes set labels; defaults 0.01. xlab x-axis label; defaults name x variable. ylab y-axis label; defaults name y variable. zlab z-axis label; defaults name z variable. xlim x-axis limits; absent, computed data. ylim y-axis limits; absent, computed data. zlim z-axis limits; absent, computed data. cex.label text size ellipse labels add TRUE, add current plot; default FALSE. TRUE, error ellipsoid neither plotted returned output object. verbose TRUE, print MANOVA table details hypothesis tests; default FALSE. warn.rank TRUE, suppress warnings rank hypothesis matrix ellipsoid collapses ellipse line; default FALSE.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Three-Dimensional HE Plots — heplot3d","text":"heplot3d invisibly returns list containing bounding boxes error (E) ellipsoid term linear hypothesis specified call. 2 x 3 matrix rownames \"min\" \"max\" colnames corresponding variables plotted. additional component, center, contains coordinates centroid plot. function also leaves object named .frame global environment, containing rgl object IDs axes, axis labels, bounding box; deleted axes, etc. redrawn plot added .","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Three-Dimensional HE Plots — heplot3d","text":"H matrix term rank < 3, ellipsoid collapses ellipse (rank(H)=2) line (rank(H)=1). Rotating plot can particularly revealing, showing views H variation particularly large small relation E variation. See play3d movie3d details creating animations. arguments xlim, ylim, zlim can used expand bounding box axes, decrease .","code":""},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Three-Dimensional HE Plots — heplot3d","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17(6), 1-42. https://www.jstatsoft.org/v17/i06/ Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplot3d.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Three-Dimensional HE Plots — heplot3d","text":"","code":"# Soils data, from carData package data(Soils, package = \"carData\") soils.mod <- lm(cbind(pH,N,Dens,P,Ca,Mg,K,Na,Conduc) ~ Block + Contour*Depth, data=Soils) car::Anova(soils.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Block 3 1.6758 3.7965 27 81 1.777e-06 *** #> Contour 2 1.3386 5.8468 18 52 2.730e-07 *** #> Depth 3 1.7951 4.4697 27 81 8.777e-08 *** #> Contour:Depth 6 1.2351 0.8640 54 180 0.7311 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(soils.mod, variables=c(\"Ca\", \"Mg\")) pairs(soils.mod, terms=\"Depth\", variables=c(\"pH\", \"N\", \"P\", \"Ca\", \"Mg\")) heplot3d(soils.mod, variables=c(\"Mg\", \"Ca\", \"Na\"), wire=FALSE) # Plastic data plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) if (FALSE) { heplot3d(plastic.mod, col=c(\"red\", \"blue\", \"brown\", \"green3\"), wire=FALSE) }"},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal heplots functions — heplots-internal","title":"Internal heplots functions — heplots-internal","text":"Internal functions heplots package","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal heplots functions — heplots-internal","text":"","code":"lambda.crit( alpha, p, dfh, dfe, test.statistic = c(\"Roy\", \"HLT\", \"Hotelling-Lawley\") ) Roy.crit(alpha, p, dfh, dfe) HLT.crit(alpha, p, dfh, dfe) he.rep(x, n) Pillai(eig, q, df.res) Wilks(eig, q, df.res) HL(eig, q, df.res) Roy(eig, q, df.res)"},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal heplots functions — heplots-internal","text":"alpha significance level critical values multivariate statistics p Number variables dfh degrees freedom hypothesis dfe degrees freedom error test.statistic Test statistic used multivariate test x argument heplot heplot3d repeated Error hypothesis terms n Number hypothesis terms","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal heplots functions — heplots-internal","text":"critical value test statistic","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Internal heplots functions — heplots-internal","text":"functions calculate critical values multivariate test statistics (Wilks' Lambda, Hotelling-Lawley trace, Roy's maximum root test) used setting size H ellipses relative E. intended called user.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-internal.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal heplots functions — heplots-internal","text":"Michael Friendly friendly@yorku.ca","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":null,"dir":"Reference","previous_headings":"","what":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"heplots package provides functions visualizing hypothesis tests multivariate linear models (MANOVA, multivariate multiple regression, MANCOVA, repeated measures designs). plots represent sums--squares--products matrices linear hypotheses error using ellipses (two dimensions), ellipsoids (three dimensions), line segments one dimension. See Fox, Friendly Monette (2007) brief introduction Friendly, Monette Fox (2013) general discussion role elliptical geometry statistical understanding.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"topics now addressed include robust MLMs, tests equality covariance matrices MLMs, chi square Q-Q plots MLMs. package also provides collection data sets illustrating variety multivariate linear models types listed , together graphical displays. Several tutorial vignettes also included. See vignette(package=\"heplots\"). graphical functions contained display multivariate model effects variable (data) space, one response variables (contrasts among response variables repeated measures designs). list(list(\"heplot\")) constructs two-dimensional plots model terms linear hypotheses pairs response variables multivariate linear models. list(list(\"heplot3d\")) constructs analogous 3D plots triples response variables. list(list(\"pairs.mlm\")) constructs ``matrix'' pairwise plots. list(list(\"heplot1d\")) constructs 1-dimensional analogs plots model terms linear hypotheses single response variables. repeated measure designs, -subject effects within-subject effects must plotted separately, error terms (E matrices) differ. terms involving within-subject effects, functions carry linear transformation matrix Y responses matrix Y M, M model matrix term intra-subject design produce plots H E matrices transformed space. vignette repeated describes graphical methods repeated measures designs. related car package calculates Type II Type III tests multivariate linear hypotheses using Anova linearHypothesis functions. candisc-package package provides functions visualizing effects MLM model terms low-dimensional canonical space shows largest hypothesis relative error variation. candisc package now also includes related methods canonical correlation analysis. heplots package also contains large number multivariate data sets examples analyses graphic displays. Use data(package=\"heplots\") see current list.","code":""},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples. Journal Statistical Software, 17(6), 1-42. https://www.jstatsoft.org/v17/i06/ c(\"\\Sexpr[results=rd,stage=build]tools:::Rd_expr_doi(\\\"#1\\\")\", \"10.18637/jss.v017.i06\")doi: 10.18637/jss.v017.i06 Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf Fox, J., Friendly, M. & Monette, G. (2007). Visual hypothesis tests multivariate linear models: heplots package R. DSC 2007: Directions Statistical Computing. https://socialsciences.mcmaster.ca/jfox/heplots-dsc-paper.pdf Friendly, M. (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Fox, J., Friendly, M. & Weisberg, S. (2013). Hypothesis Tests Multivariate Linear Models Using car Package. R Journal, 5(1), https://journal.r-project.org/archive/2013-1/fox-friendly-weisberg.pdf. Friendly, M., Monette, G. & Fox, J. (2013). Elliptical Insights: Understanding Statistical Methods Elliptical Geometry. Statistical Science, 2013, 28 (1), 1-39, http://datavis.ca/papers/ellipses.pdf. Friendly, M. & Sigal, M. (2014). Recent Advances Visualizing Multivariate Linear Models. Revista Colombiana de Estadistica, 37, 261-283 Friendly, M. & Sigal, M. (2016). Graphical Methods Multivariate Linear Models Psychological Research: R Tutorial. Submitted publication.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/heplots-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Visualizing Hypothesis Tests in Multivariate Linear Models — heplots-package","text":"Michael Friendly, John Fox, Georges Monette Maintainer: Michael Friendly, friendly@yorku.ca, http://datavis.ca","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":null,"dir":"Reference","previous_headings":"","what":"Recovery from Elective Herniorrhaphy — Hernior","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"data set measures post-operative recovery 32 patients undergoing elective herniorrhaphy operation, relation pre-operative measures.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"data frame 32 observations following 9 variables. age patient age sex patient sex, factor levels f m pstat physical status (ignoring associated operation). 1-5 scale, 1=perfect health, 5=poor health. build body build, 1-5 scale, 1=emaciated, 2=thin, 3=average, 4=fat, 5=obese. cardiac preoperative complications heart, 1-4 scale, 1=none, 2=mild, 3=moderate, 4=severe. resp preoperative complications respiration, 1-4 scale, 1=none, 2=mild, 3=moderate, 4=severe. leave condition upon leaving recovery room, 1-4 scale, 1=routine recovery, 2=intensive care observation overnight, 3=intensive care, moderate care required, 4=intensive care, moderate care required. los length stay hospital operation (days) nurse level nursing required one week operation, 1-5 scale, 1=intense, 2=heavy, 3=moderate, 4=light, 5=none (?); see Details","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"Mosteller, F. Tukey, J. W. (1977), Data analysis regression, Reading, MA: Addison-Wesley. Data Exhibit 8, 567-568. source: study B. McPeek J. P. Gilbert Harvard Anesthesia Center.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"leave, nurse los outcome measures; remaining variables potential predictors recovery status. variable nurse recorded 1-4, remaining (20) entries entered \"-\" sources. clear whether means \"none\" NA. former interpretation used constructing R data frame, nurse==5 observations. Using Hernior$nurse[Hernior$nurse==5] <- NA change interpretation, render nurse useless multivariate analysis. ordinal predictors instead treated factors, also potential interactions explored.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"Hand, D. J., Daly, F., Lunn, . D., McConway, K. J. Ostrowski, E. (1994), Handbook Small Data Sets, Number 484, 390-391.","code":""},{"path":"https://friendly.github.io/heplots/reference/Hernior.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Recovery from Elective Herniorrhaphy — Hernior","text":"","code":"library(car) data(Hernior) str(Hernior) #> 'data.frame':\t32 obs. of 9 variables: #> $ age : int 78 60 68 62 76 76 64 74 68 79 ... #> $ sex : Factor w/ 2 levels \"f\",\"m\": 2 2 2 2 2 2 2 1 2 1 ... #> $ pstat : int 2 2 2 3 3 1 1 2 3 2 ... #> $ build : int 3 3 3 5 4 3 2 3 4 2 ... #> $ cardiac: int 1 2 1 3 3 1 1 2 2 1 ... #> $ resp : int 1 2 1 1 2 1 2 2 1 1 ... #> $ leave : int 2 2 1 1 2 1 1 1 1 2 ... #> $ los : int 9 4 7 35 9 7 5 16 7 11 ... #> $ nurse : num 3 5 4 3 4 5 5 3 5 3 ... Hern.mod <- lm(cbind(leave, nurse, los) ~ age + sex + pstat + build + cardiac + resp, data=Hernior) car::Anova(Hern.mod, test=\"Roy\") # actually, all tests are identical #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> age 1 0.16620 1.2742 3 23 0.30668 #> sex 1 0.02681 0.2055 3 23 0.89150 #> pstat 1 0.50028 3.8355 3 23 0.02309 * #> build 1 0.34506 2.6455 3 23 0.07318 . #> cardiac 1 0.29507 2.2622 3 23 0.10820 #> resp 1 0.32969 2.5277 3 23 0.08245 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test overall regression print(linearHypothesis(Hern.mod, c(\"age\", \"sexm\", \"pstat\", \"build\", \"cardiac\", \"resp\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 6 1.1019849 2.419161 18 75.00000 0.00413563 ** #> Wilks 6 0.2173439 2.604648 18 65.53911 0.00252395 ** #> Hotelling-Lawley 6 2.2679660 2.729959 18 65.00000 0.00162850 ** #> Roy 6 1.5543375 6.476406 6 25.00000 0.00032318 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # joint test of age, sex & caridac print(linearHypothesis(Hern.mod, c(\"age\", \"sexm\", \"cardiac\")), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 3 0.3826974 1.218485 9 75.00000 0.296709 #> Wilks 3 0.6305421 1.301115 9 56.12656 0.257126 #> Hotelling-Lawley 3 0.5649409 1.360043 9 65.00000 0.224709 #> Roy 3 0.5249507 4.374589 3 25.00000 0.013162 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # HE plots clr <- c(\"red\", \"darkgray\", \"blue\", \"darkgreen\", \"magenta\", \"brown\", \"black\") heplot(Hern.mod, col=clr) pairs(Hern.mod, col=clr) ## Enhancing the pairs plot ... # create better variable labels vlab <- c(\"LeaveCondition\\n(leave)\", \"NursingCare\\n(nurse)\", \"LengthOfStay\\n(los)\") # Add ellipse to test all 5 regressors simultaneously hyp <- list(\"Regr\" = c(\"age\", \"sexm\", \"pstat\", \"build\", \"cardiac\", \"resp\")) pairs(Hern.mod, hypotheses=hyp, col=clr, var.labels=vlab) ## Views in canonical space for the various predictors if (require(candisc)) { Hern.canL <- candiscList(Hern.mod) plot(Hern.canL, term=\"age\") plot(Hern.canL, term=\"sex\") plot(Hern.canL, term=\"pstat\") # physical status } #> Loading required package: candisc #> #> Attaching package: 'candisc' #> The following object is masked from 'package:stats': #> #> cancor"},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot an Interpolation Between Two Related Data Sets — interpPlot","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Plot interpolation two related data sets, typically transformations . function designed used animations.","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"","code":"interpPlot( xy1, xy2, alpha, xlim, ylim, points = TRUE, add = FALSE, col = palette()[1], ellipse = FALSE, ellipse.args = NULL, abline = FALSE, col.lines = palette()[2], lwd = 2, id.method = \"mahal\", labels = rownames(xy1), id.n = 0, id.cex = 1, id.col = palette()[1], segments = FALSE, segment.col = \"darkgray\", ... )"},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"xy1 First data set, 2-column matrix data.frame xy2 Second data set, 2-column matrix data.frame alpha value interpolation fraction, typically (necessarily) 0 <= alpha <= 1). xlim, ylim x, y limits plot. specified, function uses ranges rbind(xy1, xy2). points Logical. Whether plot points current interpolation? add Logical. Whether add existing plot? col Color plotted points. ellipse logical. TRUE plot dataEllipse ellipse.args arguments passed dataEllipse abline logical. TRUE plot linear regression line XY col.lines line color lwd line width id.method points identified. See showLabels. labels observation labels id.n Number points identified. set zero, points identified. id.cex Controls size plotted labels. default 1 id.col Controls color plotted labels. segments logical. TRUE draw lines segments xy1 xy segment.col line color segments ... arguments passed plot()","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Returns invisibly interpolated XY points.","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Points plotted via linear interpolation, $$ XY = XY1 + \\alpha (XY2 - XY1)$$ function allows plotting data ellipse, linear regression line, line segments showing movement points. Interpolations linear can obtained using non-linear series alpha values. example alpha=sin(seq(0,1,.1)/sin(1) give sinusoid interpolation.","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"examples just use -screen animations console graphics window. animation package provides facilities save various formats.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/interpPlot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot an Interpolation Between Two Related Data Sets — interpPlot","text":"","code":"################################################# # animate an AV plot from marginal to conditional ################################################# data(Duncan, package=\"carData\") duncmod <- lm(prestige ~ income + education, data=Duncan) mod.mat <- model.matrix(duncmod) # function to do an animation for one variable dunc.anim <- function(variable, other, alpha=seq(0, 1, .1)) { var <- which(variable==colnames(mod.mat)) duncdev <- scale(Duncan[,c(variable, \"prestige\")], scale=FALSE) duncav <- lsfit(mod.mat[, -var], cbind(mod.mat[, var], Duncan$prestige), intercept = FALSE)$residuals colnames(duncav) <- c(variable, \"prestige\") lims <- apply(rbind(duncdev, duncav),2,range) for (alp in alpha) { main <- if(alp==0) paste(\"Marginal plot:\", variable) else paste(round(100*alp), \"% Added-variable plot:\", variable) interpPlot(duncdev, duncav, alp, xlim=lims[,1], ylim=lims[,2], pch=16, main = main, xlab = paste(variable, \"| \", alp, other), ylab = paste(\"prestige | \", alp, other), ellipse=TRUE, ellipse.args=(list(levels=0.68, fill=TRUE, fill.alpha=alp/2)), abline=TRUE, id.n=3, id.cex=1.2, cex.lab=1.25) Sys.sleep(1) } } # show these in the R console if(interactive()) { dunc.anim(\"income\", \"education\") dunc.anim(\"education\", \"income\") } ############################################ # correlated bivariate data with 2 outliers # show rotation from data space to PCA space ############################################ set.seed(123345) x <- c(rnorm(100), 2, -2) y <- c(x[1:100] + rnorm(100), -2, 2) XY <- cbind(x=x, y=y) rownames(XY) <- seq_along(x) XY <- scale(XY, center=TRUE, scale=FALSE) # start, end plots car::dataEllipse(XY, pch=16, levels=0.68, id.n=2) #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter mod <- lm(y~x, data=as.data.frame(XY)) abline(mod, col=\"red\", lwd=2) pca <- princomp(XY, cor=TRUE) scores <- pca$scores car::dataEllipse(scores, pch=16, levels=0.68, id.n=2) #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter #> Warning: \"id.n\" is not a graphical parameter abline(lm(Comp.2 ~ Comp.1, data=as.data.frame(scores)), lwd=2, col=\"red\") # show interpolation # functions for labels, as a function of alpha main <- function(alpha) {if(alpha==0) \"Original data\" else if(alpha==1) \"PCA scores\" else paste(round(100*alpha,1), \"% interpolation\")} xlab <- function(alpha) {if(alpha==0) \"X\" else if(alpha==1) \"PCA.1\" else paste(\"X +\", alpha, \"(X - PCA.1)\")} ylab <- function(alpha) {if(alpha==0) \"Y\" else if(alpha==1) \"PCA.2\" else paste(\"Y +\", alpha, \"(Y - PCA.2)\")} interpPCA <- function(XY, alpha = seq(0,1,.1)) { XY <- scale(XY, center=TRUE, scale=FALSE) if (is.null(rownames(XY))) rownames(XY) <- 1:nrow(XY) pca <- princomp(XY, cor=TRUE) scores <- pca$scores for (alp in alpha) { interpPlot(XY, scores, alp, pch=16, main = main(alp), xlab = xlab(alp), ylab = ylab(alp), ellipse=TRUE, ellipse.args=(list(levels=0.68, fill=TRUE, fill.alpha=(1-alp)/2)), abline=TRUE, id.n=2, id.cex=1.2, cex.lab=1.25, segments=TRUE) Sys.sleep(1) } } # show in R console if(interactive()) { interpPCA(XY) } if (FALSE) { library(animation) saveGIF({ interpPCA(XY, alpha <- seq(0,1,.1))}, movie.name=\"outlier-demo.gif\", ani.width=480, ani.height=480, interval=1.5) }"},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":null,"dir":"Reference","previous_headings":"","what":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"dataset, Grice & Iwasaki (2007), gives scores five personality scales NEO PI-r (Costa & McCrae, 1992), called \"Big Five\" personality traits: Neuroticism, Extraversion, Openness--Experience, Agreeableness, Conscientiousness.","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"data frame 203 observations following 7 variables. ID ID number Group factor levels Eur Asian_Amer Asian_Intl N Neuroticism score E Extraversion score O Openness score Agreeableness score C Conscientiousness score","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"Grice, J., & Iwasaki, M. (2007). truly multivariate approach MANOVA. Applied Multivariate Research, 12, 199-226. https://doi.org/10.22329/amr.v12i3.660.","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"groups : Eur European Americans (Caucasians living United States entire lives) Asian_Amer Asian Americans (Asians living United States since age 6 years) Asian_Intl Asian Internationals (Asians moved United States 6th birthday) factor Group set compare E vs. Asian two Asian groups","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"Costa Jr, P. T., & McCrae, R. R. (1992). Revised NEO Personality Inventory (NEO PI-R) NEO Five-Factor Inventory (NEOFFI) professional manual. Psychological Assessment Resources.","code":""},{"path":"https://friendly.github.io/heplots/reference/Iwasaki_Big_Five.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Personality Traits of Cultural Groups — Iwasaki_Big_Five","text":"","code":"data(Iwasaki_Big_Five) str(Iwasaki_Big_Five) #> tibble [203 x 7] (S3: tbl_df/tbl/data.frame) #> $ ID : num [1:203] 1 2 3 4 5 6 7 8 9 10 ... #> $ Group: Factor w/ 3 levels \"Eur\",\"Asian_Amer\",..: 3 3 3 3 3 3 3 3 3 3 ... #> ..- attr(*, \"contrasts\")= num [1:3, 1:2] 2 -1 -1 0 1 -1 #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : chr [1:3] \"Eur\" \"Asian_Amer\" \"Asian_Intl\" #> .. .. ..$ : NULL #> $ N : num [1:203] 87 101 63 104 70 63 77 123 76 59 ... #> $ E : num [1:203] 117 134 135 118 114 131 140 122 141 133 ... #> $ O : num [1:203] 130 123 111 108 110 108 118 115 109 104 ... #> $ A : num [1:203] 124 115 71 107 119 125 131 99 134 130 ... #> $ C : num [1:203] 127 124 134 111 120 138 103 107 142 126 ... mod <- lm(cbind(N, E, O, A, C) ~ Group, data=Iwasaki_Big_Five) car::Anova(mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Group 2 0.41862 10.43 10 394 1.106e-15 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # heplots labs <- c(\"Neuroticism\", \"Extraversion\", \"Openness\", \"Agreeableness\", \"Consientiousness\" ) heplot(mod, fill = TRUE, fill.alpha = 0.2, cex.lab = 1.5, xlab = labs[1], ylab = labs[2]) heplot(mod, variables = c(2,5), fill = TRUE, fill.alpha = 0.2, cex.lab = 1.5, xlab = labs[2], ylab = labs[5]) pairs(mod, fill = TRUE, fill.alpha = 0.2, var.labels = labs)"},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":null,"dir":"Reference","previous_headings":"","what":"Label an ellipse — label.ellipse","title":"Label an ellipse — label.ellipse","text":"label.ellipse used draw text label ellipse center somewhere around periphery flexible way.","code":""},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label an ellipse — label.ellipse","text":"","code":"label.ellipse( ellipse, label, col = \"black\", label.pos = NULL, xpd = TRUE, tweak = 0.5 * c(strwidth(\"M\"), strheight(\"M\")), ... )"},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label an ellipse — label.ellipse","text":"ellipse two-column matrix coordinates ellipse boundary label Character string used ellipse label col Label color label.pos Label position relative ellipse. See details xpd label allowed extend beyond plot limits? tweak vector two lengths used tweak label positions ... parameters passed text, e.g., cex, ...","code":""},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Label an ellipse — label.ellipse","text":"label.pos=NULL, function uses sign correlation represented ellipse determine position top (\\(r>=0\\)) bottom (\\(r<0\\)) ellipse. Integer values 0, 1, 2, 3 4, respectively indicate positions center, , left , right max/min coordinates ellipse. Label positions can also specified corresponding character strings c(\"center\", \"bottom\", \"left\", \"top\", \"right\"), compass directions, c(\"C\", \"S\", \"W\", \"N\", \"E\"), integer label.pos values, 5:nrow(ellipse) taken indices row coordinates used ellipse label. Equivalently, label.pos can also fraction (0,1), interpreted fraction way around unit circle, counterclockwise point (1,0).","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Label an ellipse — label.ellipse","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/label.ellipse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label an ellipse — label.ellipse","text":"","code":"circle <- function(center=c(0,0), radius=1, segments=60) { angles <- (0:segments)*2*pi/segments circle <- radius * cbind( cos(angles), sin(angles)) t( c(center) + t( circle )) } label_demo <- function(ell) { plot(-2:2, -2:2, type=\"n\", asp=1, main=\"label.pos values and points (0:60)\") lines(ell, col=\"gray\") points(0, 0, pch=\"+\", cex=2) labs <- c(\"center\", \"bot\", \"left\", \"top\", \"right\") for (i in 0:4) { label.ellipse(ell, label=paste(i, \":\", labs[i+1]), label.pos = i) } for( i in 5*c(1,2, 4,5, 7,8, 10,11)) { points(ell[i,1], ell[i,2], pch=16) label.ellipse(ell, label=i, label.pos=i) } } circ <- circle(radius=1.8) label_demo(circ) ell <-circ %*% chol(matrix( c(1, .5, .5, 1), 2, 2)) label_demo(ell)"},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":null,"dir":"Reference","previous_headings":"","what":"Levene Tests of Homogeneity of Variances — leveneTests","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"function extends leveneTest multivariate response setting. performs Levene test homogeneity variances set response variables, prints compact summary.","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"","code":"leveneTests(y, group, center = median, ...)"},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"y data frame matrix numeric response variables multivariate linear model. group vector factor object giving group corresponding elements rows y center name function compute center group; mean gives original Levene's (1960) test; default, median, provides robust test suggested Brown Forsythe (1974). ... arguments, passed leveneTest","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"object classes \"anova\" \"data.frame\", one observation response variable y.","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"Levene, H. (1960). Robust Tests Equality Variances. Olkin, . et al. (Eds.), Contributions Probability Statistics: Essays Honor Harold Hotelling, Stanford University Press, 278-292. Brown, M. B. & Forsythe, . B. (1974). Robust Tests Equality Variances Journal American Statistical Association, 69, 364-367.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/leveneTests.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Levene Tests of Homogeneity of Variances — leveneTests","text":"","code":"leveneTests(iris[,1:4], iris$Species) #> Levene's Tests for Homogeneity of Variance (center = median) #> #> df1 df2 F value Pr(>F) #> Sepal.Length 2 147 6.3527 0.002259 ** #> Sepal.Width 2 147 0.5902 0.555518 #> Petal.Length 2 147 19.4803 3.129e-08 *** #> Petal.Width 2 147 19.8924 2.261e-08 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # handle a 1-column response? leveneTests(iris[,1, drop=FALSE], iris$Species) #> Levene's Tests for Homogeneity of Variance (center = median) #> #> df1 df2 F value Pr(>F) #> Sepal.Length 2 147 6.3527 0.002259 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 data(Skulls, package=\"heplots\") leveneTests(Skulls[,-1], Skulls$epoch) #> Levene's Tests for Homogeneity of Variance (center = median) #> #> df1 df2 F value Pr(>F) #> mb 4 145 1.0367 0.3905 #> bh 4 145 0.7171 0.5816 #> bl 4 145 0.6797 0.6071 #> nh 4 145 1.0418 0.3878"},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"function uses asymptotic results described Cai et. al (2016), Theorem 1, calculate approximate, normal theory confidence intervals (CIs) log determinant one sample covariance matrices.","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"","code":"logdetCI(cov, n, conf = 0.95, method = 1, bias.adj = TRUE)"},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"cov covariance matrix (named) list covariance matrices, size n sample size, vector sample sizes, one covariance matrix conf confidence level method Three methods provided, based Cai et. al Theorem 1 (method=1), Corollary 1 (method=2) Corollary 2 (method=3), different bias SE values. bias.adj logical; set FALSE exclude bias correction term.","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"data frame one row covariance matrix. lower upper boundaries confidence intervals. columns logdet, bias, se.","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"results translated CI via approximation $$ \\log det( \\widehat{\\Sigma} ) - bias \\pm z_{1 - \\alpha/2} \\times SE $$ \\(\\widehat{\\Sigma}\\) sample estimate population covariance matrix, \\(bias\\) bias correction constant \\(SE\\) width factor confidence interval. \\(bias\\) \\(SE\\) functions sample size, \\(n\\) number variables, \\(p\\). function included provide approximation graphical accuracy use Box's M test equality covariance matrices, boxM associated plot.boxM method. Cai et. al (2015) claim Theorem 1 holds either \\(p\\) fixed \\(p(n)\\) growing \\(n\\), long \\(p(n) \\le n\\). Corollary 1 (method=2) special case \\(p\\) fixed. Corollary 2 (method=3) special case \\(0 \\le p/n < 1\\) fixed. properties CI estimator unknown small moderate sample sizes, seems one available. therefore experimental version package subject change future. \\(bias\\) term offsets confidence interval sample estimate \\( \\log det( \\widehat{\\Sigma} ) \\). \\(p\\) large relative \\(n\\), confidence interval may overlap sample estimate. Strictly speaking, estimator applies MLE covariance matrix \\( \\widehat{\\Sigma}\\), .e., using \\(n\\) rather \\(n-1\\) divisor. factor \\((n-1 / n)\\) yet taken account .","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"Cai, T. T.; Liang, T. & Zhou, H. H. (2015) Law log determinant sample covariance matrix optimal estimation differential entropy high-dimensional Gaussian distributions. Journal Multivariate Analysis, 137, 161-172. doi: 10.1016/j.jmva.2015.02.003","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/logdetCI.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate confidence interval for log determinant of covariance matrices — logdetCI","text":"","code":"data(iris) iris.mod <- lm(as.matrix(iris[,1:4]) ~ iris$Species) iris.boxm <- boxM(iris.mod) cov <- c(iris.boxm$cov, list(pooled=iris.boxm$pooled)) n <- c(rep(50, 3), 150) CI <- logdetCI( cov, n=n, conf=.95, method=1) CI #> logdet bias se lower upper #> setosa -13.067360 -0.20598584 0.4062465 -13.657603 -12.065146 #> versicolor -10.874325 -0.20598584 0.4062465 -11.464568 -9.872111 #> virginica -8.927058 -0.20598584 0.4062465 -9.517301 -7.924844 #> pooled -9.958539 -0.06731274 0.2321101 -10.346154 -9.436299 plot(iris.boxm, xlim=c(-14, -8), main=\"Iris data, Box's M test\", gplabel=\"Species\") arrows(CI$lower, 1:4, CI$upper, 1:4, lwd=3, angle=90, len=.1, code=3) CI <- logdetCI( cov, n=n, conf=.95, method=1, bias.adj=FALSE) CI #> logdet bias se lower upper #> setosa -13.067360 0 0.4062465 -13.863589 -12.271132 #> versicolor -10.874325 0 0.4062465 -11.670553 -10.078097 #> virginica -8.927058 0 0.4062465 -9.723287 -8.130830 #> pooled -9.958539 0 0.2321101 -10.413466 -9.503611 plot(iris.boxm, xlim=c(-14, -8), main=\"Iris data, Box's M test\", gplabel=\"Species\") arrows(CI$lower, 1:4, CI$upper, 1:4, lwd=3, angle=90, len=.1, code=3)"},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":null,"dir":"Reference","previous_headings":"","what":"Classical and Robust Mahalanobis Distances — Mahalanobis","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"function convenience wrapper mahalanobis offering also possibility calculate robust Mahalanobis squared distances using MCD MVE estimators center covariance (cov.rob)","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"","code":"Mahalanobis( x, center, cov, method = c(\"classical\", \"mcd\", \"mve\"), nsamp = \"best\", ... )"},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"x numeric matrix data frame , say, \\(p\\) columns center mean vector data; cov supplied, function simply calls mahalanobis calculate result cov covariance matrix (p x p) data method estimation method used center covariance, one : \"classical\" (product-moment), \"mcd\" (minimum covariance determinant), \"mve\" (minimum volume ellipsoid). nsamp passed cov.rob ... arguments passed cov.rob","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"vector length nrow(x) containing squared distances.","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"missing data row x causes NA returned row.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/Mahalanobis.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Classical and Robust Mahalanobis Distances — Mahalanobis","text":"","code":"summary(Mahalanobis(iris[, 1:4])) #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.3195 2.1871 3.0628 3.9733 4.8053 13.1011 summary(Mahalanobis(iris[, 1:4], method=\"mve\")) #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4461 2.5331 4.0110 5.5585 6.8295 25.7951 summary(Mahalanobis(iris[, 1:4], method=\"mcd\")) #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4352 2.7301 5.7160 19.2207 36.7121 98.0335"},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":null,"dir":"Reference","previous_headings":"","what":"Mark a point null hypothesis in an HE plot — mark.H0","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"utility function draw label point 2D (3D) plot corresponding point null hypothesis tested. useful repeated measure designs null hypotheses within-S effects often correspond (0,0).","code":""},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"","code":"mark.H0( x = 0, y = 0, z = NULL, label, cex = 2, pch = 19, col = \"green3\", lty = 2, pos = 2 )"},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"x Horizontal coordinate H0 y Vertical coordinate H0 z z coordinate H0. NULL, function assumes heplot3d plot drawn. label Text used label point. Defaults expression(H[0]) 2D plots. cex Point text size. 3D plots, function uses size=5*cex call points3d. pch Plot character. Ignored 3D plots. col Color text, character lines lty Line type vertical horizontal reference lines. drawn lty=0. pos Position text. Ignored 3D plots","code":""},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"None. Used side effect drawing current plot.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/mark.H0.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Mark a point null hypothesis in an HE plot — mark.H0","text":"","code":"Vocab.mod <- lm(cbind(grade8,grade9,grade10,grade11) ~ 1, data=VocabGrowth) idata <-data.frame(grade=ordered(8:11)) heplot(Vocab.mod, type=\"III\", idata=idata, idesign=~grade, iterm=\"grade\", main=\"HE plot for Grade effect\") mark.H0()"},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":null,"dir":"Reference","previous_headings":"","what":"Math scores for basic math and word problems — mathscore","title":"Math scores for basic math and word problems — mathscore","text":"Scores two groups school children taught different math teachers tested basic math (BM) problems solving word problems (WP).","code":""},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Math scores for basic math and word problems — mathscore","text":"data frame 12 observations following 3 variables. group factor levels 1 2 BM Basic Math score, numeric vector WP Word Problems score, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Math scores for basic math and word problems — mathscore","text":"Fictitious data","code":""},{"path":"https://friendly.github.io/heplots/reference/mathscore.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Math scores for basic math and word problems — mathscore","text":"","code":"data(mathscore) str(mathscore) #> 'data.frame':\t12 obs. of 3 variables: #> $ group: Factor w/ 2 levels \"1\",\"2\": 1 1 1 1 1 1 2 2 2 2 ... #> $ BM : int 190 170 180 200 150 180 160 190 150 160 ... #> $ WP : int 90 80 80 120 60 70 120 150 90 130 ... math.mod <- lm(cbind(BM, WP) ~ group, data=mathscore) car::Anova(math.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 1 0.86518 28.878 2 9 0.0001213 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # scatterplot with data ellipses car::scatterplot(WP ~ BM | group, data=mathscore, ellipse=list(levels=0.68), smooth=FALSE, pch=c(15,16), legend=list(coords = \"topright\")) # HE plot heplot(math.mod, fill=TRUE, cex=2, cex.lab=1.8, xlab=\"Basic math\", ylab=\"Word problems\")"},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":null,"dir":"Reference","previous_headings":"","what":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"Male participants shown picture one three young women. Pilot work indicated one woman beautiful, another average physical attractiveness, third unattractive. Participants rated woman saw twelve attributes. measures used check manipulation photo.","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"data frame 114 observations following 17 variables. Attr Attractiveness photo, factor levels Beautiful Average Unattractive Crime Type crime, factor levels Burglary (theft items victim's room) Swindle (conned male victim) Years length sentence given defendant mock juror subject Serious rating serious subject thought defendant's crime exciting rating photo 'exciting' calm rating photo 'calm' independent rating photo 'independent' sincere rating photo 'sincere' warm rating photo 'warm' phyattr rating photo 'physical attractiveness' sociable rating photo 'exciting' kind rating photo 'kind' intelligent rating photo 'intelligent' strong rating photo 'strong' sophisticated rating photo 'sophisticated' happy rating photo 'happy' ownPA self-rating subject 'physical attractiveness'","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"Dr. Wuensch's StatData Page, http://core.ecu.edu/psyc/wuenschk/StatData/PLASTER.dat","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"participants told person photo committed Crime, asked rate seriousness crime recommend prison sentence, Years. attractiveness \"defendant\" influence sentence perceived seriousness crime? attractiveness interact nature crime?","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"Data thesis Plaster, M. E. (1989). Inmates mock jurors: effects physical attractiveness upon juridic decisions. M.. thesis, Greenville, NC: East Carolina University.","code":""},{"path":"https://friendly.github.io/heplots/reference/MockJury.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Effects Of Physical Attractiveness Upon Mock Jury Decisions — MockJury","text":"","code":"# manipulation check: test ratings of the photos classified by Attractiveness jury.mod1 <- lm( cbind(phyattr, happy, independent, sophisticated) ~ Attr, data=MockJury) car::Anova(jury.mod1, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 1.7672 48.156 4 109 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod1, main=\"HE plot for manipulation check\") pairs(jury.mod1) if (require(candisc)) { jury.can <- candisc(jury.mod1) jury.can heplot(jury.can, main=\"Canonical HE plot\") } #> Vector scale factor set to 8.817675 # influence of Attr of photo and nature of crime on Serious and Years jury.mod2 <- lm( cbind(Serious, Years) ~ Attr * Crime, data=MockJury) car::Anova(jury.mod2, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Attr 2 0.075607 4.0828 2 108 0.01953 * #> Crime 1 0.004697 0.2513 2 107 0.77824 #> Attr:Crime 2 0.050104 2.7056 2 108 0.07136 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(jury.mod2) # stepdown test (ANCOVA), controlling for Serious jury.mod3 <- lm( Years ~ Serious + Attr * Crime, data=MockJury) car::Anova(jury.mod3) #> Anova Table (Type II tests) #> #> Response: Years #> Sum Sq Df F value Pr(>F) #> Serious 379.49 1 41.1423 3.938e-09 *** #> Attr 74.22 2 4.0230 0.02067 * #> Crime 3.92 1 0.4255 0.51563 #> Attr:Crime 49.30 2 2.6723 0.07370 . #> Residuals 986.95 107 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # need to consider heterogeneous slopes? jury.mod4 <- lm( Years ~ Serious * Attr * Crime, data=MockJury) car::Anova(jury.mod3, jury.mod4) #> Anova Table (Type II tests) #> #> Response: Years #> Sum Sq Df F value Pr(>F) #> Serious 379.49 1 42.9427 2.338e-09 *** #> Attr 74.22 2 4.1991 0.01768 * #> Crime 3.92 1 0.4441 0.50667 #> Attr:Crime 49.30 2 2.7892 0.06616 . #> Residuals 901.38 102 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":null,"dir":"Reference","previous_headings":"","what":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"primary purpose study (Hartman, 2016, Heinrichs et al. (2015)) evaluate patterns levels performance neurocognitive measures among individuals schizophrenia schizoaffective disorder using well-validated, comprehensive neurocognitive battery specifically designed individuals psychosis (Heinrichs et al. (2008))","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"data frame 242 observations following 10 variables. Dx Diagnostic group, factor levels Schizophrenia Schizoaffective Control Speed Speed processing domain T score, numeric vector Attention Attention/Vigilance Domain T score, numeric vector Memory Working memory numeric vector Verbal Verbal Learning Domain T score, numeric vector Visual Visual Learning Domain T score, numeric vector ProbSolv Reasoning/Problem Solving Domain T score, numeric vector SocialCog Social Cognition Domain T score, numeric vector Age Subject age, numeric vector Sex Subject gender, factor levels Female Male","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"Hartman, L. . (2016). Schizophrenia Schizoaffective Disorder: One Condition Two? Unpublished PhD dissertation, York University. Heinrichs, R.W., Pinnock, F., Muharib, E., Hartman, L.., Goldberg, J.O., & McDermid Vaz, S. (2015). Neurocognitive normality schizophrenia revisited. Schizophrenia Research: Cognition, 2 (4), 227-232. doi: 10.1016/j.scog.2015.09.001","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"main interest determining well measures distinguished among groups whether variables distinguished schizophrenia schizoaffective groups. Neurocognitive function assessed using MATRICS Consensus Cognitive Battery (MCCB; Nuechterlein et al., 2008). MCCB consists 10 individually administered tests measure cognitive performance seven domains: speed processing, attention/vigilance, working memory, verbal learning, visual learning, reasoning problem solving, social cognition. clinical sample comprised 116 male female patients met following criteria: 1) diagnosis schizophrenia (n = 70) schizoaffective disorder (n = 46) confirmed Structured Clinical Interview DSM-IV-TR Axis Disorders; 2) outpatient status; 3) history free developmental learning disability; 4) age 18-65; 5) history free neurological endocrine disorder; 6) concurrent DSM-IV-TR diagnosis substance use disorder. Non-psychiatric control participants (n = 146) screened medical psychiatric illness history substance abuse. Patients recruited three outpatient clinics Hamilton, Ontario, Canada. Control participants recruited local newspaper online classified advertisements paid research participation.","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"Heinrichs, R. W., Ammari, N., McDermid Vaz, S. & Miles, . (2008). schizophrenia schizoaffective disorder neuropsychologically distinguishable? Schizophrenia Research, 99, 149-154. Nuechterlein K.H., Green M.F., Kern R.S., Baade L.E., Barch D., Cohen J., Essock S., Fenton W.S., Frese F.J., Gold J.M., Goldberg T., Heaton R., Keefe R.S.E., Kraemer H., Mesholam-Gately R., Seidman L.J., Stover E., Weinberger D.R., Young .S., Zalcman S., Marder S.R. (2008) MATRICS Consensus Cognitive Battery, Part 1: Test selection, reliability, validity. American Journal Psychiatry, 165 (2), 203-213. https://pubmed.ncbi.nlm.nih.gov/18172019/.","code":""},{"path":"https://friendly.github.io/heplots/reference/NeuroCog.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Neurocognitive Measures in Psychiatric Groups — NeuroCog","text":"","code":"library(car) data(NeuroCog) NC.mlm <- lm(cbind( Speed, Attention, Memory, Verbal, Visual, ProbSolv) ~ Dx, data=NeuroCog) Anova(NC.mlm) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Dx 2 0.2992 6.8902 12 470 1.562e-11 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test contrasts contrasts(NeuroCog$Dx) #> [,1] [,2] #> Schizophrenia -0.5 1 #> Schizoaffective -0.5 -1 #> Control 1.0 0 print(linearHypothesis(NC.mlm, \"Dx1\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.2890821 15.85866 6 234 2.8146e-15 *** #> Wilks 1 0.7109179 15.85866 6 234 2.8146e-15 *** #> Hotelling-Lawley 1 0.4066322 15.85866 6 234 2.8146e-15 *** #> Roy 1 0.4066322 15.85866 6 234 2.8146e-15 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(NC.mlm, \"Dx2\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.0063518 0.2493025 6 234 0.95924 #> Wilks 1 0.9936482 0.2493025 6 234 0.95924 #> Hotelling-Lawley 1 0.0063924 0.2493025 6 234 0.95924 #> Roy 1 0.0063924 0.2493025 6 234 0.95924 # pairwise HE plots pairs(NC.mlm, var.cex=1.5) # canonical discriminant analysis if (require(candisc)) { NC.can <- candisc(NC.mlm) NC.can plot(NC.can, ellipse=TRUE, rev.axes=c(TRUE,FALSE), pch=c(7,9,10)) } #> Vector scale factor set to 4.128"},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":null,"dir":"Reference","previous_headings":"","what":"National Longitudinal Survey of Youth Data — NLSY","title":"National Longitudinal Survey of Youth Data — NLSY","text":"dataset come small random sample U.S. National Longitudinal Survey Youth.","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"National Longitudinal Survey of Youth Data — NLSY","text":"data frame 243 observations following 6 variables. math Math achievement test score read Reading achievement test score antisoc score measure child's antisocial behavior, 0:6 hyperact score measure child's hyperactive behavior, 0:5 income yearly income child's father educ years education child's father","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"National Longitudinal Survey of Youth Data — NLSY","text":"dataset derived larger one used Patrick Curran 1997 meeting Society Research Child Development (SRCD). description now exists WayBack Machine, http://web.archive.org/web/20050404145001/http://www.unc.edu/~curran/example.html. details available http://web.archive.org/web/20060830061414/http://www.unc.edu/~curran/srcd-docs/srcdmeth.pdf.","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"National Longitudinal Survey of Youth Data — NLSY","text":"dataset, math read scores taken outcome variables. Among remaining predictors, income educ might considered background variables necessary control . Interest might focused whether behavioural variables antisoc hyperact contribute beyond .","code":""},{"path":"https://friendly.github.io/heplots/reference/NLSY.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"National Longitudinal Survey of Youth Data — NLSY","text":"","code":"library(car) data(NLSY) #examine the data scatterplotMatrix(NLSY, smooth=FALSE) # test control variables by themselves # ------------------------------------- mod1 <- lm(cbind(read,math) ~ income+educ, data=NLSY) Anova(mod1) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> income 1 0.034469 4.2661 2 239 0.015121 * #> educ 1 0.051521 6.4912 2 239 0.001798 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(mod1, fill=TRUE) # test of overall regression coefs <- rownames(coef(mod1))[-1] linearHypothesis(mod1, coefs) #> #> Sum of squares and products for the hypothesis: #> read math #> read 859.6586 1474.716 #> math 1474.7164 2929.558 #> #> Sum of squares and products for error: #> read math #> read 22882.46 12051.69 #> math 12051.69 23763.79 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.1166962 7.435629 4 480 8.1261e-06 *** #> Wilks 2 0.8840660 7.594147 4 478 6.1527e-06 *** #> Hotelling-Lawley 2 0.1302750 7.751361 4 476 4.6699e-06 *** #> Roy 2 0.1232808 14.793699 2 240 8.7377e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(mod1, fill=TRUE, hypotheses=list(\"Overall\"=coefs)) # additional contribution of antisoc + hyperact over income + educ # ---------------------------------------------------------------- mod2 <- lm(cbind(read,math) ~ antisoc + hyperact + income + educ, data=NLSY) Anova(mod2) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> antisoc 1 0.019343 2.3374 2 237 0.098803 . #> hyperact 1 0.014442 1.7364 2 237 0.178380 #> income 1 0.038280 4.7167 2 237 0.009801 ** #> educ 1 0.053152 6.6521 2 237 0.001546 ** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 coefs <- rownames(coef(mod2))[-1] heplot(mod2, fill=TRUE, hypotheses=list(\"Overall\"=coefs, \"mod2|mod1\"=coefs[1:2])) linearHypothesis(mod2, coefs[1:2]) #> #> Sum of squares and products for the hypothesis: #> read math #> read 170.3478 261.2230 #> math 261.2230 516.0188 #> #> Sum of squares and products for error: #> read math #> read 22712.12 11790.46 #> math 11790.46 23247.77 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.0239869 1.444548 4 476 0.218172 #> Wilks 2 0.9760624 1.444284 4 474 0.218264 #> Hotelling-Lawley 2 0.0244741 1.443972 4 472 0.218372 #> Roy 2 0.0221965 2.641385 2 238 0.073351 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(mod2, fill=TRUE, hypotheses=list(\"mod2|mod1\"=coefs[1:2]))"},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":null,"dir":"Reference","previous_headings":"","what":"Oslo Transect Subset Data — Oslo","title":"Oslo Transect Subset Data — Oslo","text":"Oslo data set contains chemical concentrations 332 samples different plant species collected along 120 km transect running city Oslo, Norway. subset OsloTransect data provided rrcov package.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Oslo Transect Subset Data — Oslo","text":"data frame 332 observations following 14 variables. site transect site ID, factor levels 102 103 104 105 106 107 108 109 111 112 113 114 115 116 117 118 119 121 122 123 124 125 126 127 128 129 131 132 133 134 135 136 138 139 141 142 143 144 XC X coordinate, numeric vector YC Y coordinate, numeric vector forest forest type, factor levels birspr mixdec pine sprbir sprpin spruce weather weather type, factor levels cloud moist nice rain litho lithological type, factor levels camsed (Cambro-Silurian sedimentary), gneis_o (Precambrian gneisses - Oslo), gneis_r (- Randsfjord), magm (Magmatic rocks) altitude altitude, numeric vector Cu Copper, numeric vector Fe Iron, numeric vector K Potassium, numeric vector Mg Magnesium, numeric vector Mn Manganese, numeric vector P Lead, numeric vector Zn Zinc, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Oslo Transect Subset Data — Oslo","text":"Reimann, C., Arnoldussen, ., Boyd, R., Finne, T.E., Koller, F., Nordgulen, Oe., Englmaier, P. (2007) Element contents leaves four plant species (birch, mountain ash, fern spruce) along anthropogenic geogenic concentration gradients, Science Total Environment, 377, 416-433.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Oslo Transect Subset Data — Oslo","text":"OsloTransect contains 360 observations, 9 observations per site. 7 chemical elements retained 25 contained OsloTransect data, log-transformed, following Todorov Filzmoser (2009). complete cases variables retained, two lithological types low frequency removed, leaving 332 observations.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Oslo Transect Subset Data — Oslo","text":"Todorov V. Filzmoser P. (2009) Robust statistic one-way MANOVA, submitted Journal Environmetrics.","code":""},{"path":"https://friendly.github.io/heplots/reference/Oslo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Oslo Transect Subset Data — Oslo","text":"","code":"data(Oslo) table(Oslo$litho) #> #> camsed gneis_o gneis_r magm #> 98 89 32 113 Oslo.mod <- lm(cbind(Cu, K, Mg, Mn, P, Zn) ~ litho, data=Oslo) car::Anova(Oslo.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> litho 3 0.24655 4.8503 18 975 1.503e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(Oslo.mod, var=c(\"Cu\", \"Mn\")) pairs(Oslo.mod) if (FALSE) { if(require(candisc)) { Oslo.can <- candisc(Oslo.mod) Oslo.can heplot(Oslo.can) if(requireNamespace(\"rgl\")){ heplot3d(Oslo.can, shade=TRUE, wire=FALSE, alpha=0.5, var.col=\"red\") } } }"},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise HE Plots — pairs.mlm","title":"Pairwise HE Plots — pairs.mlm","text":"function (form mlm method generic pairs function) constructs ``matrix'' pairwise plots (see heplot) multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise HE Plots — pairs.mlm","text":"","code":"# S3 method for mlm pairs( x, variables, var.labels, var.cex = 2, type = c(\"II\", \"III\", \"2\", \"3\"), idata = NULL, idesign = NULL, icontrasts = NULL, imatrix = NULL, iterm = NULL, manova, offset.axes = 0.05, digits = getOption(\"digits\") - 1, fill = FALSE, fill.alpha = 0.3, ... )"},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise HE Plots — pairs.mlm","text":"x object class mlm. variables indices names three response variables plotted; defaults responses. var.labels labels variables plotted diagonal panels; defaults names response variables. var.cex character expansion variable labels. type type sum--squares--products matrices compute; one \"II\", \"III\", \"2\", \"3\", \"II\" default (\"2\" synonym). idata optional data frame giving factor factors defining intra-subject model multivariate repeated-measures data. See Details Anova explanation intra-subject design explanation arguments relating intra-subject factors. idesign one-sided model formula using ``data'' idata specifying intra-subject design repeated measure models. icontrasts names contrast-generating functions applied default factors ordered factors, respectively, within-subject ``data''; contrasts must produce intra-subject model matrix different terms orthogonal. default c(\"contr.sum\", \"contr.poly\"). imatrix lieu idata idesign, can specify intra-subject design matrix directly via imatrix, form list named elements. element gives columns within-subject model matrix intra-subject term tested, must many rows responses; columns within-subject model matrix different terms must mutually orthogonal. iterm repeated measures designs, must specify one intra-subject term (character string) select SSPE (E) matrix used plot. Hypothesis terms plotted include iterm effect well interactions iterm terms. manova optional Anova.mlm object model; absent MANOVA computed. Specifying argument can therefore save computation repeated calls. offset.axes proportion extend axes direction; defaults 0.05. digits number significant digits axis end-labels; taken \"digits\" option. fill logical vector indicating whether ellipse filled . first value used error ellipse, rest --- possibly recycled --- hypothesis ellipses; single fill value can given. Defaults FALSE backward compatibility. See Details heplot fill.alpha Alpha transparency filled ellipses, numeric scalar vector values within [0,1], 0 means fully transparent 1 means fully opaque. Defaults 0.3. ... arguments pass heplot, used draw panel display.","code":""},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Pairwise HE Plots — pairs.mlm","text":"Friendly, M. (2006). Data Ellipses, Plots Reduced-Rank Displays Multivariate Linear Models: SAS Software Examples Journal Statistical Software, 17(6), 1-42. https://www.jstatsoft.org/v17/i06/ Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421-444. http://datavis.ca/papers/jcgs-heplots.pdf","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise HE Plots — pairs.mlm","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/pairs.mlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pairwise HE Plots — pairs.mlm","text":"","code":"# ANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) # View all pairs, with ellipse for all 5 regressors pairs(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")))"},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":null,"dir":"Reference","previous_headings":"","what":"Father Parenting Competence — Parenting","title":"Father Parenting Competence — Parenting","text":"data, exercise given Meyers et al. (2006) relates 60 fathers assessed three subscales Perceived Parenting Competence Scale. fathers selected three groups: () fathers child disabilities; (b) fathers physically disabled child; (c) fathers mentally disabled child.","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Father Parenting Competence — Parenting","text":"data frame 60 observations following 4 variables. group factor levels Normal Physical Disability Mental Disability caring caretaking responsibilities, numeric vector emotion emotional support provided child, numeric vector play recreational time spent child, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Father Parenting Competence — Parenting","text":"Meyers, L. S., Gamst, G, & Guarino, . J. (2006). Applied Multivariate Research: Design Interpretation, Thousand Oaks, CA: Sage Publications, https://studysites.sagepub.com/amrStudy/, Exercises 10B.","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Father Parenting Competence — Parenting","text":"scores response variables discrete.","code":""},{"path":"https://friendly.github.io/heplots/reference/Parenting.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Father Parenting Competence — Parenting","text":"","code":"data(Parenting) require(car) # fit the MLM parenting.mod <- lm(cbind(caring, emotion, play) ~ group, data=Parenting) car::Anova(parenting.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.94836 16.833 6 112 8.994e-14 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # Box's M test boxM(parenting.mod) #> #> \tBox's M-test for Homogeneity of Covariance Matrices #> #> data: Y #> Chi-Sq (approx.) = 28.343, df = 12, p-value = 0.004927 #> plot(boxM(parenting.mod)) parenting.mod <- lm(cbind(caring, emotion, play) ~ group, data=Parenting) car::Anova(parenting.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.94836 16.833 6 112 8.994e-14 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test contrasts print(linearHypothesis(parenting.mod, \"group1\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.5210364 19.94376 3 55 7.1051e-09 *** #> Wilks 1 0.4789636 19.94376 3 55 7.1051e-09 *** #> Hotelling-Lawley 1 1.0878413 19.94376 3 55 7.1051e-09 *** #> Roy 1 1.0878413 19.94376 3 55 7.1051e-09 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(parenting.mod, \"group2\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.4293815 13.79555 3 55 8.0113e-07 *** #> Wilks 1 0.5706185 13.79555 3 55 8.0113e-07 *** #> Hotelling-Lawley 1 0.7524844 13.79555 3 55 8.0113e-07 *** #> Roy 1 0.7524844 13.79555 3 55 8.0113e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(parenting.mod) # display tests of contrasts hyp <- list(\"N:MP\" = \"group1\", \"M:P\" = \"group2\") heplot(parenting.mod, hypotheses=hyp) # make a prettier plot heplot(parenting.mod, hypotheses=hyp, asp=1, fill=TRUE, fill.alpha=c(0.3,0.1), col=c(\"red\", \"blue\"), lty=c(0,0,1,1), label.pos=c(1,1,3,2), cex=1.4, cex.lab=1.4, lwd=3) pairs(parenting.mod, fill=TRUE, fill.alpha=c(0.3, 0.1)) if (FALSE) { heplot3d(parenting.mod, wire=FALSE) }"},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":null,"dir":"Reference","previous_headings":"","what":"Plastic Film Data — Plastic","title":"Plastic Film Data — Plastic","text":"experiment conducted determine optimum conditions extruding plastic film. Three responses measured relation two factors, rate extrusion amount additive.","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Plastic Film Data — Plastic","text":"data frame 20 observations following 5 variables. tear numeric vector: tear resistance gloss numeric vector: film gloss opacity numeric vector: film opacity rate factor representing change rate extrusion levels Low (-10%), High (10%) additive factor levels Low (1.0%), High (1.5%)","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Plastic Film Data — Plastic","text":"Johnson, R.. & Wichern, D.W. (1992). Applied Multivariate Statistical Analysis, 3rd ed., Prentice-Hall. Example 6.12 (p. 266).","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plastic Film Data — Plastic","text":"Krzanowski, W. J. (1988). Principles Multivariate Analysis. User's Perspective. Oxford. (p. 381)","code":""},{"path":"https://friendly.github.io/heplots/reference/Plastic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plastic Film Data — Plastic","text":"","code":"str(Plastic) #> 'data.frame':\t20 obs. of 5 variables: #> $ tear : num 6.5 6.2 5.8 6.5 6.5 6.9 7.2 6.9 6.1 6.3 ... #> $ gloss : num 9.5 9.9 9.6 9.6 9.2 9.1 10 9.9 9.5 9.4 ... #> $ opacity : num 4.4 6.4 3 4.1 0.8 5.7 2 3.9 1.9 5.7 ... #> $ rate : Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 1 1 1 1 1 ... #> $ additive: Factor w/ 2 levels \"Low\",\"High\": 1 1 1 1 1 2 2 2 2 2 ... plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) car::Anova(plastic.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> rate 1 0.61814 7.5543 3 14 0.003034 ** #> additive 1 0.47697 4.2556 3 14 0.024745 * #> rate:additive 1 0.22289 1.3385 3 14 0.301782 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 pairs(plastic.mod)"},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot for Box's M test and generalizations — plot.boxM","title":"Plot for Box's M test and generalizations — plot.boxM","text":"function creates simple dot chart showing contributions (log determinants) various groups Box's M test equality covariance matrices. important virtue plots can show groups differ , pooled covariance matrix using scalar like \\(ln | S |\\). way, can suggest specific questions hypotheses regarding equality covariance matrices, analogous use contrasts linear hypotheses testing differences among group mean vectors. Box's M test based specific function (log determinant) covariance matrices groups compared pooled covariance matrix, function also also allow plots measures based eigenvalues covariance matrices. Confidence intervals available default Box M test, using =\"logDet\".","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot for Box's M test and generalizations — plot.boxM","text":"","code":"# S3 method for boxM plot( x, gplabel = NULL, which = c(\"logDet\", \"product\", \"sum\", \"precision\", \"max\"), log = which == \"product\", pch = c(16, 15), cex = c(2, 2.5), col = c(\"blue\", \"red\"), rev = FALSE, xlim, conf = 0.95, method = 1, bias.adj = TRUE, lwd = 2, ... )"},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot for Box's M test and generalizations — plot.boxM","text":"x \"boxM\" object resulting boxM gplabel character string used label group factor. Measure plotted. default, \"logDet\", standard plot. values : \"product\", \"sum\", \"precision\" \"max\" log logical; TRUE, log measure plotted. default, ==\"product\", produces plot equivalent plot \"logDet\". pch vector two point symbols use individual groups pooled data, respectively cex character size point symbols, vector length two groups pooled data, respectively col colors point symbols, vector length two groups pooled data rev logical; TRUE, order groups reversed vertical axis. xlim x limits plot conf coverage approximate confidence intervals, 0 <= conf < 1 ; use conf=0 suppress method confidence interval method; see logdetCI bias.adj confidence interval bias adjustment; see logdetCI lwd line width confidence interval ... Arguments passed dotchart.","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plot for Box's M test and generalizations — plot.boxM","text":"Friendly, M., & Sigal, M. (2018). Visualizing Tests Equality Covariance Matrices. American Statistician, 72(4); doi: 10.1080/00031305.2018.1497537 . Online: https://www.datavis.ca/papers/EqCov-TAS.pdf.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot for Box's M test and generalizations — plot.boxM","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.boxM.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot for Box's M test and generalizations — plot.boxM","text":"","code":"# Iris data res <- boxM(iris[, 1:4], iris[, \"Species\"]) plot(res, gplabel=\"Species\") # Skulls data skulls.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) skulls.boxm <- boxM(skulls.mod) plot(skulls.boxm, gplabel=\"Epoch\") plot(skulls.boxm, gplabel=\"Epoch\", bias.adj=FALSE) # other measures plot(skulls.boxm, which=\"product\", gplabel=\"Epoch\", xlim=c(10,14)) plot(skulls.boxm, which=\"sum\", gplabel=\"Epoch\") plot(skulls.boxm, which=\"precision\", gplabel=\"Epoch\") plot(skulls.boxm, which=\"max\", gplabel=\"Epoch\")"},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot observation weights from a robust multivariate linear models — plot.robmlm","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"Creates index plot observation weights assigned last iteration robmlm. Observations low weights large residual squared distances potential multivariate outliers respect fitted model.","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"","code":"# S3 method for robmlm plot( x, labels, id.weight = 0.7, id.pos = 4, pch = 19, col = palette()[1], cex = par(\"cex\"), segments = FALSE, xlab = \"Case index\", ylab = \"Weight in robust MANOVA\", ... )"},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"x \"robmlm\" object labels Observation labels; specified, uses rownames original data id.weight Threshold identifying observations small weights id.pos Position observation label relative point pch Point symbol(s); can vector length equal number observations data frame col Point color(s) cex Point character size(s) segments logical; TRUE, draw line segments 1.o point xlab x axis label ylab y axis label ... arguments passed plot","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"Returns invisibly weights observations labeled plot","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/plot.robmlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot observation weights from a robust multivariate linear models — plot.robmlm","text":"","code":"data(Skulls) sk.rmod <- robmlm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) plot(sk.rmod, col=Skulls$epoch) axis(side=3, at=15+seq(0,120,30), labels=levels(Skulls$epoch), cex.axis=1) # Pottery data data(Pottery, package = \"carData\") pottery.rmod <- robmlm(cbind(Al,Fe,Mg,Ca,Na)~Site, data=Pottery) plot(pottery.rmod, col=Pottery$Site, segments=TRUE) # SocialCog data data(SocialCog) SC.rmod <- robmlm(cbind( MgeEmotions, ToM, ExtBias, PersBias) ~ Dx, data=SocialCog) plot(SC.rmod, col=SocialCog$Dx, segments=TRUE)"},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":null,"dir":"Reference","previous_headings":"","what":"Chemical Analysis of Romano-British Pottery — Pottery2","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"Results chemical analyses 48 specimens Romano-British pottery published Tubb et al. (1980). numbers percentage various metal oxides found sample elements concentrations greater 0.01%. original data set Tubb et al. (1980), contrast Pottery.","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"data frame 48 observations following 12 variables. Region factor levels Gl NF Wales Site factor levels AshleyRails Caldicot Gloucester IsleThorns Llanedryn Kiln factor levels 1 2 3 4 5 Al amount aluminum oxide, \\(Al_2O_3\\) Fe amount iron oxide, \\(Fe_2O_3\\) Mg amount magnesium oxide, MgO Ca amount calcium oxide, CaO Na amount sodium oxide, \\(Na_2O\\) K amount potassium oxide, \\(K_2O\\) Ti amount titanium oxide, \\(TiO_2\\) Mn amount manganese oxide, MnO Ba amount BaO","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"Originally slightly modified files David Carlson, now RBPottery.","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"specimens identified rownames data frame. Kiln indicates kiln site pottery found; Site gives location names sites. kiln sites come three Regions, (\"Gl\"=1, \"Wales\"=(2, 3), \"NF\"=(4, 5)), full names \"Gloucester\", \"Wales\", \"New Forrest\". variable Kiln comes pre-supplied contrasts test interesting hypotheses related Site Region.","code":""},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"Baxter, M. J. 2003. Statistics Archaeology. Arnold, London. Carlson, David L. 2017. Quantitative Methods Archaeology Using R. Cambridge University Press, pp 247-255, 335-342. Tubb, ., . J. Parker, G. Nickless. 1980. Analysis Romano-British Pottery Atomic Absorption Spectrophotometry. Archaeometry, 22, 153-171.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/Pottery2.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Chemical Analysis of Romano-British Pottery — Pottery2","text":"","code":"library(car) data(Pottery2) # contrasts for Kiln correspond to between Region [,1:2] and within Region [,3:4] contrasts(Pottery2$Kiln) #> G.WN W.N W2.W3 NF4.NF5 #> 1 4 0 0 0 #> 2 -1 1 1 0 #> 3 -1 1 -1 0 #> 4 -1 -1 0 1 #> 5 -1 -1 0 -1 pmod <-lm(cbind(Al,Fe,Mg,Ca,Na,K,Ti,Mn,Ba)~Kiln, data=Pottery2) car::Anova(pmod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Kiln 4 2.2268 5.3025 36 152 1.391e-13 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # extract coefficient names for linearHypotheses coefs <- rownames(coef(pmod))[-1] # test differences among regions linearHypothesis(pmod, coefs[1:2]) #> #> Sum of squares and products for the hypothesis: #> Al Fe Mg Ca Na K #> Al 151.65057276 -40.53893273 -90.32962804 6.93651249 1.398166750 -49.20000025 #> Fe -40.53893273 233.23920836 52.50699833 35.47123205 11.719323014 45.78071096 #> Mg -90.32962804 52.50699833 57.42066307 0.62797642 0.709273843 33.46637847 #> Ca 6.93651249 35.47123205 0.62797642 6.58156100 2.093516673 3.22560998 #> Na 1.39816675 11.71932301 0.70927384 2.09351667 0.670448844 1.32056847 #> K -49.20000025 45.78071096 33.46637847 3.22560998 1.320568467 20.74890960 #> Ti 9.24314119 -5.42115551 -5.88182924 -0.07236204 -0.075203080 -3.43159076 #> Mn -2.43619545 2.85554855 1.73219182 0.25851436 0.097397909 1.11376927 #> Ba 0.03092721 0.04339183 -0.01183411 0.01008451 0.003094097 -0.00245479 #> Ti Mn Ba #> Al 9.243141192 -2.436195e+00 3.092721e-02 #> Fe -5.421155511 2.855549e+00 4.339183e-02 #> Mg -5.881829237 1.732192e+00 -1.183411e-02 #> Ca -0.072362038 2.585144e-01 1.008451e-02 #> Na -0.075203080 9.739791e-02 3.094097e-03 #> K -3.431590759 1.113769e+00 -2.454790e-03 #> Ti 0.602509224 -1.777282e-01 1.199732e-03 #> Mn -0.177728182 6.098404e-02 1.518182e-05 #> Ba 0.001199732 1.518182e-05 1.830653e-05 #> #> Sum of squares and products for error: #> Al Fe Mg Ca Na K #> Al 96.20132468 21.11225325 5.506287013 -2.096574026 0.569593506 10.55401948 #> Fe 21.11225325 19.88942753 2.157729870 -0.685039740 0.918994935 4.50978519 #> Mg 5.50628701 2.15772987 16.303520519 0.274558961 0.090970260 5.88807922 #> Ca -2.09657403 -0.68503974 0.274558961 1.760672078 -0.025830519 0.24870156 #> Na 0.56959351 0.91899494 0.090970260 -0.025830519 0.735820130 0.56027961 #> K 10.55401948 4.50978519 5.888079221 0.248701558 0.560279610 14.63247117 #> Ti 0.96768701 1.99152987 0.041040519 -0.120881039 0.062710260 0.32167922 #> Mn 0.37119545 0.26490145 -0.131911818 0.009635636 0.059562091 0.10489073 #> Ba 0.07495727 0.02567727 -0.007025091 0.004785182 0.004963455 0.01005364 #> Ti Mn Ba #> Al 0.967687013 0.371195455 0.0749572727 #> Fe 1.991529870 0.264901455 0.0256772727 #> Mg 0.041040519 -0.131911818 -0.0070250909 #> Ca -0.120881039 0.009635636 0.0047851818 #> Na 0.062710260 0.059562091 0.0049634545 #> K 0.321679221 0.104890727 0.0100536364 #> Ti 1.368520519 0.015238182 0.0037669091 #> Mn 0.015238182 0.089093964 0.0030718182 #> Ba 0.003766909 0.003071818 0.0004249909 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 1.86181 53.88966 18 72 < 2.22e-16 *** #> Wilks 2 0.00383 58.97836 18 70 < 2.22e-16 *** #> Hotelling-Lawley 2 34.11493 64.43932 18 68 < 2.22e-16 *** #> Roy 2 25.10339 100.41357 9 36 < 2.22e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test differences within regions B, C linearHypothesis(pmod, coefs[3:4]) #> #> Sum of squares and products for the hypothesis: #> Al Fe Mg Ca Na K #> Al 3.1562321 1.8776786 1.6154857 -0.19634643 0.31648036 -0.74230357 #> Fe 1.8776786 1.7032143 1.6611429 -0.16853571 0.33919643 -1.02896429 #> Mg 1.6154857 1.6611429 1.6629886 -0.16227714 0.34223429 -1.08144286 #> Ca -0.1963464 -0.1685357 -0.1622771 0.01677929 -0.03300607 0.09801071 #> Na 0.3164804 0.3391964 0.3422343 -0.03300607 0.07059089 -0.22565893 #> K -0.7423036 -1.0289643 -1.0814429 0.09801071 -0.22565893 0.76313929 #> Ti 0.3105857 0.2461429 0.2322686 -0.02473714 0.04694429 -0.13454286 #> Mn 0.0667875 0.0777250 0.0795600 -0.00750750 0.01647875 -0.05377750 #> Ba 0.0062575 0.0054250 0.0052360 -0.00053950 0.00106575 -0.00317750 #> Ti Mn Ba #> Al 0.31058571 0.06678750 0.00625750 #> Fe 0.24614286 0.07772500 0.00542500 #> Mg 0.23226857 0.07956000 0.00523600 #> Ca -0.02473714 -0.00750750 -0.00053950 #> Na 0.04694429 0.01647875 0.00106575 #> K -0.13454286 -0.05377750 -0.00317750 #> Ti 0.03698857 0.01055000 0.00079400 #> Mn 0.01055000 0.00387575 0.00024275 #> Ba 0.00079400 0.00024275 0.00001735 #> #> Sum of squares and products for error: #> Al Fe Mg Ca Na K #> Al 96.20132468 21.11225325 5.506287013 -2.096574026 0.569593506 10.55401948 #> Fe 21.11225325 19.88942753 2.157729870 -0.685039740 0.918994935 4.50978519 #> Mg 5.50628701 2.15772987 16.303520519 0.274558961 0.090970260 5.88807922 #> Ca -2.09657403 -0.68503974 0.274558961 1.760672078 -0.025830519 0.24870156 #> Na 0.56959351 0.91899494 0.090970260 -0.025830519 0.735820130 0.56027961 #> K 10.55401948 4.50978519 5.888079221 0.248701558 0.560279610 14.63247117 #> Ti 0.96768701 1.99152987 0.041040519 -0.120881039 0.062710260 0.32167922 #> Mn 0.37119545 0.26490145 -0.131911818 0.009635636 0.059562091 0.10489073 #> Ba 0.07495727 0.02567727 -0.007025091 0.004785182 0.004963455 0.01005364 #> Ti Mn Ba #> Al 0.967687013 0.371195455 0.0749572727 #> Fe 1.991529870 0.264901455 0.0256772727 #> Mg 0.041040519 -0.131911818 -0.0070250909 #> Ca -0.120881039 0.009635636 0.0047851818 #> Na 0.062710260 0.059562091 0.0049634545 #> K 0.321679221 0.104890727 0.0100536364 #> Ti 1.368520519 0.015238182 0.0037669091 #> Mn 0.015238182 0.089093964 0.0030718182 #> Ba 0.003766909 0.003071818 0.0004249909 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 0.3584150 0.8733388 18 72 0.610701 #> Wilks 2 0.6493732 0.9370114 18 70 0.538962 #> Hotelling-Lawley 2 0.5279530 0.9972445 18 68 0.473824 #> Roy 2 0.5041642 2.0166569 9 36 0.065976 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(pmod, fill=c(TRUE,FALSE), hypotheses=list(\"Region\" =coefs[1:2], \"WithinBC\"=coefs[3:4])) # all pairwise views; note that Ba shows no effect pairs(pmod, fill=c(TRUE,FALSE)) # canonical view, via candisc::heplot if (require(candisc)) { # canonical analysis: how many dimensions? (pcan <- candisc(pmod)) heplot(pcan, scale=18, fill=c(TRUE,FALSE), var.col=\"darkgreen\", var.lwd=2, var.cex=1.5) if (FALSE) { heplot3d(pcan, scale=8) } }"},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":null,"dir":"Reference","previous_headings":"","what":"Response Speed in a Probe Experiment — Probe","title":"Response Speed in a Probe Experiment — Probe","text":"Data probe experiment testing whether immediate memory sentences influenced phrase structure sentence. data sets come Timm (1975), Ex. 3.14 Ex. 3.16 (p.244)","code":""},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Response Speed in a Probe Experiment — Probe","text":"Probe1: data frame 11 observations following 5 variables. p1 speed position 1 p2 speed position 2 p3 speed position 3 p4 speed position 4 p5 speed position 5 Probe2: data frame 20 observations following 6 variables. stm Short term memory capacity: factor levels High Low p1 speed position 1 p2 speed position 2 p3 speed position 3 p4 speed position 4 p5 speed position 5","code":""},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Response Speed in a Probe Experiment — Probe","text":"Timm, N. (1975) Multivariate analysis, applications education psychology Brooks/Cole.","code":""},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Response Speed in a Probe Experiment — Probe","text":"Procedure: Subjects listened tape-recorded sentences. sentence followed \"probe word\" one 5 positions within sentence. subject respond word immediately followed probe word sentence. dependent measure response speed = k(1/reaction time). Sample sentence: Probe2, two groups subjects, pre-selected test short term memory. data sets (fictitious) used examples single-sample two-sample profile analysis simple repeated measure designs structured contrasts.","code":"* The tall man met the young girl who got the new hat. Pos'ns: 1 2 3 4 5 Function: ADJ1 SUBJ ADJ2 OBJ REL.PN"},{"path":"https://friendly.github.io/heplots/reference/Probe.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Response Speed in a Probe Experiment — Probe","text":"","code":"data(Probe1) boxplot(Probe1) pmod1 <- lm(cbind(p1,p2,p3,p4,p5) ~ 1, data=Probe1) idata <- data.frame(position=factor(1:5)) library(car) (pmod1.aov <- car::Anova(pmod1, idata=idata, idesign=~position)) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.96312 261.15 1 10 1.705e-08 *** #> position 1 0.75177 5.30 4 7 0.02767 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # using default contrasts (p5 as reference level) heplot(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position) pairs(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position) # contrasts for substantative hypotheses regarding # sentence position effects C <- matrix(c( 1, 1, -1, -1, 0, 1, -1, 1, -1, 0, 1, -1, -1, 1, 0, 1, 1, 1, 1, -4), 5, 4) rownames(C) <- paste(\"p\", 1:5, sep=\"\") colnames(C) <- c(\"SubPred\", \"AdjNoun\", \"SPxAN\", \"RelPN\") contrasts(idata$position)<- C (pmod1.aov <- car::Anova(pmod1, idata=idata, idesign=~position)) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.96312 261.15 1 10 1.705e-08 *** #> position 1 0.75177 5.30 4 7 0.02767 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position) pairs(pmod1, manova=pmod1.aov, iterm=\"position\", type=\"III\", idata=idata, idesign=~position)"},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":null,"dir":"Reference","previous_headings":"","what":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"data study weight gain, investigators randomly assigned 30 rats three treatment groups: treatment 1 control (additive); treatments 2 3 consisted two different additives (thiouracil thyroxin respectively) rats drinking water. Weight measured baseline (week 0) weeks 1, 2, 3, 4. Due accident beginning study, data 3 rats thyroxin group unavailable.","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"data frame 27 observations following 6 variables. trt factor levels Control Thiouracil Thyroxin wt0 Weight Week 0 (baseline weight) wt1 Weight Week 1 wt2 Weight Week 2 wt3 Weight Week 3 wt4 Weight Week 4","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"Originally Box (1950), Table D (page 389), values weeks 1-4 recorded gain weight week. Fitzmaurice, G. M. Laird, N. M. Ware, J. H (2004). Applied Longitudinal Analysis, New York, NY: Wiley-Interscience. https://rdrr.io/rforge/ALA/.","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"trt factor comes supplied contrasts comparing Control Thiouracil Thyroxin.","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"Box, G.E.P. (1950). Problems analysis growth wear curves. Biometrics, 6, 362-389. Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 .","code":""},{"path":"https://friendly.github.io/heplots/reference/RatWeight.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Weight Gain in Rats Exposed to Thiouracil and Thyroxin — RatWeight","text":"","code":"data(RatWeight) contrasts(RatWeight$trt) #> [,1] [,2] #> Control -1 -1 #> Thiouracil 1 0 #> Thyroxin 0 1 rat.mod <- lm(cbind(wt0, wt1, wt2, wt3, wt4) ~ trt, data=RatWeight) rat.mod #> #> Call: #> lm(formula = cbind(wt0, wt1, wt2, wt3, wt4) ~ trt, data = RatWeight) #> #> Coefficients: #> wt0 wt1 wt2 wt3 wt4 #> (Intercept) 54.75714 76.88571 102.21905 123.67143 149.15238 #> trt1 -0.05714 -0.58571 -6.41905 -15.47143 -25.15238 #> trt2 0.81429 -1.02857 2.63810 9.04286 13.70476 #> idata <- data.frame(week = ordered(0:4)) car::Anova(rat.mod, idata=idata, idesign=~week, test=\"Roy\") #> #> Type II Repeated Measures MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 140.617 3374.8 1 24 < 2.2e-16 *** #> trt 2 0.657 7.9 2 24 0.002334 ** #> week 1 56.188 295.0 4 21 < 2.2e-16 *** #> trt:week 2 1.979 10.9 4 22 5.059e-05 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # quick look at between group effects pairs(rat.mod) # between-S, baseline & week 4 heplot(rat.mod, col=c(\"red\", \"blue\", \"green3\", \"green3\"), variables=c(1,5), hypotheses=c(\"trt1\", \"trt2\"), main=\"Rat weight data, Between-S effects\") # within-S heplot(rat.mod, idata=idata, idesign=~week, iterm=\"week\", col=c(\"red\", \"blue\", \"green3\"), # hypotheses=c(\"trt1\", \"trt2\"), main=\"Rat weight data, Within-S effects\")"},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":null,"dir":"Reference","previous_headings":"","what":"Reaction Time Data — ReactTime","title":"Reaction Time Data — ReactTime","text":"Data Maxwell Delaney (1990, p. 497) representing reaction times 10 subjects task visual stimuli tilted 0, 4, 8 degrees; noise absent present. subject responded 3 tilt x 2 noise = 6 conditions. data thus comprise repeated measure design two within-S factors.","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Reaction Time Data — ReactTime","text":"data frame 10 observations giving reaction time 6 conditions. deg0NA numeric vector deg4NA numeric vector deg8NA numeric vector deg0NP numeric vector deg4NP numeric vector deg8NP numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Reaction Time Data — ReactTime","text":"Baron, J. Li, Y. (2003). Notes use R psychology experiments questionnaires, https://cran.r-project.org/doc/contrib/Baron-rpsych.pdf","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Reaction Time Data — ReactTime","text":"Michael Friendly (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Maxwell, S. E. & Delaney, H. D. (1990). Designing Experiments Analyzing Data: model comparison perspective. Pacific Grove, CA: Brooks/Cole.","code":""},{"path":"https://friendly.github.io/heplots/reference/ReactTime.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reaction Time Data — ReactTime","text":"","code":"data(ReactTime) (RT.mod <- lm(as.matrix(ReactTime)~1)) #> #> Call: #> lm(formula = as.matrix(ReactTime) ~ 1) #> #> Coefficients: #> deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP #> (Intercept) 462 510 528 492 660 762 #> # within-S factors within <- expand.grid(tilt=ordered(c(0,4,8)), noise=c(\"NA\", \"NP\")) car::Anova(RT.mod, idata=within, idesign=~tilt * noise) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.98518 598.45 1 9 1.527e-09 *** #> tilt 1 0.88760 31.59 2 8 0.0001596 *** #> noise 1 0.78955 33.77 1 9 0.0002560 *** #> tilt:noise 1 0.91822 44.91 2 8 4.472e-05 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(RT.mod, idata=within, idesign=~tilt * noise, iterm=\"tilt\") #> Note: model has only an intercept; equivalent type-III tests substituted. # plotting means and std errors directly levels <- expand.grid(Tilt=c(0,4,8), noise=c(\"NA\", \"NP\")) (means.df <- data.frame(levels, mean=colMeans(ReactTime), se=sqrt(diag(var(ReactTime)))/9)) #> Tilt noise mean se #> deg0NA 0 NA 462 6.324555 #> deg4NA 4 NA 510 9.558139 #> deg8NA 8 NA 528 8.777075 #> deg0NP 0 NP 492 9.838197 #> deg4NP 4 NP 660 12.171612 #> deg8NP 8 NP 762 12.976712 with(means.df, { plot(Tilt, mean, type=\"n\", main=\"Reaction Time data\", xlab=\"Tilt\", ylab=\"Reaction time\") colors <- rep(c(\"red\", \"blue\"), each=3) pts <- rep(c(15, 16), each=3) lines(Tilt[1:3], mean[1:3], col=\"red\", lwd=2) lines(Tilt[4:6], mean[4:6], col=\"blue\", lwd=2) points(Tilt, mean, pch=pts, col=colors, cex=1.2) arrows(Tilt, mean-se, Tilt, mean+se, angle=90, code=3, col=colors, len=.05, lwd=2) # labels at last point, in lieu of legend text(Tilt[3], mean[3]-10, labels=\"NA\", col=\"red\", pos=1) text(Tilt[6], mean[6]-10, labels=\"NP\", col=\"blue\", pos=1) } )"},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":null,"dir":"Reference","previous_headings":"","what":"Robust Fitting of Multivariate Linear Models — robmlm","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"Fit multivariate linear model robust regression using simple M estimator.","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"","code":"robmlm(X, ...) # S3 method for default robmlm( X, Y, w, P = 2 * pnorm(4.685, lower.tail = FALSE), tune, max.iter = 100, psi = psi.bisquare, tol = 1e-06, initialize, verbose = FALSE, ... ) # S3 method for formula robmlm( formula, data, subset, weights, na.action, model = TRUE, contrasts = NULL, ... ) # S3 method for robmlm print(x, ...) # S3 method for robmlm summary(object, ...) # S3 method for summary.robmlm print(x, ...)"},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"X default method, model matrix, including constant (present) ... arguments, passed . particular relevant control arguments can passed robmlm.default method. Y default method, response matrix w prior weights P two-tail probability, find cutoff quantile chisq (tuning constant); default set bisquare weight function tune tuning constant (given directly) max.iter maximum number iterations psi robustness weight function; psi.bisquare default tol convergence tolerance, maximum relative change coefficients initialize modeling function find start values coefficients, equation--equation; absent WLS (lm.wfit) used verbose show iteration history? (TRUE FALSE) formula formula form cbind(y1, y2, ...) ~ x1 + x2 + .... data data frame variables specified formula preferentially taken. subset index vector specifying cases used fitting. weights vector prior weights case. na.action function specify action taken NAs found. 'factory-fresh' default action R na.omit, can changed options(na.action=). model model frame returned object? contrasts optional contrast specifications; see lm details. x robmlm object object robmlm object","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"object class \"robmlm\" inheriting c(\"mlm\", \"lm\"). means returned \"robmlm\" contains components \"mlm\" objects described lm, plus following: weights final observation weights iterations number iterations converged logical: IWLS process converge? generic accessor functions coefficients, effects, fitted.values residuals extract various useful features value returned robmlm.","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"S3 methods designed provide specification class robust methods extend mlms, therefore compatible mlm extensions, including Anova heplot. Fitting done iterated re-weighted least squares (IWLS), using weights based Mahalanobis squared distances current residuals origin, scaling (covariance) matrix calculated cov.trob. design methods loosely modeled rlm. internal vcov.mlm function extension standard vcov method providing observation weights.","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":". Marazzi (1993) Algorithms, Routines S Functions Robust Statistics. Wadsworth & Brooks/Cole.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"John Fox; packaged Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/robmlm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Robust Fitting of Multivariate Linear Models — robmlm","text":"","code":"############## # Skulls data # make shorter labels for epochs and nicer variable labels in heplots Skulls$epoch <- factor(Skulls$epoch, labels=sub(\"c\",\"\",levels(Skulls$epoch))) # variable labels vlab <- c(\"maxBreadth\", \"basibHeight\", \"basialLength\", \"nasalHeight\") # fit manova model, classically and robustly sk.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) sk.rmod <- robmlm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) # standard mlm methods apply here coefficients(sk.rmod) #> mb bh bl nh #> (Intercept) 133.9539529 132.6656599 96.50561801 50.8900600 #> epoch.L 4.1659721 -2.1793681 -4.84240950 1.1168866 #> epoch.Q -0.3671411 -1.3069085 -0.04276618 0.2817763 #> epoch.C -0.5833713 -0.7912067 1.03002114 -0.8379419 #> epoch^4 0.6350148 0.8787857 -0.55919989 -0.6233314 # index plot of weights plot(sk.rmod$weights, type=\"h\", xlab=\"Case Index\", ylab=\"Robust mlm weight\", col=\"gray\") points(sk.rmod$weights, pch=16, col=Skulls$epoch) axis(side=1, at=15+seq(0,120,30), labels=levels(Skulls$epoch), tick=FALSE, cex.axis=1) # heplots to see effect of robmlm vs. mlm heplot(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), xlab=vlab[1], ylab=vlab[2], cex=1.25, lty=1) heplot(sk.rmod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, hyp.labels=FALSE, err.label=\"\") ############## # Pottery data data(Pottery, package = \"carData\") pottery.mod <- lm(cbind(Al,Fe,Mg,Ca,Na)~Site, data=Pottery) pottery.rmod <- robmlm(cbind(Al,Fe,Mg,Ca,Na)~Site, data=Pottery) car::Anova(pottery.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Site 3 1.5539 4.2984 15 60 2.413e-05 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 car::Anova(pottery.rmod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Site 3 1.975 6.5516 15 51 1.722e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # index plot of weights plot(pottery.rmod$weights, type=\"h\") points(pottery.rmod$weights, pch=16, col=Pottery$Site) # heplots to see effect of robmlm vs. mlm heplot(pottery.mod, cex=1.3, lty=1) heplot(pottery.rmod, add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, err.label=\"\") ############### # Prestige data data(Prestige, package = \"carData\") # treat women and prestige as response variables for this example prestige.mod <- lm(cbind(women, prestige) ~ income + education + type, data=Prestige) prestige.rmod <- robmlm(cbind(women, prestige) ~ income + education + type, data=Prestige) coef(prestige.mod) #> women prestige #> (Intercept) 29.638865042 -0.622929165 #> income -0.004594789 0.001013193 #> education 1.677749298 3.673166052 #> typeprof 20.761455686 6.038970651 #> typewc 27.911084356 -2.737230718 coef(prestige.rmod) #> women prestige #> (Intercept) 24.696906731 0.019651597 #> income -0.004902077 0.001082214 #> education 2.352283991 3.549614674 #> typeprof 18.737098949 6.394466644 #> typewc 26.762870920 -2.570933052 # how much do coefficients change? round(coef(prestige.mod) - coef(prestige.rmod),3) #> women prestige #> (Intercept) 4.942 -0.643 #> income 0.000 0.000 #> education -0.675 0.124 #> typeprof 2.024 -0.355 #> typewc 1.148 -0.166 # pretty plot of case weights plot(prestige.rmod$weights, type=\"h\", xlab=\"Case Index\", ylab=\"Robust mlm weight\", col=\"gray\") points(prestige.rmod$weights, pch=16, col=Prestige$type) legend(0, 0.7, levels(Prestige$type), pch=16, col=palette()[1:3], bg=\"white\") heplot(prestige.mod, cex=1.4, lty=1) heplot(prestige.rmod, add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, err.label=\"\")"},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":null,"dir":"Reference","previous_headings":"","what":"Rohwer Data Set — Rohwer","title":"Rohwer Data Set — Rohwer","text":"Data experiment William D. Rohwer kindergarten children designed examine well performance set paired-associate (PA) tasks can predict performance measures aptitude achievement.","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Rohwer Data Set — Rohwer","text":"data frame 69 observations following 10 variables. group numeric vector, corresponding SES SES Socioeconomic status, factor levels Hi Lo SAT numeric vector: score Student Achievement Test PPVT numeric vector: score Peabody Picture Vocabulary Test Raven numeric vector: score Raven Progressive Matrices Test n numeric vector: performance 'named' PA task s numeric vector: performance 'still' PA task ns numeric vector: performance 'named still' PA task na numeric vector: performance 'named action' PA task ss numeric vector: performance 'sentence still' PA task","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Rohwer Data Set — Rohwer","text":"Timm, N.H. 1975). Multivariate Analysis Applications Education Psychology. Wadsworth (Brooks/Cole), Examples 4.3 (p. 281), 4.7 (p. 313), 4.13 (p. 344).","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rohwer Data Set — Rohwer","text":"variables SAT, PPVT Raven responses potentially explained performance paired-associate (PA) learning taskn, s, ns, na, ss.","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Rohwer Data Set — Rohwer","text":"Friendly, M. (2007). plots Multivariate General Linear Models. Journal Computational Graphical Statistics, 16(2) 421--444. http://datavis.ca/papers/jcgs-heplots.pdf","code":""},{"path":"https://friendly.github.io/heplots/reference/Rohwer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rohwer Data Set — Rohwer","text":"","code":"str(Rohwer) #> 'data.frame':\t69 obs. of 10 variables: #> $ group: int 1 1 1 1 1 1 1 1 1 1 ... #> $ SES : Factor w/ 2 levels \"Hi\",\"Lo\": 2 2 2 2 2 2 2 2 2 2 ... #> $ SAT : int 49 47 11 9 69 35 6 8 49 8 ... #> $ PPVT : int 48 76 40 52 63 82 71 68 74 70 ... #> $ Raven: int 8 13 13 9 15 14 21 8 11 15 ... #> $ n : int 1 5 0 0 2 2 0 0 0 3 ... #> $ s : int 2 14 10 2 7 15 1 0 0 2 ... #> $ ns : int 6 14 21 5 11 21 20 10 7 21 ... #> $ na : int 12 30 16 17 26 34 23 19 16 26 ... #> $ ss : int 16 27 16 8 17 25 18 14 13 25 ... ## ANCOVA, assuming equal slopes rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ SES + n + s + ns + na + ss, data=Rohwer) car::Anova(rohwer.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> SES 1 0.37853 12.1818 3 60 2.507e-06 *** #> n 1 0.04030 0.8400 3 60 0.477330 #> s 1 0.09271 2.0437 3 60 0.117307 #> ns 1 0.19283 4.7779 3 60 0.004729 ** #> na 1 0.23134 6.0194 3 60 0.001181 ** #> ss 1 0.04990 1.0504 3 60 0.376988 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # Visualize the ANCOVA model heplot(rohwer.mod) # Add ellipse to test all 5 regressors heplot(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"))) # View all pairs pairs(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\"))) # or 3D plot if (FALSE) { col <- c(\"red\", \"green3\", \"blue\", \"cyan\", \"magenta\", \"brown\", \"gray\") heplot3d(rohwer.mod, hypotheses=list(\"Regr\" = c(\"n\", \"s\", \"ns\", \"na\", \"ss\")), col=col, wire=FALSE) } ## fit separate, independent models for Lo/Hi SES rohwer.ses1 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Hi\") rohwer.ses2 <- lm(cbind(SAT, PPVT, Raven) ~ n + s + ns + na + ss, data=Rohwer, subset=SES==\"Lo\") # overlay the separate HE plots heplot(rohwer.ses1, ylim=c(40,110),col=c(\"red\", \"black\")) heplot(rohwer.ses2, add=TRUE, col=c(\"blue\", \"black\"), grand.mean=TRUE, error.ellipse=TRUE)"},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":null,"dir":"Reference","previous_headings":"","what":"Growth of Apple Trees from Different Root Stocks — RootStock","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"classic experiment carried 1918 1934, growth apple trees six different rootstocks compared four measures size.","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"data frame 48 observations following 5 variables. rootstock factor levels 1 2 3 4 5 6 girth4 numeric vector: trunk girth 4 years (mm x 100) ext4 numeric vector: extension growth 4 years (m) girth15 numeric vector: trunk girth 15 years (mm x 100) weight15 numeric vector: weight tree ground 15 years (lb x 1000)","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"Andrews, D. Herzberg, . (1985). Data: Collection Problems Many Fields Student Research Worker Springer-Verlag, pp. 357--360.","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"balanced, one-way MANOVA design, n=8 trees rootstock.","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"Rencher, . C. (1995). Methods Multivariate Analysis. New York: Wiley, Table 6.2","code":""},{"path":"https://friendly.github.io/heplots/reference/RootStock.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Growth of Apple Trees from Different Root Stocks — RootStock","text":"","code":"library(car) data(RootStock) ## maybe str(RootStock) ; plot(RootStock) ... root.mod <- lm(cbind(girth4, ext4, girth15, weight15) ~ rootstock, data=RootStock) car::Anova(root.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> rootstock 5 1.3055 4.0697 20 168 1.983e-07 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 pairs(root.mod) # test two orthogonal contrasts among the rootstocks hyp <- matrix(c(2,-1,-1,-1,-1,2, 1, 0,0,0,0,-1), 2, 6, byrow=TRUE) car::linearHypothesis(root.mod, hyp) #> #> Sum of squares and products for the hypothesis: #> girth4 ext4 girth15 weight15 #> girth4 2.684223 7.573365 7.792122 1.617892 #> ext4 7.573365 22.489458 23.293194 5.760003 #> girth15 7.792122 23.293194 24.145778 6.090615 #> weight15 1.617892 5.760003 6.090615 2.248755 #> #> Sum of squares and products for error: #> girth4 ext4 girth15 weight15 #> girth4 0.3199875 1.696564 0.5540875 0.217140 #> ext4 1.6965637 12.142790 4.3636125 2.110214 #> girth15 0.5540875 4.363612 4.2908125 2.481656 #> weight15 0.2171400 2.110214 2.4816562 1.722525 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 2 1.426293 24.86102 8 80 < 2.22e-16 *** #> Wilks 2 0.020401 58.51245 8 78 < 2.22e-16 *** #> Hotelling-Lawley 2 26.121884 124.07895 8 76 < 2.22e-16 *** #> Roy 2 25.254884 252.54884 4 40 < 2.22e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(root.mod, hypotheses=list(Contrasts=hyp, C1=hyp[1,], C2=hyp[2,])) heplot1d(root.mod, hypotheses=list(Contrasts=hyp, C1=hyp[1,], C2=hyp[2,]))"},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":null,"dir":"Reference","previous_headings":"","what":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"Siotani et al. (1985) describe study Japanese rice wine (sake) used investigate relationship two subjective ratings (taste smell) number physical measurements 30 brands sake.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"data frame 30 observations following 10 variables. taste mean taste rating smell mean smell rating pH pH measurement acidity1 one measure acidity acidity2 another measure acidity sake Sake-meter score rsugar direct reducing sugar content tsugar total sugar content alcohol alcohol content nitrogen formol-nitrogen content","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"Siotani, M. Hayakawa, T. & Fujikoshi, Y. (1985). Modern Multivariate Statistical Analysis: Graduate Course Handbook. American Sciences Press, p. 217.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"data provide one example case multivariate regression benefit multiple outcome measures, using standard tests. Barrett (2003) uses data illustrate influence measures multivariate regression models. taste smell values mean ratings 10 experts unknown scale.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"Barrett, B. E. (2003). Understanding Influence Multivariate Regression. Communications Statistics - Theory Methods 32 (3), 667-680.","code":""},{"path":"https://friendly.github.io/heplots/reference/Sake.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Taste Ratings of Japanese Rice Wine (Sake) — Sake","text":"","code":"data(Sake) # quick look at the data boxplot(scale(Sake)) Sake.mod <- lm(cbind(taste,smell) ~ ., data=Sake) library(car) car::Anova(Sake.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> pH 1 0.276246 3.8169 2 20 0.03944 * #> acidity1 1 0.030788 0.3177 2 20 0.73145 #> acidity2 1 0.183297 2.2444 2 20 0.13202 #> sake 1 0.141187 1.6440 2 20 0.21827 #> rsugar 1 0.178200 2.1684 2 20 0.14050 #> tsugar 1 0.054842 0.5802 2 20 0.56891 #> alcohol 1 0.075954 0.8220 2 20 0.45387 #> nitrogen 1 0.056486 0.5987 2 20 0.55909 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 predictors <- colnames(Sake)[-(1:2)] # overall multivariate regression test linearHypothesis(Sake.mod, predictors) #> #> Sum of squares and products for the hypothesis: #> taste smell #> taste 1.4171079 0.5786338 #> smell 0.5786338 1.4095094 #> #> Sum of squares and products for error: #> taste smell #> taste 3.172559 2.248366 #> smell 2.248366 4.173491 #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 8 0.6300580 1.207279 16 42 0.30236 #> Wilks 8 0.4642360 1.169193 16 40 0.33210 #> Hotelling-Lawley 8 0.9509599 1.129265 16 38 0.36489 #> Roy 8 0.6270207 1.645929 8 21 0.17134 heplot(Sake.mod, hypotheses=list(\"Regr\" = predictors))"},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":null,"dir":"Reference","previous_headings":"","what":"School Data — schooldata","title":"School Data — schooldata","text":"School Data, Charnes et al. (1981). aim explain scores 3 different tests, reading, mathematics selfesteem 70 school sites means 5 explanatory variables related parents teachers.","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"School Data — schooldata","text":"data frame 70 observations following 8 variables. education Education level mother measured terms percentage high school graduates among female parents occupation Highest occupation family member according pre-arranged rating scale visit Parental visits index representing number visits school site counseling Parent counseling index calculated data time spent child school-related topics reading together, etc. teacher Number teachers given site reading Reading score measured Metropolitan Achievement Test mathematics Mathematics score measured Metropolitan Achievement Test selfesteem Coopersmith Self-Esteem Inventory, intended measure self-esteem","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"School Data — schooldata","text":". Charnes, W.W. Cooper E. Rhodes (1981). Evaluating Program Managerial Efficiency: Application Data Envelopment Analysis Program Follow . Management Science, 27, 668-697.","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"School Data — schooldata","text":"dataset shamelessly borrowed FRB package. relationships among variables unusual, fact revealed plotting.","code":""},{"path":"https://friendly.github.io/heplots/reference/schooldata.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"School Data — schooldata","text":"","code":"data(schooldata) # initial screening plot(schooldata) # better plot library(corrgram) corrgram(schooldata, lower.panel=panel.ellipse, upper.panel=panel.pts) #fit the MMreg model school.mod <- lm(cbind(reading, mathematics, selfesteem) ~ education + occupation + visit + counseling + teacher, data=schooldata) # shorthand: fit all others school.mod <- lm(cbind(reading, mathematics, selfesteem) ~ ., data=schooldata) car::Anova(school.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> education 1 0.37564 12.4337 3 62 1.820e-06 *** #> occupation 1 0.56658 27.0159 3 62 2.687e-11 *** #> visit 1 0.26032 7.2734 3 62 0.0002948 *** #> counseling 1 0.06465 1.4286 3 62 0.2429676 #> teacher 1 0.04906 1.0661 3 62 0.3700291 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # HE plots heplot(school.mod, fill=TRUE, fill.alpha=0.1) pairs(school.mod, fill=TRUE, fill.alpha=0.1) # robust model, using robmlm() school.rmod <- robmlm(cbind(reading, mathematics, selfesteem) ~ ., data=schooldata) # note that counseling is now significant car::Anova(school.rmod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> education 1 0.39455 12.8161 3 59 1.488e-06 *** #> occupation 1 0.59110 28.4301 3 59 1.683e-11 *** #> visit 1 0.23043 5.8888 3 59 0.0013819 ** #> counseling 1 0.25257 6.6456 3 59 0.0006083 *** #> teacher 1 0.09812 2.1395 3 59 0.1048263 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # Index plot of the weights wts <- school.rmod$weights notable <- which(wts < 0.8) plot(wts, type = \"h\", col=\"gray\", ylab = \"Observation weight\") points(1:length(wts), wts, pch=16, col = ifelse(wts < 0.8, \"red\", \"black\")) text(notable, wts[notable], labels = notable, pos = 3, col = \"red\") # compare classical HE plot with that based on the robust model heplot(school.mod, cex=1.4, lty=1, fill=TRUE, fill.alpha=0.1) heplot(school.rmod, add=TRUE, error.ellipse=TRUE, lwd=c(2,2), lty=c(2,2), term.labels=FALSE, err.label=\"\", fill=TRUE)"},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":null,"dir":"Reference","previous_headings":"","what":"Egyptian Skulls — Skulls","title":"Egyptian Skulls — Skulls","text":"Measurements made Egyptian skulls five epochs.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Egyptian Skulls — Skulls","text":"data frame 150 observations following 5 variables. epoch epoch skull assigned , ordered factor levels c4000BC c3300BC, c1850BC, c200BC, cAD150, years given approximately, course. mb maximal breadth skull. bh basibregmatic height skull. bl basialiveolar length skull. nh nasal height skull.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Egyptian Skulls — Skulls","text":"D. J. Hand, F. Daly, . D. Lunn, K. J. McConway E. Ostrowski (1994). Handbook Small Datasets, Chapman Hall/CRC, London.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Egyptian Skulls — Skulls","text":"epochs correspond following periods Egyptian history: early predynastic period (circa 4000 BC); late predynastic period (circa 3300 BC); 12th 13th dynasties (circa 1850 BC); Ptolemiac period (circa 200 BC); Roman period (circa 150 AD). question whether measurements change time. Non-constant measurements skulls time indicate interbreeding immigrant populations. Note using polynomial contrasts epoch essentially treats time points equally spaced.","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Egyptian Skulls — Skulls","text":"Thomson, . Randall-Maciver, R. (1905) Ancient Races Thebaid, Oxford: Oxford University Press. Hand, D. J., F. Daly, . D. Lunn, K. J. McConway E. Ostrowski (1994). Handbook Small Datasets, Chapman Hall/CRC, London. Egyptian Skull Development, StatLib Data Story Library, https://dasl.datadescription.com/Stories/EgyptianSkullDevelopment.html","code":""},{"path":"https://friendly.github.io/heplots/reference/Skulls.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Egyptian Skulls — Skulls","text":"","code":"data(Skulls) library(car) # for Anova # make shorter labels for epochs Skulls$epoch <- factor(Skulls$epoch, labels=sub(\"c\",\"\",levels(Skulls$epoch))) # longer variable labels vlab <- c(\"maxBreadth\", \"basibHeight\", \"basialLength\", \"nasalHeight\") # fit manova model sk.mod <- lm(cbind(mb, bh, bl, nh) ~ epoch, data=Skulls) Anova(sk.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> epoch 4 0.35331 3.512 16 580 4.675e-06 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 summary(Anova(sk.mod)) #> #> Type II MANOVA Tests: #> #> Sum of squares and products for error: #> mb bh bl nh #> mb 3061.066667 5.333333 11.46667 291.3000 #> bh 5.333333 3405.266667 754.00000 412.5333 #> bl 11.466667 754.000000 3505.96667 164.3333 #> nh 291.300000 412.533333 164.33333 1472.1333 #> #> ------------------------------------------ #> #> Term: epoch #> #> Sum of squares and products for the hypothesis: #> mb bh bl nh #> mb 502.8267 -228.14667 -626.6267 135.43333 #> bh -228.1467 229.90667 292.2800 -66.06667 #> bl -626.6267 292.28000 803.2933 -180.73333 #> nh 135.4333 -66.06667 -180.7333 61.20000 #> #> Multivariate Tests: epoch #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 4 0.3533056 3.512037 16 580.0000 4.6753e-06 *** #> Wilks 4 0.6635858 3.900928 16 434.4548 7.0102e-07 *** #> Hotelling-Lawley 4 0.4818191 4.230974 16 562.0000 8.2782e-08 *** #> Roy 4 0.4250954 15.409707 4 145.0000 1.5883e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test trends over epochs print(linearHypothesis(sk.mod, \"epoch.L\"), SSP=FALSE) # linear component #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.2913791 14.59731 4 142 5.1953e-10 *** #> Wilks 1 0.7086209 14.59731 4 142 5.1953e-10 *** #> Hotelling-Lawley 1 0.4111918 14.59731 4 142 5.1953e-10 *** #> Roy 1 0.4111918 14.59731 4 142 5.1953e-10 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(sk.mod, \"epoch.Q\"), SSP=FALSE) # quadratic component #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.0183468 0.6634844 4 142 0.61837 #> Wilks 1 0.9816532 0.6634844 4 142 0.61837 #> Hotelling-Lawley 1 0.0186897 0.6634844 4 142 0.61837 #> Roy 1 0.0186897 0.6634844 4 142 0.61837 # typical scatterplots are not very informative scatterplot(mb ~ bh|epoch, data=Skulls, ellipse = list(levels=0.68), smooth=FALSE, legend = list(coords=\"topright\"), xlab=vlab[2], ylab=vlab[1]) scatterplot(mb ~ bl|epoch, data=Skulls, ellipse = list(levels=0.68), smooth=FALSE, legend = list(coords=\"topright\"), xlab=vlab[3], ylab=vlab[1]) # HE plots heplot(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), xlab=vlab[1], ylab=vlab[2]) pairs(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), var.labels=vlab) # 3D plot shows that nearly all of hypothesis variation is linear! if (FALSE) { heplot3d(sk.mod, hypotheses=list(Lin=\"epoch.L\", Quad=\"epoch.Q\"), col=c(\"pink\", \"blue\")) # view in canonical space if (require(candisc)) { sk.can <- candisc(sk.mod) sk.can heplot(sk.can) heplot3d(sk.can) } }"},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":null,"dir":"Reference","previous_headings":"","what":"Grades in a Sociology Course — SocGrades","title":"Grades in a Sociology Course — SocGrades","text":"data set SocGrades contains four outcome measures student performance introductory sociology course together six potential predictors. data used Marascuilo Levin (1983) example canonical correlation analysis, also suitable examples multivariate multiple regression, MANOVA, MANCOVA step-analysis multivariate linear models.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Grades in a Sociology Course — SocGrades","text":"data frame 40 observations following 10 variables. class Social class, ordered factor levels 1 > 2 > 3 sex sex, factor levels F M gpa grade point average boards College Board test scores hssoc previous high school unit sociology, factor 2 , yes pretest score course pretest midterm1 score first midterm exam midterm2 score second midterm exam final score final exam eval course evaluation","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Grades in a Sociology Course — SocGrades","text":"Marascuilo, L. . Levin, J. R. (1983). Multivariate Statistics Social Sciences Monterey, CA: Brooks/Cole, Table 5-1, p. 192.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Grades in a Sociology Course — SocGrades","text":"midterm1, midterm2, final, possibly eval response variables. variables potential predictors. factors class, sex, hssoc can used .numeric correlational analyses.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocGrades.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Grades in a Sociology Course — SocGrades","text":"","code":"data(SocGrades) # basic MLM grades.mod <- lm(cbind(midterm1, midterm2, final, eval) ~ class + sex + gpa + boards + hssoc + pretest, data=SocGrades) car::Anova(grades.mod, test=\"Roy\") #> #> Type II MANOVA Tests: Roy test statistic #> Df test stat approx F num Df den Df Pr(>F) #> class 2 1.56729 11.7547 4 30 7.322e-06 *** #> sex 1 0.55300 4.0092 4 29 0.010419 * #> gpa 1 1.20780 8.7566 4 29 9.195e-05 *** #> boards 1 0.73142 5.3028 4 29 0.002489 ** #> hssoc 1 0.03496 0.2535 4 29 0.905171 #> pretest 1 0.31307 2.2697 4 29 0.085881 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 clr <- c(\"red\", \"blue\", \"darkgreen\", \"magenta\", \"brown\", \"black\", \"darkgray\") heplot(grades.mod, col=clr) pairs(grades.mod, col=clr) if (FALSE) { heplot3d(grades.mod, col=clr, wire=FALSE) } if (require(candisc)) { # calculate canonical results for all terms grades.can <- candiscList(grades.mod) # extract canonical R^2s unlist(lapply(grades.can, function(x) x$canrsq)) # plot class effect in canonical space heplot(grades.can, term=\"class\", scale=4) # 1 df terms: show canonical scores and weights for responses plot(grades.can, term=\"sex\") plot(grades.can, term=\"gpa\") plot(grades.can, term=\"boards\") }"},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":null,"dir":"Reference","previous_headings":"","what":"Social Cognitive Measures in Psychiatric Groups — SocialCog","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"general purpose study (Hartman, 2016, Heinrichs et al. (2015)) evaluate patterns levels performance neurocognitive measures among individuals schizophrenia schizoaffective disorder using well-validated, comprehensive neurocognitive battery specifically designed individuals psychosis (Heinrichs et al. (2008))","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"data frame 139 observations following 5 variables. Dx Diagnostic group, factor levels Schizophrenia, Schizoaffective, Control MgeEmotions Score Managing emotions test, numeric vector ToM Score Reading Mind Eyes test (theory mind), numeric vector ExtBias Externalizing Bias score, numeric vector PersBias Personal Bias score, numeric vector","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"Hartman, L. . (2016). Schizophrenia Schizoaffective Disorder: One Condition Two? Unpublished PhD dissertation, York University. Heinrichs, R.W., Pinnock, F., Muharib, E., Hartman, L.., Goldberg, J.O., & McDermid Vaz, S. (2015). Neurocognitive normality schizophrenia revisited. Schizophrenia Research: Cognition, 2 (4), 227-232. doi: 10.1016/j.scog.2015.09.001","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"data subset observations NeuroCog measures various scales social cognition also available. Interest whether schizophrenia group can distinguished schizoaffective group measures. Social Cognitive measures designed tap various aspects perception cognitive procession emotions others. Emotion perception assessed using Managing Emotions (MgeEmotions) score MCCB. \"theory mind\" (ToM) score assessed ability read emotions others photographs eye region male female faces. Two measures, externalizing bias (ExtBias) personalizing bias (PersBias) calculated scale measuring degree individuals attribute internal, personal situational causal attributions positive negative social events. See NeuroCog description sample. complete data social cognitive measures included data set. one extreme outlier schizophrenia group possible outliers control group, left tutorial purposes.","code":""},{"path":"https://friendly.github.io/heplots/reference/SocialCog.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Social Cognitive Measures in Psychiatric Groups — SocialCog","text":"","code":"library(car) data(SocialCog) SC.mod <- lm(cbind(MgeEmotions, ToM, ExtBias, PersBias) ~ Dx, data=SocialCog) SC.mod #> #> Call: #> lm(formula = cbind(MgeEmotions, ToM, ExtBias, PersBias) ~ Dx, #> data = SocialCog) #> #> Coefficients: #> MgeEmotions ToM ExtBias PersBias #> (Intercept) 41.80533 22.88849 1.75603 0.65488 #> Dx1 3.24012 2.09636 1.01670 -0.07297 #> Dx2 -4.34806 -1.02636 -0.85233 -0.01599 #> car::Anova(SC.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> Dx 2 0.21207 3.9735 8 268 0.0001817 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # test hypotheses of interest in terms of contrasts print(linearHypothesis(SC.mod, \"Dx1\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.1355144 5.21218 4 133 0.00062359 *** #> Wilks 1 0.8644856 5.21218 4 133 0.00062359 *** #> Hotelling-Lawley 1 0.1567573 5.21218 4 133 0.00062359 *** #> Roy 1 0.1567573 5.21218 4 133 0.00062359 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 print(linearHypothesis(SC.mod, \"Dx2\"), SSP=FALSE) #> #> Multivariate Tests: #> Df test stat approx F num Df den Df Pr(>F) #> Pillai 1 0.0697390 2.492658 4 133 0.046059 * #> Wilks 1 0.9302610 2.492658 4 133 0.046059 * #> Hotelling-Lawley 1 0.0749672 2.492658 4 133 0.046059 * #> Roy 1 0.0749672 2.492658 4 133 0.046059 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 #' ## HE plots heplot(SC.mod, hypotheses=list(\"Dx1\"=\"Dx1\", \"Dx2\"=\"Dx2\"), fill=TRUE, fill.alpha=.1) pairs(SC.mod, fill=c(TRUE,FALSE), fill.alpha=.1)"},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate statistics for levels of factors — statList","title":"Calculate statistics for levels of factors — statList","text":"statList provides general method calculating univariate multivariate statistics matrix data.frame stratified one factors.","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate statistics for levels of factors — statList","text":"","code":"statList(X, factors, FUN, drop = FALSE, ...)"},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate statistics for levels of factors — statList","text":"X matrix data frame containing variables summarized factors vector, matrix data frame containing factors X summarized. factors specified, result calculated data X. FUN function applied pieces X, split factors. drop Logical, indicating whether empty levels factors dropped result. ... arguments, passed FUN.","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate statistics for levels of factors — statList","text":"Returns list items corresponding unique elements factors, interaction factors. item result applying FUN collection rows X. items named according levels factors.","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate statistics for levels of factors — statList","text":"statList general function. X first split factors, FUN applied result. colMeansList covList just calls statList appropriate FUN.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate statistics for levels of factors — statList","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/statList.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate statistics for levels of factors — statList","text":"","code":"# grand means statList(iris[,1:4], FUN=colMeans) #> [[1]] #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.843333 3.057333 3.758000 1.199333 #> # species means statList(iris[,1:4], iris$Species, FUN=colMeans) #> $setosa #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.006 3.428 1.462 0.246 #> #> $versicolor #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.936 2.770 4.260 1.326 #> #> $virginica #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.588 2.974 5.552 2.026 #> # same colMeansList(iris[,1:4], iris$Species) #> $setosa #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.006 3.428 1.462 0.246 #> #> $versicolor #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.936 2.770 4.260 1.326 #> #> $virginica #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.588 2.974 5.552 2.026 #> # var-cov matrices, by species covList(iris[,1:4], iris$Species) #> $setosa #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> Sepal.Length 0.12424898 0.099216327 0.016355102 0.010330612 #> Sepal.Width 0.09921633 0.143689796 0.011697959 0.009297959 #> Petal.Length 0.01635510 0.011697959 0.030159184 0.006069388 #> Petal.Width 0.01033061 0.009297959 0.006069388 0.011106122 #> #> $versicolor #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> Sepal.Length 0.26643265 0.08518367 0.18289796 0.05577959 #> Sepal.Width 0.08518367 0.09846939 0.08265306 0.04120408 #> Petal.Length 0.18289796 0.08265306 0.22081633 0.07310204 #> Petal.Width 0.05577959 0.04120408 0.07310204 0.03910612 #> #> $virginica #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> Sepal.Length 0.40434286 0.09376327 0.30328980 0.04909388 #> Sepal.Width 0.09376327 0.10400408 0.07137959 0.04762857 #> Petal.Length 0.30328980 0.07137959 0.30458776 0.04882449 #> Petal.Width 0.04909388 0.04762857 0.04882449 0.07543265 #> # multiple factors iris$Dummy <- sample(c(\"Hi\",\"Lo\"),150, replace=TRUE) colMeansList(iris[,1:4], iris[,5:6]) #> $setosa.Hi #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 4.930769 3.342308 1.476923 0.250000 #> #> $versicolor.Hi #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.884 2.720 4.208 1.308 #> #> $virginica.Hi #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.658333 3.008333 5.625000 2.066667 #> #> $setosa.Lo #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.0875000 3.5208333 1.4458333 0.2416667 #> #> $versicolor.Lo #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 5.988 2.820 4.312 1.344 #> #> $virginica.Lo #> Sepal.Length Sepal.Width Petal.Length Petal.Width #> 6.523077 2.942308 5.484615 1.988462 #>"},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"termMeans utility function designed calculate means levels factor(s) term multivariate linear model.","code":""},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"","code":"termMeans(mod, term, label.factors = FALSE, abbrev.levels = FALSE)"},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"mod mlm model object term character string indicating given term model. factors term must included model, even model data frame. label.factors true, rownames row result include name(s) factor(s) involved, followed level values. Otherwise, rownames include levels factor(s), multiple factors separated ':' abbrev.levels Either logical integer, specifying whether levels values factors term abbreviated constructing rownames. integer specifies minimum length abbreviation factor term.","code":""},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"Returns matrix whose columns correspond response variables model whose rows correspond levels factor(s) term.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/termMeans.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate Means for a Term in a Multivariate Linear Model — termMeans","text":"","code":"factors <- expand.grid(A=factor(1:3),B=factor(1:2),C=factor(1:2)) n <- nrow(factors) responses <-data.frame(Y1=10+round(10*rnorm(n)),Y2=10+round(10*rnorm(n))) test <- data.frame(factors, responses) mod <- lm(cbind(Y1,Y2) ~ A*B, data=test) termMeans(mod, \"A\") #> Y1 Y2 #> 1 17.00 12.25 #> 2 9.50 10.75 #> 3 13.75 2.00 termMeans(mod, \"A:B\") #> Y1 Y2 #> 1:1 10.0 10.0 #> 2:1 3.0 19.5 #> 3:1 17.5 6.0 #> 1:2 24.0 14.5 #> 2:2 16.0 2.0 #> 3:2 10.0 -2.0 termMeans(mod, \"A:B\", label.factors=TRUE) #> Y1 Y2 #> A1:B1 10.0 10.0 #> A2:B1 3.0 19.5 #> A3:B1 17.5 6.0 #> A1:B2 24.0 14.5 #> A2:B2 16.0 2.0 #> A3:B2 10.0 -2.0 if (FALSE) { termMeans(mod, \"A:B:C\") # generates an error } plastic.mod <- lm(cbind(tear, gloss, opacity) ~ rate*additive, data=Plastic) colors = c(\"red\", \"darkblue\", \"darkgreen\", \"brown\") heplot(plastic.mod, col=colors, cex=1.25) # add means for interaction term intMeans <- termMeans(plastic.mod, 'rate:additive', abbrev=2) points(intMeans[,1], intMeans[,2], pch=18, cex=1.2, col=\"brown\") text(intMeans[,1], intMeans[,2], rownames(intMeans), adj=c(0.5,1), col=\"brown\")"},{"path":"https://friendly.github.io/heplots/reference/TIPI.html","id":null,"dir":"Reference","previous_headings":"","what":"Data on the Ten Item Personality Inventory — TIPI","title":"Data on the Ten Item Personality Inventory — TIPI","text":"Ten Item Personality Inventory (Gosling et al. 2003) brief inventory Big Five personality domains (Extraversion, Neuroticism, Conscientiousness, Agreeableness, Openness experience). dataset, originally Open Source Psychometrics Project (https://openpsychometrics.org/), used Jones et al. (2020), obtained version.","code":""},{"path":"https://friendly.github.io/heplots/reference/TIPI.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data on the Ten Item Personality Inventory — TIPI","text":"data frame 1799 observations following 16 variables. Extraversion numeric vector Neuroticism numeric vector Conscientiousness numeric vector Agreeableness numeric vector Openness numeric vector education ordered factor levels #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> engnat 1 0.025927 9.327 5 1752 8.817e-09 *** #> gender 1 0.088275 33.926 5 1752 < 2.2e-16 *** #> education 3 0.080337 9.653 15 5262 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(tipi.mlm, fill=TRUE, fill.alpha=0.1) pairs(tipi.mlm, fill=TRUE, fill.alpha=0.1) # candisc works best for factors with >2 levels library(candisc) tipi.can <- candisc(tipi.mlm, term=\"education\") tipi.can #> #> Canonical Discriminant Analysis for education: #> #> CanRsq Eigenvalue Difference Percent Cumulative #> 1 0.0740709 0.0799963 0.075792 92.7124 92.712 #> 2 0.0041870 0.0042046 0.075792 4.8730 97.585 #> 3 0.0020791 0.0020834 0.075792 2.4146 100.000 #> #> Test of H0: The canonical correlations in the #> current row and all that follow are zero #> #> LR test stat approx F numDF denDF Pr(> F) #> 1 0.92014 9.8819 15 4842.4 <2e-16 *** #> 2 0.99374 1.3792 8 3510.0 0.2002 #> 3 0.99792 1.2195 3 1756.0 0.3011 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(tipi.can, fill=TRUE, fill.alpha=0.1, var.col = \"darkred\", var.cex = 1.5, var.lwd = 3) #> Vector scale factor set to 9.339074"},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":null,"dir":"Reference","previous_headings":"","what":"Make Colors Transparent — trans.colors","title":"Make Colors Transparent — trans.colors","text":"Takes vector colors (color names rgb hex values) adds specified alpha transparency .","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make Colors Transparent — trans.colors","text":"","code":"trans.colors(col, alpha = 0.5, names = NULL)"},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make Colors Transparent — trans.colors","text":"col character vector colors, either color names rgb hex values alpha alpha transparency value(s) apply color (0 means fully transparent 1 means opaque) names optional character vector names colors","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Make Colors Transparent — trans.colors","text":"vector color values form \"#rrggbbaa\"","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Make Colors Transparent — trans.colors","text":"Colors (col) alpha need length. shorter one replicated make length.","code":""},{"path":[]},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Make Colors Transparent — trans.colors","text":"Michael Friendly","code":""},{"path":"https://friendly.github.io/heplots/reference/trans.colors.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Make Colors Transparent — trans.colors","text":"","code":"trans.colors(palette(), alpha=0.5) #> [1] \"#00000080\" \"#DF536B80\" \"#61D04F80\" \"#2297E680\" \"#28E2E580\" \"#CD0BBC80\" #> [7] \"#F5C71080\" \"#9E9E9E80\" # alpha can be vectorized trans.colors(palette(), alpha=seq(0, 1, length=length(palette()))) #> [1] \"#00000000\" \"#DF536B24\" \"#61D04F49\" \"#2297E66D\" \"#28E2E592\" \"#CD0BBCB6\" #> [7] \"#F5C710DB\" \"#9E9E9EFF\" # lengths need not match: shorter one is repeated as necessary trans.colors(palette(), alpha=c(.1, .2)) #> [1] \"#0000001A\" \"#DF536B33\" \"#61D04F1A\" \"#2297E633\" \"#28E2E51A\" \"#CD0BBC33\" #> [7] \"#F5C7101A\" \"#9E9E9E33\" trans.colors(colors()[1:20]) #> [1] \"#FFFFFF80\" \"#F0F8FF80\" \"#FAEBD780\" \"#FFEFDB80\" \"#EEDFCC80\" \"#CDC0B080\" #> [7] \"#8B837880\" \"#7FFFD480\" \"#7FFFD480\" \"#76EEC680\" \"#66CDAA80\" \"#458B7480\" #> [13] \"#F0FFFF80\" \"#F0FFFF80\" \"#E0EEEE80\" \"#C1CDCD80\" \"#838B8B80\" \"#F5F5DC80\" #> [19] \"#FFE4C480\" \"#FFE4C480\" # single color, with various alphas trans.colors(\"red\", alpha=seq(0,1, length=5)) #> [1] \"#FF000000\" \"#FF000040\" \"#FF000080\" \"#FF0000BF\" \"#FF0000FF\" # assign names trans.colors(\"red\", alpha=seq(0,1, length=5), names=paste(\"red\", 1:5, sep=\"\")) #> red1 red2 red3 red4 red5 #> \"#FF000000\" \"#FF000040\" \"#FF000080\" \"#FF0000BF\" \"#FF0000FF\""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":null,"dir":"Reference","previous_headings":"","what":"Vocabulary growth data — VocabGrowth","title":"Vocabulary growth data — VocabGrowth","text":"Data Laboratory School University Chicago. consist scores cohort pupils grades 8-11 vocabulary section Cooperative Reading Test. scores scaled common, arbitrary origin unit measurement, comparable four grades.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Vocabulary growth data — VocabGrowth","text":"data frame 64 observations following 4 variables. grade8 Grade 8 vocabulary score grade9 Grade 9 vocabulary score grade10 Grade 10 vocabulary score grade11 Grade 11 vocabulary score","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Vocabulary growth data — VocabGrowth","text":"R.D. Bock, Multivariate statistical methods behavioral research, McGraw-Hill, New York, 1975, pp453.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Vocabulary growth data — VocabGrowth","text":"Since data cover age range physical growth beginning decelerate, interest whether similar effect occurs acquisition new vocabulary.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Vocabulary growth data — VocabGrowth","text":"Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 . Keesling, J.W., Bock, R.D. et al, \"Laboratory School study vocabulary growth\", University Chicago, 1975.","code":""},{"path":"https://friendly.github.io/heplots/reference/VocabGrowth.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Vocabulary growth data — VocabGrowth","text":"","code":"library(car) data(VocabGrowth) # Standard Multivariate & Univariate repeated measures analysis Vocab.mod <- lm(cbind(grade8,grade9,grade10,grade11) ~ 1, data=VocabGrowth) idata <-data.frame(grade=ordered(8:11)) car::Anova(Vocab.mod, idata=idata, idesign=~grade, type=\"III\") #> #> Type III Repeated Measures MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.65289 118.498 1 63 4.115e-16 *** #> grade 1 0.82578 96.376 3 61 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ##Type III Repeated Measures MANOVA Tests: Pillai test statistic ## Df test stat approx F num Df den Df Pr(>F) ##(Intercept) 1 0.653 118.498 1 63 4.115e-16 *** ##grade 1 0.826 96.376 3 61 < 2.2e-16 *** heplot(Vocab.mod, type=\"III\", idata=idata, idesign=~grade, iterm=\"grade\", main=\"HE plot for Grade effect\") ### doing this 'manually' by explicitly transforming Y -> Y M # calculate Y M, using polynomial contrasts trends <- as.matrix(VocabGrowth) %*% poly(8:11, degree=3) colnames(trends)<- c(\"Linear\", \"Quad\", \"Cubic\") # test all trend means = 0 == Grade effect within.mod <- lm(trends ~ 1) Manova(within.mod) #> Note: model has only an intercept; equivalent type-III tests substituted. #> #> Type III MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> (Intercept) 1 0.82578 96.376 3 61 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(within.mod, terms=\"(Intercept)\", col=c(\"red\", \"blue\"), type=\"3\", term.labels=\"Grade\", main=\"HE plot for Grade effect\") mark.H0()"},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":null,"dir":"Reference","previous_headings":"","what":"Weight Loss Data — WeightLoss","title":"Weight Loss Data — WeightLoss","text":"Contrived data weight loss self esteem three months, three groups individuals: Control, Diet Diet + Exercise. data constitute double-multivariate design.","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Weight Loss Data — WeightLoss","text":"data frame 34 observations following 7 variables. group factor levels Control Diet DietEx. wl1 Weight loss 1 month wl2 Weight loss 2 months wl3 Weight loss 3 months se1 Self esteem 1 month se2 Self esteem 2 months se3 Self esteem 3 months","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Weight Loss Data — WeightLoss","text":"Originally taken http://www.csun.edu/~ata20315/psy524/main.htm, modified slightly","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Weight Loss Data — WeightLoss","text":"Helmert contrasts assigned group, comparing Control vs. (Diet DietEx) Diet vs. DietEx.","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Weight Loss Data — WeightLoss","text":"Friendly, Michael (2010). Plots Repeated Measures Designs. Journal Statistical Software, 37(4), 1-40. doi: 10.18637/jss.v037.i04 .","code":""},{"path":"https://friendly.github.io/heplots/reference/WeightLoss.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Weight Loss Data — WeightLoss","text":"","code":"data(WeightLoss) str(WeightLoss) #> 'data.frame':\t34 obs. of 7 variables: #> $ group: Factor w/ 3 levels \"Control\",\"Diet\",..: 1 1 1 1 1 1 1 1 1 1 ... #> ..- attr(*, \"contrasts\")= num [1:3, 1:2] -2 1 1 0 -1 1 #> .. ..- attr(*, \"dimnames\")=List of 2 #> .. .. ..$ : chr [1:3] \"Control\" \"Diet\" \"DietEx\" #> .. .. ..$ : NULL #> $ wl1 : int 4 4 4 3 5 6 6 5 5 3 ... #> $ wl2 : int 3 4 3 2 3 5 5 4 4 3 ... #> $ wl3 : int 3 3 1 1 2 4 4 1 1 2 ... #> $ se1 : int 14 13 17 11 16 17 17 13 14 14 ... #> $ se2 : int 13 14 12 11 15 18 16 15 14 15 ... #> $ se3 : int 15 17 16 12 14 18 19 15 15 13 ... table(WeightLoss$group) #> #> Control Diet DietEx #> 12 12 10 contrasts(WeightLoss$group) <- matrix(c(-2,1,1, 0, -1, 1),ncol=2) (wl.mod<-lm(cbind(wl1,wl2,wl3,se1,se2,se3)~group, data=WeightLoss)) #> #> Call: #> lm(formula = cbind(wl1, wl2, wl3, se1, se2, se3) ~ group, data = WeightLoss) #> #> Coefficients: #> wl1 wl2 wl3 se1 se2 se3 #> (Intercept) 5.34444 4.45000 2.17778 14.92778 13.79444 16.28333 #> group1 0.42222 0.55833 0.04722 0.08889 -0.26944 0.60000 #> group2 0.43333 1.09167 -0.02500 0.18333 -0.22500 0.71667 #> heplot(wl.mod, hypotheses=c(\"group1\", \"group2\")) pairs(wl.mod, variables=1:3) pairs(wl.mod, variables=4:6) # within-S variables within <- data.frame(measure=rep(c(\"Weight loss\", \"Self esteem\"),each=3), month=rep(ordered(1:3),2)) # doubly-multivariate analysis: requires car 2.0+ if (FALSE) { imatrix <- matrix(c( 1,0,-1, 1, 0, 0, 1,0, 0,-2, 0, 0, 1,0, 1, 1, 0, 0, 0,1, 0, 0,-1, 1, 0,1, 0, 0, 0,-2, 0,1, 0, 0, 1, 1), 6, 6, byrow=TRUE) # NB: for heplots the columns of imatrix should have names colnames(imatrix) <- c(\"WL\", \"SE\", \"WL.L\", \"WL.Q\", \"SE.L\", \"SE.Q\") rownames(imatrix) <- colnames(WeightLoss)[-1] (imatrix <- list(measure=imatrix[,1:2], month=imatrix[,3:6])) contrasts(WeightLoss$group) <- matrix(c(-2,1,1, 0,-1,1), ncol=2) (wl.mod<-lm(cbind(wl1, wl2, wl3, se1, se2, se3)~group, data=WeightLoss)) (wl.aov <- car::Anova(wl.mod, imatrix=imatrix, test=\"Roy\")) heplot(wl.mod, imatrix=imatrix, iterm=\"group:measure\") } # do the correct analysis 'manually' unit <- function(n, prefix=\"\") { J <-matrix(rep(1, n), ncol=1) rownames(J) <- paste(prefix, 1:n, sep=\"\") J } measure <- kronecker(diag(2), unit(3, 'M')/3, make.dimnames=TRUE) colnames(measure)<- c('WL', 'SE') between <- as.matrix(WeightLoss[,-1]) %*% measure between.mod <- lm(between ~ group, data=WeightLoss) car::Anova(between.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.26266 2.3434 4 62 0.06451 . #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(between.mod, hypotheses=c(\"group1\", \"group2\"), xlab=\"Weight Loss\", ylab=\"Self Esteem\", col=c(\"red\", \"blue\", \"brown\"), main=\"Weight Loss & Self Esteem: Group Effect\") month <- kronecker(diag(2), poly(1:3), make.dimnames=TRUE) colnames(month)<- c('WL', 'SE') trends <- as.matrix(WeightLoss[,-1]) %*% month within.mod <- lm(trends ~ group, data=WeightLoss) car::Anova(within.mod) #> #> Type II MANOVA Tests: Pillai test statistic #> Df test stat approx F num Df den Df Pr(>F) #> group 2 0.34305 3.2091 4 62 0.0185 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 heplot(within.mod) heplot(within.mod, hypotheses=c(\"group1\", \"group2\"), xlab=\"Weight Loss\", ylab=\"Self Esteem\", type=\"III\", remove.intercept=FALSE, term.labels=c(\"month\", \"group:month\"), main=\"Weight Loss & Self Esteem: Within-S Effects\") mark.H0()"},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-160-2023-08-30","dir":"Changelog","previous_headings":"","what":"Version 1.6.0 (2023-08-30)","title":"Version 1.6.0 (2023-08-30)","text":"converted pkg roxygen documentation now Suggests: car rather Depends:","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-150-2023-05-30","dir":"Changelog","previous_headings":"","what":"Version 1.5.0 (2023-05-30)","title":"Version 1.5.0 (2023-05-30)","text":"covEllipses() gains formula method Internal function ellipsoid() used heplot3d() becomes exported function, Ellipsoid()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-3-2023-01-02","dir":"Changelog","previous_headings":"","what":"Version 1.4-3 (2023-01-02)","title":"Version 1.4-3 (2023-01-02)","text":"replace rgl.pop() pop3D (PR #7); thx: D. Murdoch","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-2-2022-10-09","dir":"Changelog","previous_headings":"","what":"Version 1.4-2 (2022-10-09)","title":"Version 1.4-2 (2022-10-09)","text":"CRAN release: 2022-10-19 Fix CITATION","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-1-2022-10-01","dir":"Changelog","previous_headings":"","what":"Version 1.4-1 (2022-10-01)","title":"Version 1.4-1 (2022-10-01)","text":"CRAN release: 2022-10-01 (Ugh) broom becomes Depend: override broom::glance()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-14-0-2022-09-26","dir":"Changelog","previous_headings":"","what":"Version 1.4-0 (2022-09-26)","title":"Version 1.4-0 (2022-09-26)","text":"Added Iwasaki_Big_Five data [Thx: James Grice] Added cex.label arg heplot3d() Convert old Rnw vignettes Rmd Fix documentation infelicities Added TIPI data Added glance.mlm() extension broom::glance.lm()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-9-2021-10-06","dir":"Changelog","previous_headings":"","what":"Version 1.3-9 (2021-10-06)","title":"Version 1.3-9 (2021-10-06)","text":"CRAN release: 2021-10-06 Fix potential problem URL links JSS articles, now converted DOIs","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-8","dir":"Changelog","previous_headings":"","what":"Version 1.3-8","title":"Version 1.3-8","text":"CRAN release: 2021-01-21 fix CRAN nit re rgl examples","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-7","dir":"Changelog","previous_headings":"","what":"Version 1.3-7","title":"Version 1.3-7","text":"CRAN release: 2020-10-28 Fix rendering 3D heplots [Thx: Duncan Murdoch] Fix URLs","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-6-2019-03-26","dir":"Changelog","previous_headings":"","what":"Version 1.3-6 (2019-03-26)","title":"Version 1.3-6 (2019-03-26)","text":"add mathscore data fix bug etasq.lm() per #1 [thx: Phil Chalmers] bump pkg version remove Suggests: FRB","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-5-2018-04-02","dir":"Changelog","previous_headings":"","what":"Version 1.3-5 (2018-04-02)","title":"Version 1.3-5 (2018-04-02)","text":"CRAN release: 2018-04-03 fix references car datatsets -> carData fix error resulting car 3.0 changes bump pkg version","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-4-2016-11-7","dir":"Changelog","previous_headings":"","what":"Version 1.3-4 (2016-11-7)","title":"Version 1.3-4 (2016-11-7)","text":"CRAN release: 2017-09-15 Added Diabetes data, nice example heterogeneity covariances","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-3-2016-10-21","dir":"Changelog","previous_headings":"","what":"Version 1.3-3 (2016-10-21)","title":"Version 1.3-3 (2016-10-21)","text":"CRAN release: 2016-10-21 Added Parenting data, simple one-way MANOVA design (used TQMP paper) Prepare CRAN release","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-1-2016-06-10","dir":"Changelog","previous_headings":"","what":"Version 1.3-1 (2016-06-10)","title":"Version 1.3-1 (2016-06-10)","text":"CRAN release: 2016-06-14 added plot.robmlm(), plot method “robmlm” objects. Currently, plots weights given observations last iteration index plot. Re-built vignettes","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-13-0-2016-06-03","dir":"Changelog","previous_headings":"","what":"Version 1.3-0 (2016-06-03)","title":"Version 1.3-0 (2016-06-03)","text":"CRAN release: 2016-06-04 cqplot, pch, col, cex can now vectors Bump version, prepare release","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-12-1-2016-05-19","dir":"Changelog","previous_headings":"","what":"Version 1.2-1 (2016-05-19)","title":"Version 1.2-1 (2016-05-19)","text":"coefplot.mlm(), now pass label.pos label.ellipse() added Mahalanobis() classical robust squared distances; handles missing data gracefully provides confidence envelope added SocialCog data [Thx: Leah Hartman] added cqplot() Mahalanobis distances plot method mlm multivariate data","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-12-0-2016-04-27","dir":"Changelog","previous_headings":"","what":"Version 1.2-0 (2016-04-27)","title":"Version 1.2-0 (2016-04-27)","text":"CRAN release: 2016-05-19 covEllipses() extended two variables, giving scatterplot matrix plot plot.boxM() now can plot measures eigenvalues covariance matrices, useful understanding properties test. added bartlettTests() collection univariate Bartlett tests added leveneTests() collection univariate Levene tests added NeuroCog data, simple one-way MANOVA [Thx: Leah Hartman] label.ellipse() now uses much flexible label.pos argument positioning text labels used heplot() friends.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-11-0-2016-03-03","dir":"Changelog","previous_headings":"","what":"Version 1.1-0 (2016-03-03)","title":"Version 1.1-0 (2016-03-03)","text":"CRAN release: 2016-03-26 Added boXM biotools Fleshed boxM() formula, lm, plot summary methods added plot.boxM() method Added covEllipses() methods plotting (possibly robust) covariance ellipses Added colDevs() utility use multivariate tests. Added data(AddHealth), simple example one-way MANOVA nice views [thx: Russell Warne] summary.boxM() now returns calculated statistics can used construct kinds plots. plot.boxM() gets gplabel argument provide label group factor pairs.mlm() gets var.cex argument control size variable labels Added logdetCI() confidence intervals log determinants covariance matrices (experimental) Now use logdetCI() plot.boxM()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-16-2015-07-11","dir":"Changelog","previous_headings":"","what":"Version 1.0-16 (2015-07-11)","title":"Version 1.0-16 (2015-07-11)","text":"CRAN release: 2015-07-13 use importsFrom base packages","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-15-2015-04-15","dir":"Changelog","previous_headings":"","what":"Version 1.0-15 (2015-04-15)","title":"Version 1.0-15 (2015-04-15)","text":"CRAN release: 2015-04-18 Fix require -> requireNamespace","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-14-2015-02-15","dir":"Changelog","previous_headings":"","what":"Version 1.0-14 (2015-02-15)","title":"Version 1.0-14 (2015-02-15)","text":"Updated broken urls documentation Removed vcov.mlm exports conform CRAN policies Now use rgl:: rgl functions *3d.R Removed robmlm.default, robmlm.formula exports Imports: rgl","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-12-2014-05-15","dir":"Changelog","previous_headings":"","what":"Version 1.0-12 (2014-05-15)","title":"Version 1.0-12 (2014-05-15)","text":"CRAN release: 2014-07-02 Removed Authors: satisfy CRAN nits Fixed doc Hernior.Rd Now importsFrom(MASS) rather Depends:","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-11-2013-08-20","dir":"Changelog","previous_headings":"","what":"Version 1.0-11 (2013-08-20)","title":"Version 1.0-11 (2013-08-20)","text":"CRAN release: 2013-08-21 Cosmetic changes pass CRAN checks R 3.1.0, revised vcov.mlm() avoid calling summary.mlm() directly fixed long lines .Rd files R 3.0.1 checks removed require() calls MASS & car (Depends:) removed ::: calls car stats","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-10-2013-06-03","dir":"Changelog","previous_headings":"","what":"Version 1.0-10 (2013-06-03)","title":"Version 1.0-10 (2013-06-03)","text":"Added demo/-.R, exploring representations plots","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-9-2013-04-19","dir":"Changelog","previous_headings":"","what":"Version 1.0-9 (2013-04-19)","title":"Version 1.0-9 (2013-04-19)","text":"Added Pottery2 data, extending car::Pottery Fixed heplot3d minimize striated rendering ellipsoids, also modified default colors fill.alpha","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-8-2013-02-22","dir":"Changelog","previous_headings":"","what":"Version 1.0-8 (2013-02-22)","title":"Version 1.0-8 (2013-02-22)","text":"CRAN release: 2013-04-11 heplot.mlm(), added … label.ellipse able pass cex= Added NLSY data examples testing linearHypotheses heplot3d(), rgl.* functions replaced *3d() equivalents Extended gsorth description examples","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-7-2013-02-07","dir":"Changelog","previous_headings":"","what":"Version 1.0-7 (2013-02-07)","title":"Version 1.0-7 (2013-02-07)","text":"CRAN release: 2013-02-08 Made heplot3d() examples reduce example execution time satisfy CRAN nits","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-6-2013-01-14","dir":"Changelog","previous_headings":"","what":"Version 1.0-6 (2013-01-14)","title":"Version 1.0-6 (2013-01-14)","text":"Added label.ellipse() general exported function. heplot() gets label.pos= argument allowing flexible labeling, label position specified (bottom, left, top, right center) Added coefplot S3 generic coefplot.mlm method plot ellipses mlm coefficients. generalizes car::confidenceEllipse mlm setting.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-4-2012-12-29","dir":"Changelog","previous_headings":"","what":"Version 1.0-4 (2012-12-29)","title":"Version 1.0-4 (2012-12-29)","text":"Added interpPlot plotting interpolations two data sets, data ellipses, etc. Main use animated demos multivariate statistical concepts. interpPlot gains add=, points= col= arguments greater control graphical parameters.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-2-2012-12-05","dir":"Changelog","previous_headings":"","what":"Version 1.0-2 (2012-12-05)","title":"Version 1.0-2 (2012-12-05)","text":"CRAN release: 2012-12-17 Added schooldata example comparison mlm robmlm()","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-1-2012-10-18","dir":"Changelog","previous_headings":"","what":"Version 1.0-1 (2012-10-18)","title":"Version 1.0-1 (2012-10-18)","text":"Added simple robmlm methods robust mlms print summary methods vcov.mlm method. allows heplot() related methods show robust plots.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-10-0-2012-6-3","dir":"Changelog","previous_headings":"","what":"Version 1.0-0 (2012-6-3)","title":"Version 1.0-0 (2012-6-3)","text":"CRAN release: 2012-08-08 Added Olso data Corrected error demo/OBK.R","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-13-2012-5-18","dir":"Changelog","previous_headings":"","what":"Version 0.9-13 (2012-5-18)","title":"Version 0.9-13 (2012-5-18)","text":"Extended -examples vignette example based SocGrades data","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-12-2012-04-03","dir":"Changelog","previous_headings":"","what":"Version 0.9-12 (2012-04-03)","title":"Version 0.9-12 (2012-04-03)","text":"CRAN release: 2012-05-17 Added Skulls data Extended -examples vignette example based Skulls data Changed default colors heplot() heplot1d() allow global setting options(“heplot.colors”); similarly, heplot3d() now allows global option colors, options(“heplot3d.colors”), differing using pink error ellipsoid. Extended Hernior.Rd examples show 1D plots canonical space; added discussion example -examples vignette. Extended SocGrades.Rd examples show plots canonical space.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-11-2012-01-12","dir":"Changelog","previous_headings":"","what":"Version 0.9-11 (2012-01-12)","title":"Version 0.9-11 (2012-01-12)","text":"CRAN release: 2012-02-12 Added Probe1, Probe2 data sets– repeated measures design Added Sake data","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-10-2011-09-12","dir":"Changelog","previous_headings":"","what":"Version 0.9-10 (2011-09-12)","title":"Version 0.9-10 (2011-09-12)","text":"CRAN release: 2011-10-17 Fixed Authors@R DESCRIPTION R 2.14.x Added var.labels argument pairs.mlm gsorth.R: Made sd() local function avoid deprecated warnings","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-9-2011-06-10","dir":"Changelog","previous_headings":"","what":"Version 0.9-9 (2011-06-10)","title":"Version 0.9-9 (2011-06-10)","text":"Added data(Hernior), another MMRA, cancorr example data set Added data(SocGrades), another MANOVA, MMRA, cancorr example data set Corrected buglet fill.alpha heplot","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-8-2011-04-8","dir":"Changelog","previous_headings":"","what":"Version 0.9-8 (2011-04-8)","title":"Version 0.9-8 (2011-04-8)","text":"CRAN release: 2011-05-21 Added MMRA example -examples vignette Added err.label argument heplot heplot3d allow changing label error ellipsoid","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-7-2010-11-4","dir":"Changelog","previous_headings":"","what":"Version 0.9-7 (2010-11-4)","title":"Version 0.9-7 (2010-11-4)","text":"o Added trans.colors() make colors transparent o Modifications heplot() filled ellipses: added fill= fill.alpha= arguments; replaced lines() polygon() H E ellipses; calculate H.rank distinguish degenerate ellipses o added last() utility.R o Modified examples show fill=TRUE use wire=FALSE heplot3d() o Modified pairs.mlm() pass fill= fill.alpha= heplot() o Updated reference URLs point datavis.ca o Fixed buglet gsorth matrix row/col names [Thx: mekki@mektek.ca] o Fixed buglet etasq.lm partial=FALSE [Thx: .e.holliday@aston.ac.uk] Version 0.9-6 (2010-11-2) o added CITATION JSS article references .Rd files o modified repeated vignette [nojss] Version 0.9-5 (2010-10-01) o Added repeated vignette Version 0.9-4 (2010-07-29) o Minor documentation changes o Added etasq.lm() method o Added data/MockJury - 1-way 2-way MANOVA, step-tests, ANCOVA o Generalized termMeans() exported o Added -examples vignette Version 0.9-3 (2010-07-27) o Added gsorth() Gram-Schmidt orthogonalization matrix data frame, preserving column means standard deviations o Avoid Deprecated warnings (linear.hypothesis) car2 o Fixed documentation warnings car2 (linear.hypothesis, data.ellipse) Version 0.9-2 (2010-02-12) o Added demo/Big5.R - Analysis scores ‘Big 5’ personality traits three groups o fixed buglet text3d causing rgl crash (thx: Duncan Murdoch) o switched inst/CHANGES NEWS o Added data/RatWeight examples - repeated measures Weight Gain Rats o Added data/Headache examples - repeated measures treatment headaches o Fixed buglets heplot, heplot1d, heplot3d regarding number variables o Added etasq.mlm methods multivariate measures association (^2) o Return ellipse radius heplot, heplot3d","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-1-2010-01-1","dir":"Changelog","previous_headings":"","what":"Version 0.9-1 (2010-01-1)","title":"Version 0.9-1 (2010-01-1)","text":"o heplot.mlm, pairs.mlm, heplot3d.mlm now work repeated measure designs covariates rhs. o Implemented heplot1d() repeated measures designs (untested) o Revised documentation repeated measures o Added center.cex heplot.mlm() o Revised mark.H0() handle 3D plots also o Added Adoption data – MMreg repeated measures o Added ReactTime data – 2 within-S, -S factors o Fixed bug icontrasts o Added markH0 argument heplot o Added label argument mark.H0() o Added arrow3d() o Fixed buglet pairs.mlm (type)","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-09-0-2009-12-25","dir":"Changelog","previous_headings":"","what":"Version 0.9-0 (2009-12-25)","title":"Version 0.9-0 (2009-12-25)","text":"o Implemented 2D plots heplot.mlm repeated measures designs adding idata=, idesign=, icontrasts= arguments. o imatrix= argument doubly-multivariate designs implemented, depends car 2.0+ o Updated example(OBK) o Updated example(WeightLoss) o Implemented 3D plots heplot3d.mlm repeated measures designs (OK) o Implemented pairs() repeated measures designs (OK)","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-11-2009-12-08","dir":"Changelog","previous_headings":"","what":"Version 0.8-11 (2009-12-08)","title":"Version 0.8-11 (2009-12-08)","text":"CRAN release: 2009-12-23 o Minor fixes heplot1d o Added contrasts example RootStock.Rd o Added WeightLoss data – doubly multivariate o Added mark.H0","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-10-2009-10-10","dir":"Changelog","previous_headings":"","what":"Version 0.8-10 (2009-10-10)","title":"Version 0.8-10 (2009-10-10)","text":"CRAN release: 2009-10-13 o Fixes cross-references .Rd files.","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-9-2009-06-19","dir":"Changelog","previous_headings":"","what":"Version 0.8-9 (2009-06-19)","title":"Version 0.8-9 (2009-06-19)","text":"CRAN release: 2009-07-23 o Added data(RootStock) o heplot.mlm, heplot3d.mlm now include center returned object","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-8-2009-06-04","dir":"Changelog","previous_headings":"","what":"Version 0.8-8 (2009-06-04)","title":"Version 0.8-8 (2009-06-04)","text":"o Added data(FootHead) o Extended example(FootHead) Version 0.8-7 (2009-04-17) o Initial version heplot1d o Added data(Bees), demo(bees.contrasts) o Now suggest: effects package","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-6-2009-04-11","dir":"Changelog","previous_headings":"","what":"Version 0.8-6 (2009-04-11)","title":"Version 0.8-6 (2009-04-11)","text":"CRAN release: 2009-04-19 o Added VocabGrowth data, example heplot() repeated measures design o Fixed label.ellipse heplot.mlm.R center label horizontally o Added demo(OBK) o Added axes= heplot.mlm fix warnings arising axes=FALSE pairs.mlm","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-5-2009-01-26","dir":"Changelog","previous_headings":"","what":"Version 0.8-5 (2009-01-26)","title":"Version 0.8-5 (2009-01-26)","text":"CRAN release: 2009-04-03 o Minor documentation changes Rdoc 2 o Michael Friendly maintainer","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-4-2008-11-17","dir":"Changelog","previous_headings":"","what":"Version 0.8-4 (2008-11-17)","title":"Version 0.8-4 (2008-11-17)","text":"CRAN release: 2008-11-18 o Documentation additions o added CITATION file","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-3-2008-11-6","dir":"Changelog","previous_headings":"","what":"Version 0.8-3 (2008-11-6)","title":"Version 0.8-3 (2008-11-6)","text":"Changes heplot3d.mlm: o added xlim, ylim, zlim arguments","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-2-2008-10-22","dir":"Changelog","previous_headings":"","what":"Version 0.8-2 (2008-10-22)","title":"Version 0.8-2 (2008-10-22)","text":"Package changes o added suggests: candisc o added utility.R, cross3d.R Changes heplot.mlm: o moved lambda.crit utility.R o added .rep handle common task repeating argument values Changes heplot3d.mlm: o added shade=, shade.alpha=, wire= parameters o fixed: grand.mean=FALSE respected o replaced sphere grand.mean cross3d() o color means according color term o return bounding boxes ellipsoids o replaced rgl.texts texts3d Changes utility.R: o Generalized lambda.crit provide Roy.crit HLT.crit; Roy.crit used","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-1-2007-05-23","dir":"Changelog","previous_headings":"","what":"Version 0.8-1 (2007-05-23)","title":"Version 0.8-1 (2007-05-23)","text":"CRAN release: 2008-11-03 o heplot now passes … plot() calls text() points().","code":""},{"path":"https://friendly.github.io/heplots/news/index.html","id":"version-08-0-2007-01-31","dir":"Changelog","previous_headings":"","what":"Version 0.8-0 (2007-01-31)","title":"Version 0.8-0 (2007-01-31)","text":"CRAN release: 2007-01-31 Initial version released CRAN.","code":""}] diff --git a/man/figures/README-iris4-1.png b/man/figures/README-iris4-1.png new file mode 100644 index 0000000..de04fb5 Binary files /dev/null and b/man/figures/README-iris4-1.png differ