2011-12-27 2 views
2

Я новичок в R и должен выполнить полиномиальную регрессию с рациональными функциями в R. Функция выглядит следующим образом:R: регрессия с рациональными функциями

numerator is A0 + A1*y + A2*y^2 
denominator is B0 + B1*y + B2*y^2 

и рациональная функция

F= -(numerator)/denominator 

Таким образом, мы приведены значения F и значения y с константами A0, A1, A2, B0, B1 и B2 быть определенным.

Как выполнить такую ​​регрессию в R?

Спасибо.

+3

Есть ли ошибки в этом? Или значения F - точные значения коэффициента полинома, оцененного по y? Регрессия обычно включает в себя условия ошибки: y = Ax + N (0, сигма) или тому подобное. Это важный бит. Если ошибки нет, это не регрессия, ее «решение для A0, A1, A2 ...» и т. Д. – Spacedman

+1

В общем, 'nls' будет соответствовать любой функции, которую вы хотите. Есть ли причина (например, домашняя работа), что вы должны соответствовать вашим данным в этой форме функции? Часто быстрее и проще (и с сопоставимыми остаточными ошибками подгонки) подбирать данные в простой полином независимо от исходной функции генерации. –

+0

@ Spacedman Я принимаю форму этой формы к моим данным. Конечно, будут ошибки. Где я могу найти дополнительную информацию о том, как правильно сформулировать проблему регрессии? 1 голос вверх. – yCalleecharan

ответ

3

Функция 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), это простой расчет из численного анализа.

+0

@ Hans Спасибо за ваш ответ. Да, полюса следует избегать, насколько это возможно, в желаемом диапазоне посадки. 1 голос вверх. – yCalleecharan

+0

Я нашел это полезным для своей работы. Это не вопрос OP, но спасибо за то, что он полезен мне в том, что я делаю. – EngrStudent