У мене є основні дані щодо скорочення викидів та вартості автомобіля:
q24 <- read.table(text = "reductions cost.per.car
50 45
55 55
60 62
65 70
70 80
75 90
80 100
85 200
90 375
95 600
",header = TRUE, sep = "")
Я знаю, що це експоненціальна функція, тому я очікую, що зможу знайти модель, яка відповідає:
model <- nls(cost.per.car ~ a * exp(b * reductions) + c,
data = q24,
start = list(a=1, b=1, c=0))
але я отримую помилку:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Я прочитав безліч запитань про помилку, яку я бачу, і я вважаю, що проблема, ймовірно, в тому, що мені потрібні кращі / різні start
значення ( initial parameter estimates
має трохи більше сенсу), але я не впевнений, враховуючи дані, які я маю, як би я міг оцінити кращі параметри.
exp(50)
і exp(95)
з у-значеннями при х = 50 і х = 95. Якщо ви встановите c=0
та приймаєте журнал y (створення лінійних відносин), ви можете скористатися регресією, щоб отримати початкові оцінки для log ( ) і які будуть достатні для ваших даних (або якщо ви підходите до рядка через походження, ви можете залишити в 1 і просто використовуйте оцінку для ; цього також достатньо для ваших даних). Якщо знаходиться набагато за межами досить вузького інтервалу навколо цих двох значень, у вас виникнуть проблеми. [Або спробуйте інший алгоритм]b a b b