Как проверить разницу в средствах между 5 группами? Разница между группами не одинакова. Если бы они были равны, я мог бы использовать ANOVA [migrated]

2
задан Hello 13 July 2018 в 20:51
поделиться

2 ответа

Я хотел бы рекомендовать обобщенные наименьшие квадраты в качестве опции. Точно так же вы можете создать модель для среднего значения данных с учетом ваших предикторов, вы также можете создать модель для отклонения. Функция gls() в пакете nlme позволяет нам это сделать.

Я продемонстрирую, как показано ниже:

set.seed(1984)
n <- 25
# Create heteroskedastic data, balanced design
dat <- data.frame(
  y = c(
    rnorm(n, 1, 1), rnorm(n, 0, 1), rnorm(n, .5, 1), 
    rnorm(n, 0, 3), rnorm(n, -.5, 4)),
  groups = sort(rep(LETTERS[1:5], n))
)
boxplot(y ~ groups, dat)

# Assuming all cases have identical variances
summary(aov(y ~ groups, dat))

             Df Sum Sq Mean Sq F value Pr(>F)  
groups        4   69.0  17.255   3.475 0.0101 *
Residuals   120  595.9   4.966                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

# Modeling the error variances
library(nlme)
# This is your standard linear model
coef(summary(fit.gls.baseline <- gls(y ~ groups, dat))))

                 Value Std.Error   t-value      p-value
(Intercept)  1.1784414 0.4457005  2.644021 0.0092875812
groupsB     -0.9748277 0.6303157 -1.546571 0.1246000669
groupsC     -0.8980932 0.6303157 -1.424831 0.1568017302
groupsD     -1.2903790 0.6303157 -2.047195 0.0428223361
groupsE     -2.3076197 0.6303157 -3.661054 0.0003747902

sigma(fit.gls.baseline) # get residual standard deviation
[1] 2.228502

# Next we fit a heteroskedastic model, hidden some output
# varIdent says the variances are identical for cases that have the same value of group
summary(fit.gls <- gls(
  y ~ groups, dat, weights = varIdent(form = ~ 1 | groups)))

Generalized least squares fit by REML
  Model: y ~ groups 
  Data: dat 
       AIC      BIC    logLik
  479.5354 507.4103 -229.7677

Variance function:
 Structure: Different standard deviations per stratum
 Formula: ~1 | groups 
 Parameter estimates:
        A         B         C         D         E 
1.0000000 0.9741804 0.8698579 3.0062743 3.7867899 

Coefficients:
                 Value Std.Error   t-value p-value
(Intercept)  1.1784414 0.1951410  6.038923  0.0000
groupsB     -0.9748277 0.2724316 -3.578248  0.0005
groupsC     -0.8980932 0.2586375 -3.472401  0.0007
groupsD     -1.2903790 0.6182517 -2.087142  0.0390
groupsE     -2.3076197 0.7642898 -3.019299  0.0031

Residual standard error: 0.975705 

Несколько заметок об этой модели. Вы найдете, что остаточное стандартное отклонение (ошибка) намного меньше для гетероскедастической модели по сравнению с той же оценкой для более ранней модели. Теперь взгляните на раздел функции Variance, и вы увидите, что группа A имеет стандартное отклонение 1. Эти значения являются относительными стандартными отклонениями. Таким образом, $ .976 $ для модели - это остаточная SD группы A. $ .974 \ times .976 $ - значение для группы B. Группы D $ (3 \ times .976) $ и E $ (3.79 \ раз .976) $ имеют гораздо большие остаточные стандартные отклонения.

Также давайте получим гетероскедастическую версию F -test:

# marginal for type III sum of squares, only makes a difference for the
# test of the grouping variable if we have more than one grouping variable
anova(fit.gls, type = "marginal")
Denom. DF: 120 
            numDF  F-value p-value
(Intercept)     1 36.46859  <.0001
groups          4  5.51477   4e-04

Достаточно что не все группы имеют одно и то же среднее значение, $ F (4, 120) = 5,51, p & lt; .001 $.

. Теперь, чтобы сравнить гетероскедастическую модель с стандартной моделью, обратите внимание, что коэффициенты примерно одинаковы, однако стандартные ошибки намного меньше для гетероскедастической модели, за исключением групп D и E . Значит, наши p -значения также меньше. Глобальный подход к сопоставлению моделей был бы следующим:

anova(fit.gls, fit.gls.baseline) # Model fit improved
                 Model df      AIC      BIC    logLik   Test  L.Ratio p-value
fit.gls              1 10 479.5354 507.4103 -229.7677                        
fit.gls.baseline     2  6 560.9588 577.6837 -274.4794 1 vs 2 89.42343  <.0001

. Эти результаты свидетельствуют о том, что гетероскедастическая модель была лучше, ниже AIC, BIC и статистически значимым критерием отношения правдоподобия.

