Ну, я не пробовал подгонять двухпараметрическую функцию, но можем и попробовать.
Код:
># Инициируем данные
> MyData<-data.frame(x=c(rep(c(1,2,3),3)),y=c(1,1,1,2,2,2,3,3,3))
> MyData$I<-MyData$x^2-MyData$y^2
># Таращимся на результат
> MyData
x y I
1 1 1 0
2 2 1 3
3 3 1 8
4 1 2 -3
5 2 2 0
6 3 2 5
7 1 3 -8
8 2 3 -5
9 3 3 0
># Подключаем доступ к переменным из таблицы по именам
> attach(MyData)
> (MyMdl<-lm(I~x+y+x*y+I(x^2)+I(y^2)))
> summary(MyMdl)
Call:
lm(formula = I ~ x + y + x * y + I(x^2) + I(y^2))
Residuals:
1 2 3 4 5 6 7
1.436e-16 -3.583e-16 2.147e-16 -5.121e-17 2.445e-16 -1.933e-16 -9.244e-17
8 9
1.138e-16 -2.139e-17
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.067e-15 1.322e-15 1.563e+00 0.216
x -1.776e-15 9.840e-16 -1.805e+00 0.169
y 2.989e-16 9.840e-16 3.040e-01 0.781
I(x^2) 1.000e+00 2.298e-16 4.351e+15 <2e-16 ***
I(y^2) -1.000e+00 2.298e-16 -4.351e+15 <2e-16 ***
x:y -3.065e-16 1.625e-16 -1.886e+00 0.156
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.25e-16 on 3 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 3.711e+32 on 5 and 3 DF, p-value: < 2.2e-16
# Дальше по одному убираем лишнее
# Курс по аппроксимации МНК читать не собираюсь.
# финальная стадия
> MyMdl<-lm(I~I(x^2)+I(y^2)+0)
> summary(MyMdl)
Call:
lm(formula = I ~ I(x^2) + I(y^2) + 0)
Residuals:
Min 1Q Median 3Q Max
-4.899e-16 -1.357e-16 -2.659e-17 8.422e-17 3.775e-16
Coefficients:
Estimate Std. Error t value Pr(>|t|)
I(x^2) 1.000e+00 2.336e-17 4.282e+16 <2e-16 ***
I(y^2) -1.000e+00 2.336e-17 -4.282e+16 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.985e-16 on 7 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 1.1e+33 on 2 and 7 DF, p-value: < 2.2e-16
> anova(MyMdl)
Analysis of Variance Table
Response: I
Df Sum Sq Mean Sq F value Pr(>F)
I(x^2) 1 32.667 32.667 3.6663e+32 < 2.2e-16 ***
I(y^2) 1 163.333 163.333 1.8331e+33 < 2.2e-16 ***
Residuals 7 0.000 0.000
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Предупреждение
In anova.lm(MyMdl) :
применение F-критерия для в целом хорошей подгонки бессмысленно
# Убираем за собой
> detach(MyData)
Где-то так. R также работает с матрицами, но я в этом пока не разбирался, поэтому матрицу развернул. Думаю, идея понятна.