Функция rationalfit
в пакете pracma
сделает это, но вы должны быть осторожны при работе с полюсами. Смотрите следующий пример:
f <- function(x) -(x^2-3*x+2)/(x^2+1)
xs <- seq(0, 3, len=21); ys <- f(xs)
library(pracma)
rationalfit(xs, ys, d1=2, d2=2)
# $p1 = -1 3 -2
# $p2 = 1.000000e+00 -3.663736e-15 1.000000e+00
d1
и d2
- максимально допустимые степени полиномов числителя и знаменателя.
Если данные неточны, они будут соответствовать полиномиальным коэффициентам в смысле наименьших квадратов. Здесь нет терминов ошибок или статистических показателей (как в lm
), это простое вычисление из численного анализа.