Ajustar e comparar várias curvas sigmóides em R

Gostaria de ajustar várias curvas de uma só vez e compará-las estatisticamente, em termos de seus três parâmetros estimados - assíntota, inclinação e x0. Aqui está uma imagem idealizada dos dados a serem modelados:

A maioria das páginas pesquisáveis exibe métodos para se ajustar asolteiro curva, como pode ser visto aqui:http://kyrcha.info/2012/07/08/tutorials-fitting-a-sigmoid-function-in-r/ e aquihttp://rstudio-pubs-static.s3.amazonaws.com/7812_5327615eb0044cf29420b955ddaa6173.html

No meu caso,Gostaria de testar (estatisticamente) o efeito da mudança de níveis variáveis nos três parâmetros do sigmóide. Ou seja, quando estou ajustando este modelo:

model <- nls(y ~ asym / (1 + exp( -slope * (x – x0) ) ), start = c(…), data = my_data)

Eu gostaria de adicionar interações de dois fatores (digamos, “fatorA” e “fatorB”) com cada um dos termos de assimetria, inclinação e x0, da maneira que podemos fazer comlm() ouglm(), como no seguinte:

model_int <- nls(y ~ asym*factorA / (1 + exp( -(slope*factorA) * (x – (x0*factorA) ) ), start = c(…), data = my_data)

Dessa forma, posso ver se esses três parâmetros são estatisticamente diferentes entre os diferentes níveis do fator A (e potencialmente vários outros fatores, como você pode ver na imagem). Por exemplo, podemos ver que "Condição" afeta a assíntota das curvas.

Eu fiz isso anteriormente comcodificação fictícia cada nível de cada variável que interage, mas essa não é uma maneira de testar diretamente essas variáveis e é bastante detalhada conforme os modelos. Se parece com isso:

model_dummy <- nls(y ~ (asym+ asym.L1 * is.L1 + asym.l2*is.L2) / 
(1 + exp( -slope * (x – (x0 + x0.L1 * is.L1 + x0.L2 * is.L2) ) ) ), 
start = c(…), data = my_data)

Como você pode imaginar, esse método tem desvantagens óbvias em termos de organização e falta de interpretabilidade.

Alguém sabe como ajustar um conjunto de sigmóides em que os parâmetros interagem com variáveis no conjunto de dados para produzir curvas de formas ligeiramente diferentes?

questionAnswers(1)

yourAnswerToTheQuestion