R:需要使用双向(阶乘)方差分析执行 boxM() 的示例 - 我收到错误

R: Need example of performing boxM() with two-way (factorial) MANOVA - I'm getting an error

我正在尝试 运行 Box 的协方差矩阵同质性 M 检验,用于双向方差分析。

我从昨天下午就开始搜索示例了。我看到许多将 boxM 与单向方差分析结合使用的示例。在每种情况下,如果源还涵盖双向 MANOVA,则它们不包括在双向情况下演示 运行ning boxM 测试。我只需要一个工作示例。一旦我掌握了语法,我就能让它工作。

biotools 包中的 boxM 函数表示它用于一个分类因子(单向方差分析)。
https://www.rdocumentation.org/packages/biotools/versions/3.1/topics/boxM

heplots 包中的 boxM 函数说它适用于一个或多个分类因子 --
https://www.rdocumentation.org/packages/heplots/versions/1.3-5/topics/boxM

-- 但是,当我尝试使用它时出现错误:“模型只能完全交叉公式。”

下面,我展示了当单独使用任一因子时我都没有得到错误,但是交叉因子的任何排列都会产生这个错误。注意:我没有收到此错误 运行ning Levene 的变量交叉测试。

Response1、Response2 和 Response3 是连续的。
Factor1 有 2 个水平。 Factor2 有 5 个级别。

library(heplots)

> Model2 <- lm(cbind(Response1, Response2, Response3) ~ Factor1, data=Data40)
> boxM(Model2)

    Box's M-test for Homogeneity of Covariance Matrices

data:  Y
Chi-Sq (approx.) = 3.5562, df = 6, p-value = 0.7365

> Model2 <- lm(cbind(Response1, Response2, Response3) ~ Factor2, data=Data40)
> boxM(Model2)

    Box's M-test for Homogeneity of Covariance Matrices

data:  Y
Chi-Sq (approx.) = 35.079, df = 24, p-value = 0.06724

> Model2 <- lm(cbind(Response1, Response2, Response3) ~ Factor1 * Factor2, data=Data40)
> boxM(Model2)
Error in boxM.formula(formula(Y), data = eval(data, envir = environment(formula(Y))),  : 
  Model must be completely crossed formula only.

> Model2 <- lm(cbind(Response1, Response2, Response3) ~ Factor1 + Factor2 + Factor1 * Factor2, data=Data40)
> boxM(Model2)
Error in boxM.formula(formula(Y), data = eval(data, envir = environment(formula(Y))),  : 
  Model must be completely crossed formula only.

> Model2 <- lm(cbind(Response1, Response2, Response3) ~ Factor1 + Factor2 + Factor1:Factor2, data=Data40)
> boxM(Model2)
Error in boxM.formula(formula(Y), data = eval(data, envir = environment(formula(Y))),  : 
  Model must be completely crossed formula only.

不知道该包从未使用过它,但在几分钟的调查中,您似乎正在以一种它不喜欢的方式指定公式...自包作者以来使用 iris会,而您没有提供任何数据。

library(heplots)

# adding a bogus second factor to iris
iris$nonsense <- rep(1:2)
iris$nonsense <- factor(iris$nonsense)

# one factor
boxM( cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ nonsense, data=iris)
#> 
#>  Box's M-test for Homogeneity of Covariance Matrices
#> 
#> data:  Y
#> Chi-Sq (approx.) = 16.389, df = 10, p-value = 0.08904

# second factor
boxM( cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species, data=iris)
#> 
#>  Box's M-test for Homogeneity of Covariance Matrices
#> 
#> data:  Y
#> Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16

# crossed note not including the `lm`

boxM( cbind(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) ~ Species * nonsense, data=iris)
#> 
#>  Box's M-test for Homogeneity of Covariance Matrices
#> 
#> data:  Y
#> Chi-Sq (approx.) = 169.1, df = 50, p-value = 7.609e-15