r - 从 r 中的 X 和 y 生成值向量的函数
问题描述
我想编写一个函数,从 X 和 y 生成 beta 值向量,我们得到
贝塔 = [(X^T)*X]^-1 * (X^T) * y
我这样写了一个代码,但它把错误变成了 t(X) * X 中的错误:不符合的数组
请帮我解决一下这个。
代码:
set.seed(143)
X <- cbind(rep(1,50), rnorm(50,0,1), rnorm(50,0,1))
y <- 3 + -4*X[,2] + 2*X[,3] + rnorm(50,0,1)
BetaEstimator <- function(X, y){
Beta <- solve(t(X)*X) * t(X) * y
return(Beta)}
BetaEstimator(X,y)
解决方案
您应该使用矩阵乘法的符号,即使用%*%
代替*
.
尝试:
BetaEstimator <- function(X, y) {
solve(t(X) %*% X) %*% t(X) * y
}
推荐阅读
- c# - 如何修复错误清除表?SQL 命令
- java - 如何防止从 src/main/resources 和 src/test/resources 加载资源?
- python-3.x - Python - gphoto2 如何弄清楚函数的作用?
- java - jaxws-maven-plugin 多次执行不起作用
- apache-spark - 平面文件(orc,csv)比火花中的增量表更有效吗
- desktop-bridge - 在 DesktopAppConverter 中使用 -AppFileTypes 时出错
- mysql - 带有 SQL 查询结果的 FOR LOOP
- visual-studio - 有没有办法在 Visual Studio 中将测量单位从像素设置为点?
- google-bigquery - Google BigQuery 错误:UPDATE/MERGE 必须与每个目标行最多匹配一个源行
- java - 使用尽可能少的空间连续分布点