Как использовать надежную аппроксимацию моделей нелинейной регрессии в nlslm?
Моя цель - оценить два параметра модели (см. CE_hat). Я использую 7 наблюдений, чтобы соответствовать двум параметрам: (w,a), поэтому переоснащение происходит несколько раз. Одна из идей заключается в том, чтобы ограничить влияние каждого наблюдения, чтобы выбросы не "захватывали" оценки параметров. Метод, который был ранее предложен мне, был nlrob
, Однако проблема в том, что крайние случаи, такие как приведенный ниже пример, возвращают Missing value or an infinity produced when evaluating the model
, Чтобы избежать этого я использовал nlsLM
которая работает в направлении сближения за счет возвращения странных оценок.
Любые идеи относительно того, как я могу использовать надежную подгонку с этим примером?
Я приведу ниже воспроизводимый пример. Наблюдаемыми здесь являются CE, H и L. Эти три элемента вводятся в функцию (CE_hat) для оценки "a" и "w". Значения, близкие к 1 для "a" и близкие к 0,5 для "w", как правило, считаются более разумными. Как вы, надеюсь, можете увидеть, когда все наблюдения включены, a=91, а w= рядом с 0. Однако если исключить 4-е (или 7-е) наблюдение (для CE, H и L), мы получим гораздо более разумные оценки. В идеале я хотел бы добиться того же результата, не исключая эти наблюдения. Одной из идей было бы ограничить их влияние. Я понимаю, что может быть не так ясно, почему эти наблюдения представляют собой своего рода "выбросы". Трудно что-то сказать по этому поводу, не говоря слишком многого, я боюсь, но я рад вдаваться в подробности о модели, если возникнет вопрос.
library("minpack.lm")
options("scipen"=50)
CE<-c(3.34375,6.6875,7.21875,13.375,14.03125,14.6875,12.03125)
H<-c(4,8,12,16,16,16,16)
L<-c(0,0,0,0,4,8,12)
CE_hat<-function(w,H,a,L){(w*(H^a-L^a)+L^a)^(1/a)}
aw<-nlsLM(CE~CE_hat(w,H,a,L),
start=list(w=0.5,a=1),
control = nls.lm.control(nprint=1,maxiter=100))
summary(aw)$parameters