Я пытаюсь использовать «посреднический» 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 (непрерывный, экспозиция) и опыленными (бинарный, конечный), больше похоже на результаты, которые я получаю в Случайный пример)?