现在我想在下面的公式中获得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的平均值和标准差。
答案 0 :(得分:1)
这是您可以做的。
根据x
,y
和C
(根据您的编辑)的前两个条目,通过一个显式示例进行说明是说明性的。我们可以使用基数R的函数-A x + B y = C
A
和B
的两个线性方程组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
我们通过将sol
和x
值的矩阵乘以系数y
和A
B
确实是一个解决方案
mat %*% sol
# [,1]
#[1,] -8.965961
#[2,] -8.883207
正如预期的那样,这些只是C
的前两个值,所以一切都很好:-)
为了解决x
,y
和C
中2个条目的 all 个组合的线性方程组,我们可以使用{{ 1}}获得所有组合,然后使用与上述相同的方法。所得对象combn
是一个矩阵,其中两行的res
和A
系数
B
现在很容易计算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