【发布时间】:2014-04-30 19:38:39
【问题描述】:
我正在尝试在 R 中重建 lm() 函数作为练习。这是我目前正在使用的代码(你会看到函数中唯一的 return() 值是 b,但是一旦我修复了整个函数,我会改变它):
OLS <- function(y,X){
df <- nrow(X) - ncol(X);
b <- solve(t(X) %*% X) %*% (t(X) %*% y);
se_whole <- as.numeric(sqrt((t(y - X %*% b)%*%(y - X %*% b))/df));
se_beta <- se_whole * solve(t(X) %*% X);
return(b)
}
当我运行该函数时,我得到的 b 只是一个 NA 的列向量。为什么会这样?我认为这与我在函数中对 b 的定义有关,但我似乎无法弄清楚我哪里出错了。也许有人可以启发我!
谢谢!
【问题讨论】:
-
y和X为函数提供了什么? -
它对我有用:
with(mtcars, OLS(mpg, cbind(1, wt))); lm(mpg ~ wt, data = mtcars)