【问题标题】:Calculating RSS manually with given pairs of beta0 and beta1使用给定的 beta0 和 beta1 对手动计算 RSS
【发布时间】:2021-03-24 21:46:11
【问题描述】:

我正在尝试手动计算具有给定 beta0 和 beta1 对的数据集的 RSS。对于每对 (beta_0,beta_1) 值,我需要计算残差平方和。将其作为向量存储在data 中,称为RSS。这是提供的代码。

x = pinotnoir$Aroma
y = pinotnoir$Quality
fit = lm(y ~ x)
summary(fit)
b0s <- seq(0, 10, .1)
b1s <- seq(0, 4, .01)

data <- expand.grid(beta0=b0s, beta1=b1s)

这是我目前所拥有的。我认为残差计算是错误的,但我不确定如何解决。

rows = length(b1s)
rsd <- rep(NA,rows)
for (i in 1:rows){
  residual = (y - (b0s[i] + b1s[i] * x))^2
  rsd[i] <- residual
}
data <- expand.grid(beta0=b0s, beta1=b1s, RSS=rsd)

任何帮助将不胜感激。提前致谢!

【问题讨论】:

  • 嗨,欢迎来到 SO!我想这个问题如果发布在cross validated 上可能会得到更好的结果。

标签: r linear-regression


【解决方案1】:

我不确定这是否正是您的目标,但稍微调整您的代码,您可以获得残差平方和以及哪些 beta 可以最小化它们。 (以 mtcars 数据为例)

mtcars
x = mtcars$drat
y = mtcars$wt
(fit = lm(y ~ x))
summary(fit)
grid_len <- 20
b0s <- seq(5, 10, length.out = grid_len)
b1s <- seq(-3, -1, length.out = grid_len)

(data <- expand.grid(beta0=b0s, beta1=b1s))

rows = nrow(data)
resids <- rep(NA,rows)
for (i in 1:rows) {
  fitted <- (data$beta0[i] + (data$beta1[i] * x))
  squared_resid  <- (y - fitted)^2
  SSR <- sum(squared_resid)
  resids[i] <- SSR
  cat(i, ": ", SSR, "\n")
}

data[which.min(resids), ]
fit

结果:

> data[which.min(resids), ]
       beta0     beta1
332 7.894737 -1.315789
> fit

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
      7.906       -1.304  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2019-02-14
    • 2012-12-30
    • 2016-05-09
    • 1970-01-01
    • 2014-07-17
    • 2017-07-17
    相关资源
    最近更新 更多