2017-10-13 4 views
0

Après avoir exécuté un modèle STM basé sur une Quanteda DFM, je veux estimer les effets de mes covariables sur certains sujets. L'exécution du modèle STM s'est bien déroulée, produisant les rubriques comme prévu, mais lors de l'utilisation de estimateEffect (à l'étape finale du script ci-dessous), la session R est interrompue, signalant une «erreur fatale». Comment puis-je estimer les effets de mes covariables, en partant d'un dfm?STM: l'estimation des relations métadonnées/thématiques lors du démarrage de DFM

Comment puis-je estimer les effets de mes covariables? Le manuel de STM conseille d'exécuter un modèle STM à partir d'un dfm, mais je n'ai pas pu trouver comment travailler avec les covariables après cette étape.

Voici le code:

# Read texts with Quanteda 
texts <- (readtext("C:/Users/renswilderom/Documents/Stuff Im working on at the moment/Newspaper articles DJ/test data/*.txt", 
     docvarsfrom = "filenames", dvsep = "_", 
     docvarnames = c("Date of Publication", "Length LexisNexis", "source"), 
     encoding = "UTF-8-BOM")) 

mycorpus <- corpus(texts) 

tokens <- tokens(mycorpus, remove_punct = TRUE, remove_numbers = TRUE, ngrams = 1) 

mydfm <- dfm(tokens, remove = stopwords("english"), stem = TRUE) 


# Run the STM model - Metadata is called with 'data = docvars(mycorpus)' 
stm_from_dfm <- stm(mydfm, K = 10, prevalence =~ Date.of.Publication + source, gamma.prior='L1', data = docvars(mycorpus)) 

# Estimate effects 
prep <- estimateEffect(1:10 ~ Date.of.Publication + source, stm_from_dfm, 
         meta = docvars(mycorpus), uncertainty = "Global") 

Sinon, je fait un corpus STM de mon corpus de DFM, en utilisant STMcorpus <- asSTMCorpus(mydfm). Mais je n'ai pas pu exécuter le modèle STM car il n'a pas reconnu mes méta-données. Serait-il préférable de suivre cette stratégie alternative? (J'ai donc besoin d'associer les méta-données avec le STMcorpus après avoir exécuté STMcorpus <- asSTMCorpus(mydfm)).

+0

Il est difficile de diagnostiquer sans un exemple reproductible - pourriez-vous en fournir un? Aussi je pense que quanteda inclut les données quand vous faites 'asSTMCorpus (mydfm)'. Les métadonnées sont juste l'objet dans la liste nommé 'data' – bstewart

+0

Bien sûr, voici un échantillon des articles de journaux que j'utilise: https://wetransfer.com/downloads/a50d8b8fd524359751e8aa68bac3256c20171016160720/3f3bb29e40362434594f44aeee1e67f720171016160720/b425d8 Je préférerais Travailler depuis le 'stm_from_dfm', mais si nécessaire, je peux bien sûr aussi travailler depuis' asSTMCorpus (mydfm) '. Je vais juste essayer d'accéder aux métadonnées via la liste 'data'. – Rens

+0

Je n'ai pas pu répliquer votre erreur avec l'échantillon de données que vous m'avez donné. Si vous voulez partager une copie de l'espace de travail juste avant d'appeler 'estimateEffect()' je peux essayer de répliquer à partir de là, mais sinon je ne peux pas faire grand-chose sans être capable de recréer le problème. – bstewart

Répondre

2

Nous avons travaillé par mail - mais j'ajouterai la réponse ici pour les autres qui pourraient rencontrer une forme de problème.

Le package matrixStats contient un bogue qui provoque le blocage de R avec de grandes matrices sous Windows uniquement. Le bug et la solution sont détaillés ici: https://github.com/HenrikBengtsson/matrixStats/issues/104. Ce problème contient à la fois un test simple du problème et des instructions pour l'installation de la version de développement de matrixStats qui le corrige. Ceci est un problème dans la version matrixStats 0.52.2 et sera vraisemblablement résolu par la prochaine version de CRAN.