R中的错误:`[。data.frame`(m.data,,treat):选择了未定义的列 - 运行中介

时间:2018-02-09 14:36:15

标签: r

#Create subset of a dataset

df <- subset(dat,select = c(id,obs,day_clos,posaff,er89,qol1))

### remove rows with missing values on a variable

df <- subset(df, !is.na(day_clos))

df <- subset(df, !is.na(er89))

df <- subset(df, !is.na(qol1))

df <- subset(df,!is.na(posaff))

any(is.na(df)) ## returns FALSE

Then my data looks like this

   id obs day_clos   posaff     er89 qol1

   1   0 16966.61 2.000000 2.785714    3

   1   1 16967.79 1.666667 2.785714    4

   1   2 16968.82 1.666667 3.142857    3

   1   3 16969.76 1.166667 3.071429    4

   1   4 16970.95 2.083333 3.000000    4

   1   5 16971.75 1.416667 2.857143    4

model.Y <- lm(qol1 ~ posaff,df)

summary(model.Y)

model.M <- lm(qol1 ~ er89, df)

summary(model.M)

#### There is no problem running the regression analyses, however: 

results <- mediate(model.M, model.Y, treat="posaff", mediator="er89",  boot=TRUE, sims=500)

返回错误消息:[.data.frame(m.data,,treat):选择了未定义的列

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

treatmediator中使用的变量必须出现在两个模型中:

treat a character string indicating the name of the treatment variable used in the models.
The treatment can be either binary (integer or a two-valued factor) or continuous
(numeric).
mediator a character string indicating the name of the mediator variable used in the models

Source

一个简单的工作示例:

library("mediation")

db<-data.frame(y=c(1,2,3,4,5,6,7,8,9),x1=c(9,8,7,6,5,4,3,2,1),x2=c(9,9,7,7,5,5,3,3,1),x3=c(1,1,1,1,1,1,1,1,1))

model.Y <- lm(y ~ x1+x2,db)
model.M <- lm(y ~ x1+x2+x3, db)

results <- mediate(model.M, model.Y, treat="x1", mediator="x2", boot=TRUE, sims=500)