Как получить коэффициенты наклона как х, так и у? - PullRequest
0 голосов
/ 19 июня 2019

Теперь я хочу получить значения коэффициентов наклона A и B в следующем уравнении:

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

Как я могу решить эту проблему и получить A & B с помощью R?


Прошу прощения за неполное объяснение.Я добавил больше деталей, как показано ниже ;

Теперь у меня есть три значения 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

В этом случае можно ли определить значения наклона A и B, используя известные параметры y, x и C?

Например, уравнениеможно написать так:

-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.

Моя конечная цель - вычислить среднее значение & sd для каждого А и В.

1 Ответ

1 голос
/ 25 июня 2019

Вот что вы можете сделать.

  1. Иллюстративно проработать явный пример, основанный на первых двух записях x, y и C (согласно вашему редактированию). Мы можем решить систему двух линейных уравнений -A x + B y = C для A и B, используя базовую функцию R 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, так что все хорошо: -)

  2. Чтобы решить систему линейных уравнений для всех комбинаций из 2 записей из x, y и C, мы можем использовать 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
    
  3. Теперь легко вычислить среднее / sd значений коэффициентов для A и B; например, для вычисления среднего мы можем использовать rowMeans

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

    для стандартного отклонения

    apply(res, 1, sd)
    #           A            B
    #4.134705e-05 4.087056e-06
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...