Usando R para ajustar uma curva a um conjunto de dados usando uma equação específica

Estou usando R. Gostaria de usar uma equação específica para ajustar uma curva a um dos meus conjuntos de dados (anexado)

> dput(data)
structure(list(Gossypol = c(1036.331811, 4171.427741, 6039.995102, 
5909.068158, 4140.242559, 4854.985845, 6982.035521, 6132.876396, 
948.2418407, 3618.448997, 3130.376482, 5113.942098, 1180.171957, 
1500.863038, 4576.787021, 5629.979049, 3378.151945, 3589.187889, 
2508.417927, 1989.576826, 5972.926124, 2867.610671, 450.7205451, 
1120.955, 3470.09352, 3575.043632, 2952.931863, 349.0864019, 
1013.807628, 910.8879471, 3743.331903, 3350.203452, 592.3403778, 
1517.045807, 1504.491931, 3736.144027, 2818.419785, 723.885643, 
1782.864308, 1414.161257, 3723.629772, 3747.076592, 2005.919344, 
4198.569251, 2228.522959, 3322.115942, 4274.324792, 720.9785449, 
2874.651764, 2287.228752, 5654.858696, 1247.806111, 1247.806111, 
2547.326207, 2608.716056, 1079.846532), Treatment = structure(c(2L, 
3L, 4L, 5L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 5L, 1L, 2L, 3L, 4L, 5L, 
1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 
2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 
3L, 4L, 5L, 1L, 2L, 3L, 1L), .Label = c("C", "1c_2d", "3c_2d", 
"9c_2d", "1c_7d"), class = "factor"), Damage_cm = c(0.4955, 1.516, 
4.409, 3.2665, 0.491, 2.3035, 3.51, 1.8115, 0, 0.4435, 1.573, 
1.8595, 0, 0.142, 2.171, 4.023, 4.9835, 0, 0.6925, 1.989, 5.683, 
3.547, 0, 0.756, 2.129, 9.437, 3.211, 0, 0.578, 2.966, 4.7245, 
1.8185, 0, 1.0475, 1.62, 5.568, 9.7455, 0, 0.8295, 2.411, 7.272, 
4.516, 0, 0.4035, 2.974, 8.043, 4.809, 0, 0.6965, 1.313, 5.681, 
3.474, 0, 0.5895, 2.559, 0)), .Names = c("Gossypol", "Treatment", 
"Damage_cm"), row.names = c(NA, -56L), class = "data.frame")

A equação é:y~yo+a*(1-b^x) Onde:y = Gossypol (do meu conjunto de dados)x = Damage_cm (do meu conjunto de dados)

Os outros três parâmetros são desconhecidos:yo = Intercept, a = asymptote eb = slope

Eu acho que tenho que usar o pacotenls2. Até agora escrevi o seguinte código:

data<-read.csv("Regression_exp2.csv",header=T, sep = ",")
library(nls2)
attach(data)
m<-nls(Gossypol~Y+A*(1-B^Damage_cm),data=data,start = list(Y=1700,A=4000,B=1))

Isso me dá a mensagem de erro:

Erro no nlsModel (fórmula, mf, start, wts): matriz de gradiente singular nas estimativas de parâmetro inicial

No final, eu gostaria de usar a equação para traçar uma curva (com intervalo SE, eu costumo usar ggplot2)

Além disso, gostaria de saber o valor de R2 ep. Eu também estaria interessado nos parâmetrosyo , a eb

Eu nunca fiz isso antes e ficaria extremamente grato se alguém pudesse me ajudar ou me dar uma dica de como fazer isso no R? Suponho que tenho que usar uma abordagem não linear (glm (...))

muito obrigado Mike

questionAnswers(1)

yourAnswerToTheQuestion