Multinomial Processing Tree Model (MPTinR package)

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Ivane Nuel
Messages : 2
Enregistré le : 28 Mai 2016, 11:39

Multinomial Processing Tree Model (MPTinR package)

Messagepar Ivane Nuel » 19 Mai 2017, 10:44

Bonjour,

Je souhaite utiliser le package MPTinR afin d'appliquer le Quad Processing model de Conrey et al., 2005 sur des données IAT.

J'ai importé mes données (réponses correctes et incorrectes) au format suivant :

Code : Tout sélectionner

15   0   6   0   15   0   15   0   14   1   5   1
14   1   6   0   14   1   15   0   15   0   6   0
15   0   5   1   15   0   14   1   15   0   6   0
13   2   6   0   14   1   14   1   11   4   5   1
14   1   6   0   15   0   14   1   15   0   5   1
15   0   5   1   15   0   15   0   14   1   6   0

etc. sur 228 lignes correspondant à mes 228 participants.
J'établis ensuite mon modèle au format easy et directement sur le script R

Code : Tout sélectionner

Quad_Model_IAT_SOI<-"
# Arbre Soi,Compatible : 1er = Correct 2nd = Incorrect
ACsoipos*D*OB + ACsoipos*D*(1-OB)+ACsoipos*(1-D)+(1-ACsoipos)*D+(1-ACsoipos)*(1-D)*G # Correct|Soi,Compatible
(1-ACsoipos)*(1-D)*(1-G) # Incorrect|Soi,Compatible

# Arbre Positif,Compatible : 1er = Correct 2nd = Incorrect
ACsoipos*D*OB+ACsoipos*D*(1-OB)+ACsoipos*(1-D)+(1-ACsoipos)*D+(1-ACsoipos)*(1-D)*G # Correct|Positif,Compatible
(1-ACsoipos)*(1-D)*(1-G) # Incorrect|Positif,Compatible

# Arbre Neutre,Compatible: 1er = Correct 2nd = Incorrect
AC*D*OB+AC*D*(1-OB)+AC*(1-D)+(1-AC)*D+(1-AC)*(1-D)*(1-G) # Correct|neutre,compatible
(1-AC)*(1-D)*G # Incorrect|neutre,compatible

# Arbre Soi,Incompatible: 1er = Correct 2nd = Incorrect
ACsoipos*D*OB+(1-ACsoipos)*D+(1-ACsoipos)*(1-D)*(1-G) # Correct|Soi,incompatible
ACsoipos*D*(1-OB)+ACsoipos*(1-D)+(1-ACsoipos)*(1-D)*G # Incorrect|Soi,incompatible

# Arbre Positif,Incompatible: 1er = Correct 2nd = Incorrect
ACsoipos*D*OB+(1-ACsoipos)*D+(1-ACsoipos)*(1-D)*G # Correct|positif,incompatible
ACsoipos*D*(1-OB)+ACsoipos*(1-D)+(1-ACsoipos)*(1-D)*(1-G) # Incorrect|positif,incompatible

# Arbre Neutre,Incompatible: 1er = Correct 2nd = Incorrect
AC*D*OB+AC*D*(1-OB)+AC*(1-D)+(1-AC)*D+(1-AC)*(1-D)*(1-G) # Correct|neutre,incompatible
(1-AC)*(1-D)*G # Incorrect|neutre,incompatible
"


Puis je vérifie mon modèle (notamment si il est bien identifiable)

Code : Tout sélectionner

check.mpt(textConnection(Quad_Model_IAT_SOI))
$probabilities.eq.1
[1] TRUE

$n.trees
[1] 6

$n.model.categories
[1] 12

$n.independent.categories
[1] 6

$n.params
[1] 5

$parameters
[1] "AC"       "ACsoipos" "D"        "G"        "OB"


Jusque là tout va bien (sauf erreur de ma part).

Je fais ensuite un fit de mon modèle et là les choses se compliquent :

Code : Tout sélectionner

