#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, на всякий случай (это не было проблемой). Спасибо за вашу помощь.