繁体   English   中英

当自变量是矩阵时,如何在R的lm()中使用*运算符

[英]How to use the * operator in lm() in R when the independent variable is a matrix

我使用lm()拟合多个多变量线性模型

基本上,matrix1保存因变量(y),Matrix2保存因变量(x)

model.1<-lm(matrix1[, 1] ~ matrix2)

其中matrix2具有可变数量的列,具体取决于我要在回归中使用的参数的特定组合,而matrix2没有零值列。

该语句对于在独立变量(IV)之间没有相互作用的线性模型(例如: a0 + a1*x1 + a2*x2 ... )的线性模型很好用,但是如果我要介绍IV手册之间的相互作用,则表明在变量之间使用运算符*( model.1 <- lm(matrix1[, 1] ~ x1 * x2 * x3)model.1 <- lm(matrix1[, 1] ~ x1 * x2 * x3) )。 IV放在矩阵中时如何应用?

1) SO问题应该可以提供可重复的测试数据,但是这里我们已经使用内置的data.frame anscombe为您完成了测试。 定义测试数据后,我们定义一个数据框,其中包含所需的列和适当的公式。 最后,我们调用lm

# test data
matrix1 <- as.matrix(anscombe[5:8])
matrix2 <- as.matrix(anscombe[1:4])

DF <- data.frame(matrix1[, 1, drop = FALSE], matrix2) # cols are y1, x1, x2, x3, x4
fo <- sprintf("%s ~ (.)^%d", colnames(matrix1)[1], ncol(matrix2))  # "y1 ~ (.)^4"

lm(fo, DF)

给予:

Call:
lm(formula = fo, data = DF)

Coefficients:
(Intercept)           x1           x2           x3           x4        x1:x2  
    12.8199      -2.6037           NA           NA      -0.1626       0.3628  
      x1:x3        x1:x4        x2:x3        x2:x4        x3:x4     x1:x2:x3  
         NA           NA           NA           NA           NA      -0.0134  
   x1:x2:x4     x1:x3:x4     x2:x3:x4  x1:x2:x3:x4  
         NA           NA           NA           NA  

2)对此的一种变体,它在Call:给出了更好的结果Call: lm输出的一部分如下。 我们从上面使用DF do.call将传递fo变量的内容而不是其名称,以便我们在输出的Call:部分中看到该公式。 另一方面, quote(DF)用于强制名称DF显示而不是data.frame的内容。

lhs <- colnames(matrix1)[1]
rhs <- paste(colnames(matrix2), collapse = "*")
fo <- paste(lhs, rhs, sep = "~")  # "y1~x1*x2*x3*x4"
do.call("lm", list(fo, quote(DF)))

给予:

Call:
lm(formula = "y1 ~ x1*x2*x3*x4", data = DF)

Coefficients:
(Intercept)           x1           x2           x3           x4        x1:x2  
    12.8199      -2.6037           NA           NA      -0.1626       0.3628  
      x1:x3        x2:x3        x1:x4        x2:x4        x3:x4     x1:x2:x3  
         NA           NA           NA           NA           NA      -0.0134  
   x1:x2:x4     x1:x3:x4     x2:x3:x4  x1:x2:x3:x4  
         NA           NA           NA           NA  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM