【问题标题】:Matrix Math: Using coefficients from a linear regression to calculate values矩阵数学:使用线性回归中的系数来计算值
【发布时间】:2013-12-05 16:37:14
【问题描述】:

我有一个由 1 行和 2 列组成的矩阵[D](第 1 列中的截距,第 2 列中的斜率)。

然后我有一个 30 行和 2 列的矩阵 [C],其中该矩阵的第 2 列是感兴趣的。我想取斜率[D, 2] 值乘以[C, 2] 值并加上截距[D,1],然后将新计算的值存储在新矩阵中。

我现在的代码:

A <- matrix(c(Box.Z, Box.DC.gm), nrow=42)

randco

B<- A[sample(42,6),]
arows <- apply(A, 1, paste, collapse="_")
brows <- apply(B, 1, paste, collapse="_")
C<- A[-match(brows, arows), ]
D<- lm(B[,2] ~ B[,1])$coefficients

}

Z

【问题讨论】:

    标签: r math matrix


    【解决方案1】:

    您可以在您的lm 对象上使用predict。诀窍是给它 C 列颠倒:

    predict(lm(B[,2]~B[,1]), newdata=list(B=C[,2:1]))
    

    【讨论】:

    • 如果我希望 newdata 在矩阵而不是列表中,这可能吗?
    • 如果在强制数据帧(将被尝试)时,结果数据帧具有必要的列名,则 predict 不会抛出错误。整体策略是否合理是您的责任
    • 你能解释一下语法的 list(B=C[,2:1]) 部分吗?我不确定他们在这里指的是什么。谢谢!
    • 因为你在lm调用中指定了解释变量是一个名为B的对象的第二列,所以你必须传递去预测。
    【解决方案2】:

    只需在 C 矩阵中添加一列 1,然后矩阵相乘:

    cbind(1,C[,2]) %*% D
    

    【讨论】:

    • 我想将矩阵 C 的第 2 列仅乘以矩阵 D 的第 2 列中的斜率,然后将截距值添加到矩阵 D 的第 1 列中。您的函数似乎不起作用那个。
    猜你喜欢
    • 2018-10-28
    • 1970-01-01
    • 2018-03-16
    • 2013-01-08
    • 2020-10-20
    • 1970-01-01
    • 2014-10-11
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多