Теперь мы делаем не имеют доступа к процессу генерации данных в реальности, но мы всегда можем построить boxplt выше. Предполагая, что мы хотим выбрать более простую модель, мы можем предположить, что группы A, B и C имеют одинаковые дисперсии, а группы D и E - разные. Затем мы можем попробовать:

# Create a variable that classifies the groups according to variance
dat$var.groups <- (dat$groups %in% c("D", "E")) + 0
# then run:
summary(fit.gls.parsim <- gls(
  y ~ groups, dat, weights = varIdent(form = ~ 1 | var.groups)))

Generalized least squares fit by REML
  Model: y ~ groups 
  Data: dat 
       AIC      BIC    logLik
  475.3162 494.8287 -230.6581

Variance function:
 Structure: Different standard deviations per stratum
 Formula: ~1 | var.groups 
 Parameter estimates:
       0        1 
1.000000 3.600023 

Coefficients:
                 Value Std.Error   t-value p-value
(Intercept)  1.1784414 0.1853218  6.358893  0.0000
groupsB     -0.9748277 0.2620846 -3.719516  0.0003
groupsC     -0.8980932 0.2620846 -3.426730  0.0008
groupsD     -1.2903790 0.6924235 -1.863569  0.0648
groupsE     -2.3076197 0.6924235 -3.332671  0.0011

# A model comparison between our previous best and this new model
anova(fit.gls, fit.gls.parsim)
               Model df      AIC      BIC    logLik   Test  L.Ratio p-value
fit.gls            1 10 479.5354 507.4103 -229.7677                        
fit.gls.parsim     2  7 475.3162 494.8287 -230.6581 1 vs 2 1.780859  0.6191

Тест отношения правдоподобия не может отличить эту более простую модель, которая имеет еще три параметра и нашу раннюю гетероскедастическую модель. Также AIC и BIC склоняются к этой модели. Поэтому мы можем выбрать, что эта модель идет вперед, поскольку мы не знаем правды. Теория может также предложить некоторые вещи о различиях в групповых отклонениях. Можно видеть, как конкретная проблема гетероскедастичности может иметь существенный интерес сама по себе.

F -тест снова будет:

anova(fit.gls.parsim, type = "marginal")
Denom. DF: 120 
            numDF  F-value p-value
(Intercept)     1 40.43552  <.0001
groups          4  6.04201   2e-04

Теперь, следующая вещь может быть контрастом. В моей работе мне все равно, потому что я делаю здесь самые простые вещи. Есть, вероятно, лучшие способы борьбы с контрастами, см. Документацию по пакетам emmeans для получения дополнительных параметров. Я использую настройки по умолчанию.

library(emmeans)
pairs(emmeans(fit.gls.parsim, "groups"))
 contrast   estimate        SE  df t.ratio p.value
 A - B     0.9748277 0.2620846 120   3.720  0.0028
 A - C     0.8980932 0.2620846 120   3.427  0.0073
 A - D     1.2903790 0.6924235 120   1.864  0.3427
 A - E     2.3076197 0.6924235 120   3.333  0.0099
 B - C    -0.0767345 0.2620846 120  -0.293  0.9984
 B - D     0.3155513 0.6924235 120   0.456  0.9910
 B - E     1.3327920 0.6924235 120   1.925  0.3099
 C - D     0.3922858 0.6924235 120   0.567  0.9796
 C - E     1.4095265 0.6924235 120   2.036  0.2555
 D - E     1.0172407 0.9435106 120   1.078  0.8174

P value adjustment: tukey method for comparing a family of 5 estimates 

Эти контрасты используют информацию из модели гетероскедастики, поскольку результаты будут разными, если вы использовали модель fit.gls.baseline.

Надеюсь, что демонстрация выше показывает, как вы можете учитывать гетероскедастичность, используя обобщенные наименьшие квадраты при анализе дисперсии. По сравнению со многими другими подходами этот подход не просто рассматривает гетероскедастичность как неприятность. Можно также включить контрольные переменные, как в ANCOVA.


Как и в стороне, если вы также подозреваете, что в ANCOVA существует также гетеросквадичность по управляющим переменным, то функция glmmTMB() в пакете glmmTMB может справиться с этой ситуацией. Вы просто указываете уравнение регрессии для дисперсии с использованием аргумента dispformula =.

