На знак Коэна d не влияет обратный порядок уровней факторов в R - PullRequest
0 голосов
/ 12 ноября 2018

Я использую d Коэна (реализовано с использованием cohen.d() из пакета effsize) в качестве меры величины эффекта в моей зависимой переменной между двумя уровнями фактора.

Мой код выглядит следующим образом: cohen.d(d, f) где d - вектор числовых значений, а f - коэффициент с двумя уровнями: "A" и "B".

Насколько я понимаю, знак Коэна d зависит от порядка средств (то есть уровней факторов), введенных в формулу.Тем не менее, моя cohen.d() команда возвращает отрицательное значение (и отрицательные CI), даже если я изменяю порядок уровней в f.

Вот воспроизводимый пример:

library('effsize')
# Load in Chickweight data
a=ChickWeight

# Cohens d requires two levels in factor f, so take the first two available in Diet
a=a[a$Diet==c(1,2),]
a$Diet=a$Diet[ , drop=T]

# Compute cohen's d with default order of Diet
d1 = a$weight
f1 = a$Diet
cohen1 = cohen.d(d1,f1)

# Re-order levels of Diet
a$Diet = relevel(a$Diet, ref=2)

# Re-compute cohen's d
d2 = a$weight
f2 = a$Diet
cohen2 = cohen.d(d2,f2)

# Compare values
cohen1
cohen2 

Может кто-нибудь объяснить, почему это так, и / или я делаю что-то не так?

Заранее благодарен за любой совет!

1 Ответ

0 голосов
/ 12 ноября 2018

Я не совсем уверен, какова причина проблемы в вашем примере (возможно, кто-то еще может прокомментировать здесь), но если вы посмотрите на примеры в разделе ?cohen.d, есть несколько различных методов для его вычисления:

treatment = rnorm(100,mean=10)
control = rnorm(100,mean=12)
d = (c(treatment,control))
f = rep(c("Treatment","Control"),each=100)
## compute Cohen's d
## treatment and control
cohen.d(treatment,control)
## data and factor
cohen.d(d,f)
## formula interface
cohen.d(d ~ f)

Если вы используете первый пример cohen.d(treatment, control) и измените его на cohen.d(control, treatment), вы получите следующее:

cohen.d(treatment, control)
Cohen's d

d estimate: -1.871982 (large)
95 percent confidence interval:
      inf       sup 
-2.206416 -1.537547 

cohen.d(control, treatment)
Cohen's d

d estimate: 1.871982 (large)
95 percent confidence interval:
     inf      sup 
1.537547 2.206416

Итак, используя двухвекторный метод из примеров с вашими данными, мы можем сделать:

a1 <- a[a$Diet == 1,"weight"]
a2 <- a[a$Diet == 2,"weight"]
cohen3a <- cohen.d(a1, a2)
cohen3b <- cohen.d(a2, a1)

Я заметил, что f в примерах ?cohen.d является не фактором, а вектором символов. Я попытался поиграть с методом cohen.d(d, f), но не нашел решения. Хотелось бы узнать, есть ли у кого-то еще что-нибудь об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...