2017-04-25 2 views
0

J'espère que certains d'entre vous sont un peu expérimentés avec le package R ChoiceModelR de Sermas et Colias, pour estimer un modèle hiérarchique hiérarchique de Bayes multinomial. Actuellement, j'analyse des données d'un conjoint (données de test) pour me préparer à des données réelles. Le fichier de données a le format requis (UnitID Set Alt X_1 ... X_natts y) où y est discret. Dans chaque ensemble de choix, j'ai 3 alternatives (alt: 1-3) ainsi qu'une option sans choix (alt: 4). Les variables indépendantes sont codées en effet (1, 0, -1). Pour autant que je puisse voir, ces données sont dans le format requis. Cependant, je ne peux pas estimer les coefficients. Si je lance le modèle sans variables démographiques que je reçois l'erreur suivante:choicemodelr: erreur dans la structure de données?

Error in Ops.data.frame(data[, 1], ID[i]) : 
‘==’ only defined for equally-sized data frames 

En utilisant les variables démographiques j'obtiens ce qui suit:

Error: number of rows in demos does not equal number of units

Je ne trouve pas une explication d'erreur dans l'Internet ainsi loin et ne sait pas comment résoudre ce problème. Je suppose que c'est une simple erreur dans le fichier de données que je ne vois pas. J'ai déjà essayé d'utiliser un codage différent mais j'ai les mêmes erreurs. Voici le code que j'utilise:

> xcoding=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0) 
> mcmc = list(R = 20000, use = 10000) 
> options = list(none=FALSE, save=TRUE, keep=1) 
> out = choicemodelr(data=robottest_bayes, xcoding, mcmc = mcmc, options = options) 
> #with demographic variables 
> out = choicemodelr(data=robottest_bayes, demos=robottest_bayes_demo, xcoding, mcmc = mcmc, options = options) 

Les fichiers de données sont les suivantes:

> show(robottest_bayes) 
# A tibble: 8,464 × 18 
    respid ques alt apperance_burly apperance_intelligent apperance_pink features_car features_laundry features_compute 
    <int> <int> <int>   <int>     <int>   <int>  <int>   <int>   <int> 
1  1  1  1    1      0    0   1    0    0 
2  1  1  2    0      1    0   0    1    0 
3  1  1  3    0      0    1   0    0    1 
4  1  1  4    0      0    0   0    0    0 
5  1  2  1    0      1    0   0    0    0 
6  1  2  2    0      0    1   0    0    0 
7  1  2  3    1      0    0   0    0    0 
8  1  2  4    0      0    0   0    0    0 
9  1  3  1    0      0    1   0    0    0 
10  1  3  2    1      0    0   0    0    0 
# ... with 8,454 more rows, and 9 more variables: features_dog <int>, features_vaccuum <int>, features_splines <int>, 
# brand_botpro <int>, brand_gizmobot <int>, price_10 <int>, price_11 <int>, nochoice <int>, choice <int> 

> show(robottest_bayes_demo) 
# A tibble: 529 × 3 
    respid sex age 
    <int> <int> <int> 
1  1  0 42 
2  2  0 55 
3  3  0 37 
4  4  0 35 
5  5  1 41 
6  6  1 35 
7  7  0 56 
8  8  0 27 
9  9  1 36 
10  10  1 42 
# ... with 519 more rows 

J'apprécie vraiment tout type de conseils et déjà merci pour le temps que vous pourriez passer sur la réponse!

Bests, Michael

Répondre

0

Vous pouvez essayer d'exclure les lignes de aucune option de choix à partir du fichier de données, et de modifier le script comme:

options = liste (none = TRUE, save = TRUE, keep = 1)

Comme vous avez 3 alternatives, pour l'ensemble de choix que le répondant a choisi l'option "pas de choix", le choix nubmer sera "nombre d'alternatives +1", c'est-à-dire 4. Le ChoixModèle sera reconnaître que l'option "pas de choix" est sélectionnée.

Selon p. "None: positionné sur TRUE pour estimer un paramètre none, et les données n'incluent pas une ligne pour" none "(c'est-à-dire, pas de choix) (par défaut, FALSE)."

Essayez si cela fonctionne.