Je voudrais ajuster plusieurs courbes à la fois, et les comparer statistiquement, en termes de leurs 3 paramètres estimés - asymptote, pente et x0. Voici une image idéalisée des données à modéliser: Ajuster et comparer plusieurs courbes sigmoïdes dans R
pages plus interrogeables se présentent des méthodes pour adapter à une seule courbe, comme on le voit ici: http://kyrcha.info/2012/07/08/tutorials-fitting-a-sigmoid-function-in-r/ et ici http://rstudio-pubs-static.s3.amazonaws.com/7812_5327615eb0044cf29420b955ddaa6173.html
Dans mon case, Je voudrais tester (statistiquement) l'effet de la modification des niveaux variables sur les trois paramètres du sigmoïde. Autrement dit, quand je suis montage ce modèle:
model <- nls(y ~ asym/(1 + exp(-slope * (x – x0))), start = c(…), data = my_data)
Je voudrais ajouter des interactions de deux facteurs (par exemple, « Factora » et « factorB ») avec chacun des asym, la pente et x0 termes, la façon dont nous pouvons faire avec lm()
ou glm()
, comme dans les domaines suivants:
model_int <- nls(y ~ asym*factorA/(1 + exp(-(slope*factorA) * (x – (x0*factorA))), start = c(…), data = my_data)
de cette façon, je peux voir si ces trois paramètres sont statistiquement différents entre les différents niveaux de Factora (et éventuellement plusieurs autres facteurs, comme vous pouvez le voir sur l'image). Par exemple, nous pouvons voir que "Condition" a un effet sur l'asymptote des courbes.
Je l'ai fait précédemment avec codage fictif chaque niveau de chaque variable d'interaction, mais ce n'est pas un moyen de tester directement ces variables, et est plutôt verbeux que les modèles vont. Il ressemble à ceci:
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)
Comme vous pouvez le deviner, cette méthode présente des inconvénients évidents en termes de tidyness et le manque de interprétabilité.
Est-ce que quelqu'un sait comment adapter un ensemble de sigmoids où les paramètres interagissent avec des variables dans l'ensemble de données pour produire des courbes de formes légèrement différentes?