Если я вычисляю значение y для конкретного значения x с помощью функции предиката (), я получаю значение, отличное от того, которое я могу вычислить с помощью уравнения явного подбора.
Я подгонял данные ниже, используя nls (MyEquation) и получил параметры m1, m2, ....Затем я хочу выполнить обратное вычисление значения y для конкретного значения x, используя как функцию предсказания (m), так и явное уравнение, которое я использовал для подгонки (ввод желаемого значения x).Я получаю разные значения у одного и того же значения х.Какой из них правильный?
> df
pH activity
1 3.0 0.88
2 4.0 1.90
3 5.0 19.30
4 6.0 70.32
5 7.0 100.40
6 7.5 100.00
7 8.0 79.80
8 9.0 7.75
9 10.0 1.21
x <- df$pH
y <- df$activity
m<-nls(y~(m1*(10^(-x))+m2*10^(-m3))/(10^(-m3)+10^(-x)) - (m5*(10^(-x))+1*10^(-i))/(10^(-i)+10^(-x)), start = list(m1=1,m2=100,m3=7,m5=1))
> m
Nonlinear regression model
model: y ~ (m1 * (10^(-x)) + m2 * 10^(-m3))/(10^(-m3) + 10^(-x)) - (m5 * (10^(-x)) + 1 * 10^(-i))/(10^(-i) + 10^(-x))
data: parent.frame()
m1 m2 m3 m5
-176.032 13.042 6.282 -180.704
residual sum-of-squares: 1522
Number of iterations to convergence: 14
Achieved convergence tolerance: 5.805e-06
list2env(as.list(coef(m)), .GlobalEnv)
#calculate y based on fitting parameters
# choose the 7th x value (i.e. x[7]) that corresponds to pH = 8
# (using predict)
> x_pH8 <- x[7]
> predict(m)[7]
[1] 52.14299
# (using the explicit fitting equation with the fitted parameters
> x1 <- x_pH8
> (m1*(10^(-x1))+m2*10^(-m3))/(10^(-m3)+10^(-x1)) - (m5*(10^(-x1))+1*10^(-8.3))/(10^(-8.3)+10^(-x1))
[1] 129.5284
Как видите: предикат (м) [7] дает y = 52,14299 (для х = 8)
, а
(m1 * (10 ^ (- x1)) + m2 * 10 ^ (- m3)) / (10 ^ (- m3) +10 ^ (- x1)) - (m5 * (10 ^ (- x1))+ 1 * 10 ^ (- 8,3)) / (10 ^ (- 8,3) +10 ^ (- x1)) дает у = 129,5284 (для х = 8)