M_IAT<-fit.mpt(Data_IATpos_SOI,textConnection(Quad_Model_IAT_SOI),restrictions.filename = NULL)

Voici ce que R m'indique :

Code : Tout sélectionner

Presenting the best result out of 5 minimization runs.
[1] "Model fitting begins at 2017-05-19 12:08:30"
Optimization routine for dataset(s) 1 2 3 4 5 6 7 9 10 11 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 129 130 131 132 133 134 135 136 137 139 141 142 143 144 145 146 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 169 171 172 173 174 175 176 177 179 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 197 198 199 200 201 202 203 205 206 207 208 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 227 228
  did not converge succesfully. Tried again with use.gradient == FALSE.
Optimization for dataset(s) 1 2 3 5 6 9 11 14 18 19 20 21 22 23 24 25 26 27 29 35 36 37 38 39 42 45 46 48 49 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 69 70 71 73 74 75 76 77 80 82 85 88 90 91 92 96 97 99 100 101 102 103 104 105 106 109 110 114 115 116 117 118 119 122 123 124 126 127 130 132 133 134 136 137 141 142 144 145 146 151 152 153 155 156 158 159 161 163 164 166 169 171 173 175 176 177 179 182 184 185 186 187 188 189 190 191 193 194 195 197 198 199 200 201 202 203 205 206 207 208 211 212 213 214 215 216 219 220 221 224 227
  using numerically estimated gradients produced better results. Using those results.
  Old results saved in output == 'full' [['optim.runs']].
Optimization for dataset(s) 4 7 10 13 15 17 28 33 34 40 41 44 47 52 63 72 78 79 81 83 84 87 89 93 94 95 98 111 112 113 120 121 125 129 131 135 139 143 148 149 150 154 157 160 165 167 168 172 174 181 183 192 210 217 218 222 223 225 228
  using numerical estimated gradients did NOT produce better results.
  Keeping original results. Use output = 'full' for more details.
[1] "Model fitting stopped at 2017-05-19 12:09:12"
Time difference of 41.89842 secs
Warning message:
In fit.mptinr(data = data, objective = llk.model, param.names = param.names,  :
  Error code(s) in final results: 0 1. The following dataset(s) did not converge succesfully in the best fitting optimization run:
4 7 10 13 15 17 28 33 34 40 41 44 47 52 63 72 78 79 81 83 84 87 89 93 94 95 98 111 112 113 120 121 125 129 131 135 139 143 148 149 150 154 157 160 165 167 168 172 174 181 183 192 210 217 218 222 223 225 228

Que dois-je penser du fait que les résultats pour certaines données n'utilisent pas les mêmes gradients et que R me garde les nouveaux résultats pour certaines et les anciens pour d'autres ?
Que dois-je penser des données dont les anciens résultats (issus des gradients de base) sont gardés et qui sont également celles associées au code d'erreur à la fin ?
Mais surtout que dois-je penser des résultats que j'obtiens si je regarde les paramètres, goodness of fit etc. ?

A priori mon modèle ne fit pas bien les données:

Code : Tout sélectionner

M_IAT[["goodness.of.fit"]][["aggregated"]]
  Log.Likelihood G.Squared df      p.value
     -3230.633  39.68524  1 2.983717e-10

M_IAT[["parameters"]][["aggregated"]]
          estimates lower.conf upper.conf
AC       0.58886870         NA         NA
ACsoipos 0.07812615         NA         NA
D        0.87009315         NA         NA
G        0.68433903         NA         NA
OB       0.99998155         NA         NA


Les IC ne sont pas calculé mais j'ai cru comprendre dans la documentation du package que ce n'était pas un problème pour les paramètres obtenus et que je peux les calculer avec un bootstrap par la suite.

Est-ce que mes données qui présentent de nombreux 0 (c.à.d. pas de réponse incorrecte) peuvent être une explication ?

Je sollicite donc un peu d'aide de la part de quiconque pourra m'en apporter afin de me dépatouiller de ce brouillard :)

Merci par avance !

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité