Я намагаюся вписати лінію + криву експоненції до деяких даних. Для початку я спробував це зробити за деякими штучними даними. Функція: Це фактично експоненціальна крива з лінійним перерізом, а також додатковим параметром горизонтального зсуву ( 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)
Спасибі!