R: Проблемы с использованием «посреднического» пакета с непрерывным воздействием и двоичным результатом - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь использовать «посреднический» R-пакет с непрерывным воздействием, постоянным посредником и двоичным результатом. Он работает, как и ожидалось, когда все переменные являются непрерывными, но как только я добавляю двоичный результат, он начинает разделять эффекты посредничества на «Обработанные», «Необработанные» и «Средние» (что не имеет смысла, потому что по результатам это двоичный файл , а не мое разоблачение!)

Вот некоторые смоделированные данные для моих двух примеров, которые основаны на этом уроке :

library('mediation')
set.seed(23)
testdata <- iris
testdata$bee_attract <- testdata$Petal.Length + 0.25*testdata$Petal.Length*rnorm(dim(testdata)[1])
testdata$pollination_score <- testdata$bee_attract + 0.5*sd(testdata$bee_attract)*rnorm(dim(testdata)[1])
testdata$pollination_score_positive <- testdata$pollination_score + abs(min(testdata$pollination_score))
testdata$chance_pollinated <- testdata$pollination_score_positive/max(testdata$pollination_score_positive)
testdata$pollinated <- rbinom(dim(testdata)[1],1,testdata$chance_pollinated)

В моем первом примере, все переменные являются непрерывными, и они ведут себя как ожидалось (результат - вероятность того, что цветок опылен, экспозиция - длина лепестка, медиатор - оценка того, насколько привлекательные пчелы находят цветок):

perc.step1=lm(chance_pollinated~Petal.Length,testdata) # Total effect
perc.step2=lm(bee_attract~Petal.Length,testdata) # Effect of exposure on mediator
perc.step3=lm(chance_pollinated~Petal.Length+bee_attract,testdata) # Effect of mediator on outcome
percresults = mediate(perc.step2, perc.step3, treat='Petal.Length', mediator='bee_attract')
summary(percresults)

               Estimate 95% CI Lower 95% CI Upper p-value
ACME            0.09303      0.07498         0.11  <2e-16 ***
ADE             0.00624     -0.01067         0.02    0.49
Total Effect    0.09927      0.08716         0.11  <2e-16 ***
Prop. Mediated  0.93729      0.75867         1.11  <2e-16 ***

Во втором моем примере Я делаю результат двоичным (переменная «опыляется» - независимо от того, опылен ли цветок), но он довольно неожиданно начинает давать мне отдельные оценки посредничества для «обработанных» и «необработанных», как будто по какой-то причине он считает, что мое воздействие является двоичным из моего результата:

bin.step1=glm(pollinated~Petal.Length,family=binomial(link='logit'),testdata) # Total effect
bin.step2=lm(bee_attract~Petal.Length,testdata) # Effect of exposure on mediator
bin.step3=glm(pollinated~Petal.Length+bee_attract,family=binomial(link='logit'),testdata) # Effect of mediator on outcome
binresults = mediate(bin.step2, bin.step3, treat='Petal.Length', mediator='bee_attract')
summary(binresults)

                        Estimate 95% CI Lower 95% CI Upper p-value
ACME (control)            0.03014     -0.00692         0.08    0.13
ACME (treated)            0.03222     -0.01000         0.07    0.13
ADE (control)             0.02134     -0.01673         0.07    0.26
ADE (treated)             0.02341     -0.02437         0.07    0.26
Total Effect              0.05356      0.03795         0.07  <2e-16 ***
Prop. Mediated (control)  0.53102     -0.12886         1.44    0.13
Prop. Mediated (treated)  0.61905     -0.18516         1.30    0.13
ACME (average)            0.03118     -0.00852         0.08    0.13
ADE (average)             0.02237     -0.02105         0.07    0.26
Prop. Mediated (average)  0.57503     -0.15613         1.37    0.13

Может кто-нибудь объяснить, пожалуйста, где я с этим не так, и ч чтобы получить ожидаемые результаты (единый набор значений того, как bee_attract (непрерывный) опосредует отношения между Petal.Length (непрерывный, экспозиция) и опыленными (бинарный, конечный), больше похоже на результаты, которые я получаю в Случайный пример)?

...