从r中的X和y生成值beta的向量的函数
我想编写一个函数,从 X 和 y 生成 beta 值的向量,我们得到
β = [(X^T)*X]^-1 * (X^T) * y
我写了一个这样的代码,但它把错误变成了 Error in t(X) * X : non-conformable arrays
请帮我解决一下这个。
代码:
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
}