多元线性回归:用户定义函数中的错误

时间:2017-06-05 11:37:29

标签: r function regression user-defined-functions linear-regression

我已经为MLR写了我的功能。但是,输出似乎存在问题(最后参见示例)。

但是当我逐行运行代码时,输​​出是正确的。

mlr <- function(dependentvar, dataset) {

x <- model.matrix(dependentvar ~., dataset) # Design Matrix for x

y <- dependentvar # dependent variable

betas <- solve(crossprod(x))%*%crossprod(x,y) # beta values

SST <- t(y)%*%y - (sum(y)^2/dim(dataset)[1]) # total sum of squares

SSres <- t(y)%*%y -(t(betas)%*%crossprod(x,y))  # sum of squares of residuals

SSreg <- SST - SSres  # regression sum of squares

sigmasqr <- SSres/(length(y) - dim(dataset)[2])  # variance or (MSE)

varofbeta <- sigmasqr[1]*solve( crossprod(x)) # variance of beta

cat("SST:", SST,"SSresiduals:", SSres,"SSregression:", SSreg, sep = "\n", append = FALSE)

return(betas)

}

要查看问题,请尝试

mlr(trees$Height, trees)

即使我摆脱$

,我也会遇到同样的问题
Height <- trees$Height
mlr(Height, trees)

1 个答案:

答案 0 :(得分:1)

使用以下内容:

x <- model.matrix(reformulate(".", dependentvar), dataset)
y <- dataset[[dependentvar]]

并将dependentvar作为字符串传递。

示例:

mlr("Height", trees)