我正在尝试通过使用梯度下降法优化线性函数。 在算法的最后,我得到了一个向量,该向量的系数和b系数的维数相同,与我的算法计算出的a和b不同。
对于a和b的每种组合,我想绘制一个线性函数y = a * x + b,因为我知道它生成了x和y。
自己必须拥有通过算法计算出的中间线性函数的所有表示形式。最后,我想添加由lm()获得的线性回归,以证明该方法可以优化a和b系数。
这是我编写的用于绘制不同线性函数的代码:
#a and b obtained with algorithm
h = function (a,b,x) a * x + b
data = matrix(c(a,b,x), ncol = 3, nrow = 358)
# 358 is the length of the vectors
i = 1
for (i in length(a)){
plot(h(a[i,1],x[i,3],b[i,2]))
i = i+1
}
让我烦恼的问题之一是我不确定是否可以在不使用图和点函数的情况下叠加线性函数。 第二个问题是,如果我给出a和b系数,我不确定是否可以绘制线性函数?
您有更好的主意吗?
答案 0 :(得分:0)
函数abline
将直线添加到绘图中。它也可以用来绘制回归直线。
您没有提供任何示例数据(下一次,在您的问题中包括示例数据!),但是看起来像这样:
set.seed(47)
x = runif(50) - 0.5
y = 4 * x + 1 + rnorm(50)
a_values = seq(0, 1, length.out = 10)
b_values = seq(0, 4, length.out = 10)
plot(x, y)
for (i in seq_along(a_values)) {
abline(a = a_values[i], b = b_values[i], col = "dodgerblue2")
}
abline(lm(y ~ x), lwd = 2)