使用 as.factor() 自变量进行中介分析

问题描述

我正在尝试进行中介分析,但我的 IV 中有一个因素。这似乎导致了一些问题。举个例子:

data(iris)
library(mediation)
ols.0 <- lm(Sepal.Length ~ Petal.Length + as.factor(Species),data = iris)

ols.med <- lm(Sepal.Width ~ Petal.Length + as.factor(Species),data = iris)

ols.y <- lm(Sepal.Length ~ Petal.Length + Sepal.Width + as.factor(Species),data = iris)

results1 <- mediate(ols.med,ols.y,treat="Petal.Length",mediator="Sepal.Width",boot=TRUE,sims=500)

所以我可以很好地运行 lm() 命令,但是当我运行 mediate() 命令时,我收到此错误消息:

Running nonparametric bootstrap

Error in is.factor(x) : object 'Species' not found

有没有办法在运行 mediate() 命令时处理因子变量,或者是否有我应该考虑的替代包/方法

解决方法

最好在外部创建 as.factor,因为这可能会更改 call 属性名称。如果我们想在 as.factor 中使用 formula,请将其包裹在 I 中或在属性中进行更改

iris$Species <- as.factor(iris$Species)
ols.0 <- lm(Sepal.Length ~ Petal.Length + Species,data = iris)

ols.med <- lm(Sepal.Width ~ Petal.Length + Species,data = iris)

 ols.y <- lm(Sepal.Length ~ Petal.Length + Sepal.Width + Species,data = iris)

results1 <- mediate(ols.med,ols.y,treat="Petal.Length",mediator="Sepal.Width",boot=TRUE,sims=500)



str(results1)
List of 56
 $ d0           : num 0.129
 $ d1           : num 0.129
 $ d0.ci        : Named num [1:2] 0.0642 0.21
  ..- attr(*,"names")= chr [1:2] "2.5%" "97.5%"
 $ d1.ci        : Named num [1:2] 0.0642 0.21
  ..- attr(*,"names")= chr [1:2] "2.5%" "97.5%"
 $ d0.p         : num 0
 $ d1.p         : num 0
 $ d0.sims      : num [1:500,1] 0.111 0.137 0.197 0.116 0.215 ...
 $ d1.sims      : num [1:500,1] 0.111 0.137 0.197 0.116 0.215 ...
 $ z0           : num 0.776
 $ z1           : num 0.776
 $ z0.ci        : Named num [1:2] 0.636 0.907
# ..

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...