R语言中介分析报错:undefined columns selected问题求助
问题原因
你构建线性模型时用了df$BoroughPopulation这种写法,导致lm模型内部记录的变量名是带df$前缀的,而非原始列名BoroughPopulation。mediate函数要求模型中的变量名和data参数里的列名完全匹配,因此找不到对应列才报错。
修正方案
重构所有lm模型,直接使用变量名(不带df$),并通过data参数指定数据集,确保模型内变量名与data中的列名一致。
修正后的完整代码
# 若未安装mediation包,先运行install.packages("mediation") library(mediation) # 模型1:用BoroughPopulation预测PM25PWACugm3 model1 <- lm(PM25PWACugm3 ~ BoroughPopulation, data = df) # 模型2:用PM25PWACugm3预测Baselinedeaths model2 <- lm(Baselinedeaths ~ PM25PWACugm3, data = df) # 模型3:用BoroughPopulation和PM25PWACugm3共同预测Baselinedeaths model3 <- lm(Baselinedeaths ~ BoroughPopulation + PM25PWACugm3, data = df) # 调用mediate函数,此时变量名完全匹配 mediate_result <- mediate(model1, model2, model3, treat = "BoroughPopulation", mediator = "PM25PWACugm3", data = df) # 查看中介分析结果 summary(mediate_result)
补充说明
lm(变量~变量, data=df)是R构建模型的标准写法,既能避免变量名匹配问题,代码也更简洁易读。- 运行
summary(mediate_result)后,可查看中介效应的估计值、置信区间及显著性检验结果,判断中介效应是否显著。
内容的提问来源于stack exchange,提问作者katehasnoidea
相关产品推荐
相关产品推荐

