我有一个名为dependents
的多个因变量的数据框,以及另一个名为explanatory
的解释性变量组成的数据框。我想对所有dependents
变量上的explanatory
中的每个变量进行回归。但是,无论做什么,我都会不断犯错误(每次都不同)。我在下面创建了一个更简单的问题版本:
dependents <- structure(list(exp1 = c(1,2,3),
exp2 = c(4,5,6),
exp3 = c(7,8,9)),
.Names = c("exp1", "exp2", "exp3"),
class = "data.frame", row.names = c(NA, -3L))
explanatory <- structure(list(var1 = c(1,2,3),
var2 = c(4,5,6),
var3 = c(7,8,9)),
.Names = c("var1", "var2", "var3"),
class = "data.frame", row.names = c(NA, -3L))
我尝试了以下代码:
engel <- lm(dependents ~ exp_variables )
engel <- lm(colnames(dependents) ~ colnames(exp_variables))
engel <- lapply(colnames(dependents), function(x) {
fit <- lm(paste(x,'~',colnames(exp_vars),collapse = "+")})
reg_data = cbind(dependents, exp_variables)
engel <- lm(dependents ~ exp_variables, data = reg_data )
reg_data = cbind(dependents, exp_variables)
engel <- lm(colnames(dependents) ~ colnames(exp_variables), data = reg_data )
engel <- lapply(dependents, function(x) {
fit <- lm(paste(x,'~',exp_vars,collapse = "+")})
reg_data = cbind(dependents, exp_variables)
engel <- lapply(dependents, function(x) {
fit <- lm(paste(x,'~',exp_vars,collapse = "+"), data=reg_data)})
reg_data = cbind(dependents, exp_variables)
engel <- lapply(colnames(dependents), function(x) {
fit <- lm(paste(x,'~',colnames(exp_vars),collapse = "+"), data=reg_data)})
有人可以告诉我编码此回归的正确方法是什么吗?
非常感谢。
答案 0 :(得分:1)
您的第一次尝试很棒,只是您应该提供矩阵而不是数据帧:
lm(as.matrix(dependents) ~ as.matrix(explanatory))
这是explanatory
不包含任何因素的情况。如果有因素,您可以使用
lm(as.matrix(dependents) ~ -1 + model.matrix(~ ., data = explanatory))
在我有-1
的地方,因为model.matrix
也不会为其创建两个列,所以我没有两个截距。当然,总有一种选择可以使操作更加简单明了,例如lapply
:
lapply(dependents, function(y) lm(y ~ ., data = cbind(y = y, explanatory)))
实际上,这甚至可能是最好的选择,因为您可以清楚地控制每个模型的公式,并且可以很好地保留回归变量的名称。