【问题标题】:In R, doing linear regression在 R 中,做线性回归
【发布时间】:2020-08-26 22:04:00
【问题描述】:

我正在逐步进行手动线性回归测试。在等式中:

y = a1 + a2 * x

我没有成功让 R 计算超出第一个 x 值的 y。以下是我的代码:

library(tidyverse)
library(modelr)

# training dataset
train_data <- sim1

str(sim1)
tibble [30 × 2] (S3: tbl_df/tbl/data.frame)
$ x: int [1:30] 1 1 1 2 2 2 3 3 3 4 ...
$ y: num [1:30] 4.2 7.51 2.13 8.99 10.24 ...

# equations dataset
equation_data <- tibble(
  a1 = runif(250, min = -20, max = 40),
  a2 = runif(250, min = -5, max = 5)
)

str(equation_data)
tibble [250 × 2] (S3: tbl_df/tbl/data.frame)
$ a1: num [1:250] 32.81 33.11 9.97 -18.64 30.32 ...
$ a2: num [1:250] -4.9 1.23 -4.11 -3.01 4.74 ...

# function to predict y from equation data
predict_y <- function(param, train){
  param[1] + param[2] * train$x
}

predict_y(as.vector(equation_data[1,]), train_data)
$     a1
$1 27.90916

如您所见,R 只计算第一个 x 值:

y = a1 + a2 * x

27.909 = 32.81 + (-4.9) * 1

如何使 R 使用所有 30 个 x 值生成一个包含 30 个 y 值的向量?

谢谢!

【问题讨论】:

  • 线性回归使用最小二乘法。你想做什么?
  • 或者您想要的是数据框中每一行的线性模型??
  • 嗨鸭子,我只是在做“预测y”步骤。我想为 equation_data 的每一行预测 30 年。

标签: r linear-regression


【解决方案1】:

尝试以下操作。您需要使用as.numericequation_data 的每一行转换为向量。我没有你的 sim1 数据框。所以我创建了一个。

library(tidyverse)
library(modelr)

# training dataset
train_data <- data.frame(x = c(1, 1, 1, 2, 2),
                         y = c(4.2, 7.51, 2.13, 8.99, 10.24))

# equations dataset
equation_data <- tibble(
  a1 = runif(250, min = -20, max = 40),
  a2 = runif(250, min = -5, max = 5)
)

# function to predict y from equation data
predict_y <- function(param, train){
  param[1] + param[2] * train$x
}

predict_y(as.numeric(equation_data[1,]), train_data)

【讨论】:

    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 2016-07-09
    • 2017-03-24
    • 2011-10-14
    • 2018-04-28
    • 2023-03-11
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多