COMPARANDO CURVAS [DÚVIDA]

Boa tarde pessoal, Estou querendo fazer a comparação de duas curvas ajustadas utilizando a função "nlsLM" do pacote "minpack.lm". No entanto, não consigo ajustar as duas curvas em um único nlsLM, para depois usar a anova para realizar um teste da razão de verossimilhança para testar a restrição em A, B e C. Alguém pode me ajudar a solucionar esse problema. Desde já agradeço muito a todas as sugestões. Além disso, preciso usar esse pacote por causa do algoritmo de Levenberg-Marquardt. Segue o script reproduzível. if(!require("minpack.lm")){install.packages("minpack.lm",dependencies=T);require("minpack.lm")} if(!require("lattice")){install.packages("lattice",dependencies=T);require("lattice")} d <- expand.grid(parA=c(1,1.99,3,4,5,6,6), sistema = factor(c("TRAT1","TRAT2"))) d$diversidade <- c(55.000, 19.572, 10.231, 7.225, 6.004, 5.4022, 5.0566, 62.000, 31.6952, 21.4178, 17.6125, 15.7654, 14.7072, 14.0334) #ajusta as duas curvas em um unico nlsLM n0 <- nlsLM(diversidade ~ A[sistema]/(1+B[sistema]*exp(-C[sistema]*parA)), data = d, start = list(A = c(-2.790,11.106), B = c(-1.050,-0.821), C = c(-0.090, 0.248))) #Mensagem de erro: # Error in dimnames(x) <- dn : # length of 'dimnames' [2] not equal to array extent # In addition: Warning message: # In matrix(out$hessian, nrow = length(unlist(par))) : # data length [9] is not a sub-multiple or multiple of the number of rows [6] #ajusta o modelo em que A, B e C seja comum aos dois tratamentos n1 <- nlsLM(diversidade ~ A/(1+B*exp(-C*parA)), data = d, start = list(A = 4.158, B = -0.9355, C = 0.079)) anova(n0,n1) -- Diego dos Santos Vieira Engenheiro Florestal - UFRA Mestre em Ciência Florestal - UFVJM Doutorando em Ciência Florestal - UFVJM

Obrigado Simone pela ajuda. Era exatamente o que estava procurando. Em seg, 1 de out de 2018 às 19:43, <sisartorio@yahoo.com.br> escreveu:
Diego, boa noite!
Veja minha tese...la tem como vc fazer isso...
Banco de teses da usp/ simone daniela sartorio
Att. Simone
Em 29 de set de 2018 13:49, Diego Vieira via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
Boa tarde pessoal,
Estou querendo fazer a comparação de duas curvas ajustadas utilizando a função "nlsLM" do pacote "minpack.lm". No entanto, não consigo ajustar as duas curvas em um único nlsLM, para depois usar a anova para realizar um teste da razão de verossimilhança para testar a restrição em A, B e C. Alguém pode me ajudar a solucionar esse problema. Desde já agradeço muito a todas as sugestões. Além disso, preciso usar esse pacote por causa do algoritmo de Levenberg-Marquardt. Segue o script reproduzível.
if(!require("minpack.lm")){install.packages("minpack.lm",dependencies=T);require("minpack.lm")}
if(!require("lattice")){install.packages("lattice",dependencies=T);require("lattice")}
d <- expand.grid(parA=c(1,1.99,3,4,5,6,6), sistema = factor(c("TRAT1","TRAT2"))) d$diversidade <- c(55.000, 19.572, 10.231, 7.225, 6.004, 5.4022, 5.0566, 62.000, 31.6952, 21.4178, 17.6125, 15.7654, 14.7072, 14.0334)
#ajusta as duas curvas em um unico nlsLM n0 <- nlsLM(diversidade ~ A[sistema]/(1+B[sistema]*exp(-C[sistema]*parA)), data = d, start = list(A = c(-2.790,11.106), B = c(-1.050,-0.821), C = c(-0.090, 0.248))) #Mensagem de erro: # Error in dimnames(x) <- dn : # length of 'dimnames' [2] not equal to array extent # In addition: Warning message: # In matrix(out$hessian, nrow = length(unlist(par))) : # data length [9] is not a sub-multiple or multiple of the number of rows [6]
#ajusta o modelo em que A, B e C seja comum aos dois tratamentos n1 <- nlsLM(diversidade ~ A/(1+B*exp(-C*parA)), data = d, start = list(A = 4.158, B = -0.9355, C = 0.079))
anova(n0,n1)
-- Diego dos Santos Vieira Engenheiro Florestal - UFRA Mestre em Ciência Florestal - UFVJM Doutorando em Ciência Florestal - UFVJM
-- Diego dos Santos Vieira Engenheiro Florestal - UFRA Mestre em Ciência Florestal - UFVJM Doutorando em Ciência Florestal - UFVJM
participantes (2)
-
Diego Vieira
-
sisartorio@yahoo.com.br