4
ответ дан user162986 17 August 2018 в 12:09
поделиться
  • 1
    Мой сценарий заключается в том, что у меня 40 разных брендов, и я регистрирую 10 переменных для этих 40 брендов. Каждый бренд наблюдался 6 раз. Мой первый шаг состоял в том, чтобы найти образец стандартного отклонения по каждому бренду, чтобы я мог группироваться с одинаковой дисперсией. Я использовал PCA для этого. Затем я провел кластерный анализ, чтобы найти оптимальное количество кластеров. Теперь предположим, что у меня 5 кластеров, что означает, что у меня 5 разных групп. Смогу ли я запустить модель gls, как вы сказали, на основе 5 кластеров, которые у меня есть сейчас? – Hello 14 July 2018 в 17:15
  • 2
    Этот сценарий сильно отличается от того, что вы описали в своем вопросе. Я не уверен, что понимаю все, что вы пишете здесь. Однако создание кластеров для использования в качестве предикторов в новой модели определенно создает смещение в ваших оценках регрессии, хотя бы из-за ошибки измерения в созданных вами кластерах. Если вы намерены запустить ANOVA, то, конечно, вы можете использовать gls(), если проблема гетероскедастичности является проблемой. Но если бы я просмотрел ваш анализ, я бы не доволен серией шагов, которые вы изложили. Я предлагаю вам задать новый вопрос, излагающий все, что вы делаете. – user162986 14 July 2018 в 17:35
  • 3
    Я только что опубликовал новый вопрос. Большое спасибо за то, что вы мне помогли. – Hello 14 July 2018 в 17:57

Одним из нескольких возможных способов является использование oneway.test в R. Вот пример с тремя группами, каждый из которых имеет десять наблюдений:

x1 = rnorm(10, 100, 10);  x2 = rnorm(10, 95, 15);  x3 = rnorm(10, 90, 5)
x = c(x1, x2, x3); group = rep(1:3, each=10)
boxplot(x ~ group)

Вы можете видеть, что мои поддельные данные генерировались с различными стандартными отклонениями в каждой из трех групп. Эти квадраты показывают эту гетероскедастичность. Тест Bartlett подтверждает значимость (P-значение 0,004).

sd(x1); sd(x2); sd(x3)
[1] 10.88923
[1] 16.35099
[1] 4.656118

bartlett.test(x, group)

        Bartlett test of homogeneity of variances

data:  x and group
Bartlett's K-squared = 11.103, df = 2, p-value = 0.003881

Процедура oneway.test допускает разные отклонения в точности так же, как и тест Welch 2-sample t. Это указывает на то, что не все уровни групповой совокупности равны (значение P & lt; 5%). Обратите внимание, что знаменатель DF $ \ approx 15; $ стандартный ANOVA, предполагающий равные дисперсии, имел бы знаменатель DF $ = 27. $ [Я считаю, что это «WELCH ANOVA», предложенный @SalMangiafico.]

mean(x1); mean(x2); mean(x3)
[1] 98.00458
[1] 105.3806
[1] 92.0077

oneway.test(x ~ group)

        One-way analysis of means (not assuming equal variances)

data:  x and group
F = 3.818, num df = 2.000, denom df = 14.536, p-value = 0.04649

Вы можете использовать тесты Welch 2-sample t для изучения парных сравнений, возможно, с частотой ошибок семейства Bonferroni.

Ссылка: Этот Q & amp; В упоминаются различные альтернативные методы.

4
ответ дан BruceET 17 August 2018 в 12:09
поделиться
  • 1
    Для чего это стоит, я бы не рекомендовал тест Kruskal-Wallis (KW). Чтобы посмотреть на разницу в медианах для KW-теста, вы должны были бы предположить, что единственная разница между группами - медианные. Все группы должны быть одинаково сформированы, это предположение включает в себя аналогичные отклонения. Только нормальность не имеет значения. – user162986 14 July 2018 в 14:22
  • 2
    @ User162986. Действительный пункт о Kruskal-Wallis, который, вероятно, также должен быть сделан на связанной странице. Удаление последнего предложения моей «ссылки». – BruceET 14 July 2018 в 15:39
  • 3
    Дело не в том, что Крускал-Уоллис неприменим или желателен в этой ситуации. Это просто, что это не (обычно) тест медиан. K-W, как тест стохастического равенства, часто очень полезен и значим ... Кроме того, вопрос задан конкретно о средствах. – Sal Mangiafico 14 July 2018 в 15:42
  • 4
    Это довольно интересная проблема. KW - это испытание доминирования. Если у вас есть неравные отклонения, вы можете обнаружить, что одна группа доминирует над другой независимо от средних различий. Таким образом, когда человек распространяет требование на среднее различие, то имеет место однородность дисперсии. Таким образом, исходная страница не делала этого заявления о медианах, основанных на моей быстрой проверке. – user162986 14 July 2018 в 15:43
  • 5
    Возможно нет. // В зависимости от обстоятельств, я могу попробовать один из альтернативных методов в ссылке в конце моего ответа. Я должен увидеть данные и понять ситуацию. // Я могу попробовать тест перестановки. Возможно, используя F-статистику «Welch ANOVA» как метрику, но используя ее распределение перестановок, а не F-распределение, получить P-значение. (Возможно, см. Eudey et al (2010) для элементарного введения тестов на перестановку, 2-выборочные тесты обсуждаются в разделе 4. Аналогичный подход будет работать для однонаправленного ANOVA.) - – BruceET 14 July 2018 в 17:45
Другие вопросы по тегам:

Похожие вопросы: