Ho alcuni dati di base sulla riduzione delle emissioni e sul costo per auto:
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 = "")
So che questa è una funzione esponenziale, quindi mi aspetto di riuscire a trovare un modello adatto a:
model <- nls(cost.per.car ~ a * exp(b * reductions) + c,
data = q24,
start = list(a=1, b=1, c=0))
ma sto ricevendo un errore:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Ho letto un sacco di domande sull'errore che sto vedendo e sto raccogliendo che il problema è probabilmente che ho bisogno di start
valori migliori / diversi (il che initial parameter estimates
ha un po 'più senso) ma non sono sicuro, dato il dati che ho, come farei per stimare parametri migliori.
exp(50)
e exp(95)
con i valori y in x = 50 e x = 95. Se imposti c=0
e prendi il log di y (creando una relazione lineare), puoi utilizzare la regressione per ottenere stime iniziali per il log ( ) eb che saranno sufficienti per i tuoi dati (o se inserisci una linea attraverso l'origine, puoi lasciare a a 1 e usa solo la stima per b ; questo è sufficiente anche per i tuoi dati). Se b è molto al di fuori di un intervallo abbastanza stretto attorno a questi due valori, si verificheranno alcuni problemi. [In alternativa, prova un algoritmo diverso]