Здравствуйте!
Есть таблица такого вида.
![$\begin{tabular}[b]{| l | l | l | l | l |}
\hline
& & a_1 & a_2 & \cdots \\ \hline
e^n_1 & e^a_1& e_{11} & e_{12} & \\ \hline
e^n_2 & e^a_2& e_{21} & e_{22} & \\ \hline
\vdots& & & & \\ \hline
\end{tabular}$ $\begin{tabular}[b]{| l | l | l | l | l |}
\hline
& & a_1 & a_2 & \cdots \\ \hline
e^n_1 & e^a_1& e_{11} & e_{12} & \\ \hline
e^n_2 & e^a_2& e_{21} & e_{22} & \\ \hline
\vdots& & & & \\ \hline
\end{tabular}$](https://dxdy-01.korotkov.co.uk/f/8/4/1/841b99f56cb90b1848786ce1d1b4193d82.png)
Здесь

--- экспериментальные данные.
Коэффициенты

,

,

--- неизвестные числа, хотелось бы их найти.
Должны выполняться соотношения

Хотелось бы сделать это в R.
Обычно для линейной модели данные записываются в виде двух столбцов с числами и в ответе получается всего два параметра и много всякой статистической информации про них. Здесь у меня много параметров,

,

. И к виду двух столбцов никак не преобразовать. Как лучше исходную таблицу оформить и как красиво и компактно организовать такое вычисление?
Для примера, таблицу можно было бы записать так.
Код:
library(tidyverse)
data=tribble( ~en, ~ea, ~a1
"en1", "ea1", 0.1, 0.2, 0.3
"en2", "ea2", 0.4, 0.5, 0.6
"en3", "ea3", 0.7,0.8,0.9)
Можно преобразовать в "длинный" вид:
Код:
> data2 <- data %>% pivot_longer(-c(en,ea),names_to="a",values_to="e")
> data2
# A tibble: 9 × 4
en ea a e
<chr> <chr> <chr> <dbl>
1 en1 ea1 a1 0.1
2 en1 ea1 a2 0.2
3 en1 ea1 a3 0.3
4 en2 ea2 a1 0.4
5 en2 ea2 a2 0.5
6 en2 ea2 a3 0.6
7 en3 ea3 a1 0.7
8 en3 ea3 a2 0.8
9 en3 ea3 a3 0.9
Далее что-то вроде такого. (Понятно, что записано неправильно, но как сделать правильно мне сложно сообразить).
Код:
> data2$en<-as.factor(data2$en)
> data2$ea<-as.factor(data2$ea)
> data2$a<-as.factor(data2$a)
> data2
# A tibble: 9 × 4
en ea a e
<fct> <fct> <fct> <dbl>
1 en1 ea1 a1 0.1
2 en1 ea1 a2 0.2
3 en1 ea1 a3 0.3
4 en2 ea2 a1 0.4
5 en2 ea2 a2 0.5
6 en2 ea2 a3 0.6
7 en3 ea3 a1 0.7
8 en3 ea3 a2 0.8
9 en3 ea3 a3 0.9
> lm(e~I(ea*a+en*(1-a)),data2)
Ошибка в lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (не-NA) случаев
Вдобавок: Предупреждения:
1: В Ops.factor(ea, a) : ‘*’ не значимо для факторов
2: В Ops.factor(1, a) : ‘-’ не значимо для факторов
3: В Ops.factor(en, (1 - a)) : ‘*’ не значимо для факторов
Помогите пожалуйста.