r - 在 R 中建立混合效应模型时,模型如何应用于循环指定的所有变量?
问题描述
我在 R 中安装了一个混合效应模型。但我想用一个代码将此模型应用于我的数据集中的所有数值变量。我写了一个类似下面的代码,但出错了。我能做些什么?
我的数据=df
# 200 x 20
week weight height .......
<fct> <dbl> <dbl>
1 week1 50.0 160
2 week1 62.5 172
3 week2 49.6 155
4 week3 80.0 165
5 week2 56.8 163
6 week3 72.3 180
.
.
.
.
为单个变量建立混合效应模型如下
mixed.model <- lmer( weight ~ 1 + (1|week), data = df)
a=ranova(mixed)
a$`Pr(>Chisq)`
我编写的适用于多个变量的代码
for (i in 2:(dim(df)[2])){
mixed.model <- lmer( i ~ 1 + (1|week), data = df)
}
我得到的错误
Error in model.frame.default(data = df, drop.unused.levels = TRUE, : variable lengths differ (found for 'week')
解决方案
我可能会先制定一个公式,然后将公式传递给模型函数(感谢 Ben Bolker 提供有关重新制定的提示):
for (i in names(df)[-1]){
form <- reformulate("1 + (1|week)", response=i)
mixed.model <- lmer(form, data = df)
}
编辑
为了回应关于始终获取第一个变量的评论,这是我在运行循环时得到的,每次打印公式时:
df <- data.frame(
week = sample(1:3, 1000, replace=TRUE),
X1 = rnorm(1000),
X2 = rnorm(1000),
X3 = rnorm(1000)
)
library(lme4)
for (i in names(df)[-1]){
form <- reformulate("1 + (1|week)", response=i)
print(form)
# mixed.model <- lmer(form, data = df)
}
# X1 ~ 1 + (1 | week)
# X2 ~ 1 + (1 | week)
# X3 ~ 1 + (1 | week)
如您所见,每次迭代都有不同的公式。
推荐阅读
- javascript - 在特定的执行上下文(iframe)上运行 javascript
- python - 使用 tensorboard Python Tensorflow 显示模型的实时训练
- firefox - 你可以使用 Rust 编写 Firefox 附加组件/扩展吗?
- python - 重新采样总和保持每天熊猫最后一次观察的指数
- quanteda - Quanteda:给定 n-1 个前置词/类型,如何获取 ngram 及其频率
- php - Twig 语法 - 如何从嵌套的动态键中获取值
- android - 致命错误:sys/cdefs.h:编译 openssl-1.1.0h 时没有这样的文件或目录
- scylla - Json插入到scylla表中
- react-native - 如何多次返回相同的元素
- oracle-apex - 如何从 oracle apex5 中的 APEX_ITEM.CHECKBOX2 中获取选中的项目?