Я пытаюсь подогнать линию + экспоненциальную кривую к некоторым данным. Для начала я попытался сделать это на некоторых искусственных данных. Функция: Это фактически экспоненциальная кривая с линейным сечением, а также дополнительный параметр горизонтального сдвига ( m ). Однако, когда я использую функцию R, я получаю страшную ошибку « матрица сингулярного градиента при начальных оценках параметров », даже если я использую те же параметры, которые я использовал для генерации данных в первую очередь. Я пробовал разные алгоритмы, разные начальные значения и пытался использовать
nls()
optim
минимизировать остаточную сумму квадратов, все безрезультатно. Я читал, что возможной причиной этого может быть чрезмерная параметризация формулы, но я не думаю, что это так (есть?) У кого-нибудь есть предложения по этой проблеме? Или это просто неловкая модель?
Краткий пример:
#parameters used to generate the data
reala=-3
realb=5
realc=0.5
realr=0.7
realm=1
x=1:11 #x values - I have 11 timepoint data
#linear+exponential function
y=reala + realb*realr^(x-realm) + realc*x
#add a bit of noise to avoid zero-residual data
jitter_y = jitter(y,amount=0.2)
testdat=data.frame(x,jitter_y)
#try the regression with similar starting values to the the real parameters
linexp=nls(jitter_y~a+b*r^(x-m)+c*x, data=testdat, start=list(a=-3, b=5, c=0.5, r=0.7, m=1), trace=T)
Благодарность!