矩阵乘以标量时的不一致性误差

Posted

技术标签:

【中文标题】矩阵乘以标量时的不一致性误差【英文标题】:Non-conformability error in multiplication of a matrix by a scalar 【发布时间】:2022-01-21 06:33:14 【问题描述】:

我不明白为什么会在以下内容中出现不符合性错误:

data(mtcars)
x <- as.matrix(subset(mtcars, select = -c(disp)))
x <- cbind(x,rep(1, times = nrow(x)))
y <- as.matrix(mtcars$disp)
beta <- solve(t(x) %*% x) %*% t(x) %*% y
ehat <- y - x %*% beta
Var_OLS = ((1/(nrow(x) - ncol(x))) * (t(ehat) %*% ehat)) * (solve(t(x) %*% x))

术语((1/(nrow(x) - ncol(x))) * (t(ehat) %*% ehat)) 是一个标量。而(solve(t(x) %*% x)) 本身就可以正常工作。这是怎么回事?

【问题讨论】:

【参考方案1】:

((1/(nrow(x) - ncol(x))) * (t(ehat) %*% ehat)) 是一个矩阵,(solve(t(x) %*% x)) 也是。这里应用了矩阵乘法的规则。由于它不满足它们,因此您会收到不合格数组错误。

((1/(nrow(x) - ncol(x))) * (t(ehat) %*% ehat)) 更改为向量,因为它只有 1 个值并且应该可以工作。

Var_OLS = ((1/(nrow(x) - ncol(x))) * (t(ehat) %*% ehat))[, 1] * (solve(t(x) %*% x))

【讨论】:

以上是关于矩阵乘以标量时的不一致性误差的主要内容,如果未能解决你的问题,请参考以下文章

kappa一致性系数和spearman系数的区别

pytorch笔记:pytorch的乘法

保证缓存与数据库双写时的数据一致性

标量的OpenCV双矩阵除法产生不正确的结果

我想把三个三维矩阵合并成一个思维矩阵,且保持举证的一致性不变,请大家教教我用啥方法!谢谢!

Ruby on Rails - 需要重新加载模型时的不一致性?