如何获得x和y的斜率系数?

时间:2019-06-19 10:41:36

标签: r regression lm

现在我想在下面的公式中获得A和B的倾斜系数的值;

By = Ax + C, where I have 100 sets of x, y and C.

如何解决此问题并使用R获得A和B?


很抱歉,您的解释不完整。 我在下面添加了更多细节;

现在我有y,x和C的三个值,如下所示:

 y <- c(-9216.656,-9134.369,-9186.813,-8780.633,-9006.787)                 
 x <- c(908.4656,932.6687,1015.0424,816.9116,703.2510)                       
 C <- c(-8.965961,-8.883207,-8.935910,-8.546677,-8.766842)

我所知道的y,x和C可以解释为以下等式;

By = Ax + C

在这种情况下,我可以通过使用已知的y,x和C参数来确定A和B的斜率值吗?

例如,等式可以写成如下;

-9216.656*B = 908.4656*A -8.965961 (using y[1], x[1], C[1])
-9134.369*B = 932.6687*A -8.883207 (using y[2], x[2], C[2])

我想获得满足上述方程式的A和B的值。如果我理解正确,则y,x和C两组的每种组合都可以产生A和B组。

在这里,一组y,x和C将产生一个方程。我想求解两个方程的所有组合。在这种情况下,组合的总数应为

choose(5, 2) = 10

然后,如果我理解正确,我将获得10套A和B。

我的最终目标是计算A和B的平均值和标准差。

1 个答案:

答案 0 :(得分:1)

这是您可以做的。

  1. 根据xyC(根据您的编辑)的前两个条目,通过一个显式示例进行说明是说明性的。我们可以使用基数R的函数-A x + B y = C

    来求解AB的两个线性方程组solve的系统
    idx <- c(1, 2)
    mat <- matrix(c(x[idx], y[idx]), ncol = 2)
    sol <- solve(mat, C[idx])
    sol
    #[1] 8.371691e-05 9.810516e-04
    

    我们通过将solx值的矩阵乘以系数yA

    来验证B确实是一个解决方案
    mat %*% sol
    #          [,1]
    #[1,] -8.965961
    #[2,] -8.883207
    

    正如预期的那样,这些只是C的前两个值,所以一切都很好:-)

  2. 为了解决xyC中2个条目的 all 个组合的线性方程组,我们可以使用{{ 1}}获得所有组合,然后使用与上述相同的方法。所得对象combn是一个矩阵,其中两行的resA系数

    B
  3. 现在很容易计算res <- apply(combn(length(x), 2), 2, function(idx) { setNames(solve(matrix(c(x[idx], y[idx]), ncol = 2), C[idx]), c("A", "B")) }) # [,1] [,2] [,3] [,4] [,5] #A 8.371691e-05 9.311096e-06 0.0001004419 2.732112e-05 -2.208575e-05 #B 9.810516e-04 9.737176e-04 0.0009827001 9.754928e-04 9.702486e-04 # [,6] [,7] [,8] [,9] [,10] #A 9.391842e-05 3.562515e-05 3.819669e-05 2.069634e-05 2.729837e-07 #B 9.820932e-04 9.761412e-04 9.769091e-04 9.749755e-04 9.733808e-04 A的系数值的平均值/标准差;例如,要计算平均值,我们可以使用B

    rowMeans

    对于标准偏差

    rowMeans(res)
    #           A            B
    #3.874148e-05 9.766710e-04