R: Нужен пример выполнения boxM () с двусторонним (факториальным) MANOVA — я получаю ошибку

#r #covariance #manova #covariance-matrix

#r #ковариация #manova #ковариационная матрица

Вопрос:

Я пытаюсь выполнить M-тест Box на однородность ковариационных матриц для двухстороннего MANOVA.

Я проводил поиск примера со вчерашнего дня. Я вижу много примеров использования boxM с односторонним MANOVA. В каждом случае, если источник также охватывает двусторонний MANOVA, они не включают демонстрацию выполнения теста boxM в двустороннем случае. Мне просто нужен рабочий пример. Как только у меня будет синтаксис, я смогу заставить это работать.

Функция boxM в пакете biotools говорит, что она предназначена для одного классификационного фактора (одностороннего MANOVA).
https://www.rdocumentation.org/packages/biotools/versions/3.1/topics/boxM

Функция boxM в пакете heplots говорит, что она работает с одним или несколькими факторами классификации —
https://www.rdocumentation.org/packages/heplots/versions/1.3-5/topics/boxM

— Однако я получаю сообщение об ошибке, когда пытаюсь его использовать: «Модель должна быть полностью пересечена только формулой».

Ниже я показываю, что я не получаю ошибку при использовании одного из факторов, но любая схема пересечения факторов приводит к этой ошибке. Примечание: я не получаю эту ошибку, выполняя тест Левена с пересеченными переменными.

Response1, Response2 и Response3 являются непрерывными.
Фактор 1 имеет 2 уровня. Фактор 2 имеет 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.
  

Комментарии:

1. 2 просмотра за 1 час. Отлично.

2. LOL ну, это довольно специфический пакет и довольно общий вопрос, в котором не так много данных или фона… Но терпение, пожалуйста

Ответ №1:

Не знаю, что пакет никогда не использовал его, но через пару минут слежки выясняется, что вы можете указывать формулу так, как ей не нравится… Использование 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
  

Комментарии:

1. Спасибо. Теперь я вижу, что это действительно должно работать. Я вышел из R-Studio и просто загрузил три библиотеки, которые мне нужны для загрузки и преобразования данных, и запустил boxM — и, волшебным образом, тот же самый код внезапно работает. — У меня были проблемы раньше, когда загружалось много библиотек, нарушающих R. Хотел бы я знать, как сказатькогда это так. Из-за этого я на самом деле запускал heplots::boxM, на всякий случай (это не было проблемой). Спасибо за вашу помощь.