【发布时间】: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