2017-10-13 4 views
0

Nach dem Ausführen eines STM Modell auf einem Quanteda basierend Start dfm, ich möchte, dass meine Kovariaten Auswirkungen auf bestimmte Themen schätzen.STM: Abschätzen Beziehungen Metadaten/Thema, wenn sie von DFM

Die Ausführung des STM-Modells verlief fehlerfrei und lieferte die Themen erwartungsgemäß. Bei Verwendung von estimateEffect (im letzten Schritt des folgenden Skripts) wurde die R-Sitzung abgebrochen, wodurch ein schwerwiegender Fehler gemeldet wurde.

Wie kann ich die Auswirkungen meiner Kovariaten abschätzen, wenn ich von einem DFM aus anfange? Das STM-Handbuch gibt Tipps zum Ausführen eines STM-Modells von einem DFM, aber ich konnte nach dieser Phase nicht herausfinden, wie mit den Kovariaten gearbeitet wird.

Hier ist der 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") 

Alternativ machte ich einen STM Korpus aus meinem DFM Korpus, STMcorpus <- asSTMCorpus(mydfm) verwenden. Aber dann konnte ich das STM-Modell nicht ausführen, da es meine Metadaten nicht erkannte. Wäre es besser, dieser alternativen Strategie zu folgen? (Ich muss also die Metadaten mit dem STMcorpus verbinden, nachdem ich STMcorpus <- asSTMCorpus(mydfm) ausgeführt habe).

+0

Es ist schwierig, ohne ein reproduzierbares Beispiel zu diagnostizieren - könnten Sie einen liefern? Außerdem denke ich, dass Quanteda die Daten enthält, wenn du 'asSTMCorpus (mydfm)' machst. Die Metadaten sind nur das Objekt in der Liste namens 'data'. – bstewart

+0

Sicher, hier ist ein Beispiel für die aktuellen Zeitungsartikel, die ich benutze: https://wetransfer.com/downloads/a50d8b8fd524359751e8aa68bac3256c20171016160720/3f3bb29e40362434594f44aeee1e67f720171016160720/b425d8 würde ich lieber arbeite von der 'stm_from_dfm', kann aber bei Bedarf natürlich auch vom 'asSTMCorpus (mydfm)' aus arbeiten. Ich werde es einfach versuchen, auf die Metadaten über die Liste "Daten" zuzugreifen. – Rens

+0

Ich konnte Ihren Fehler mit dem von Ihnen angegebenen Datenbeispiel nicht replizieren. Wenn Sie eine Kopie des Arbeitsbereichs kurz vor dem Aufruf von 'estimateEffect()' teilen möchten, kann ich versuchen, von dort zu replizieren - aber ansonsten kann ich nicht viel tun, ohne das Problem neu erstellen zu können. – bstewart

Antwort

2

Wir haben dies per E-Mail bearbeitet - aber ich werde die Antwort hier für andere hinzufügen, die auf irgendeine Form des Problems stoßen könnten.

Es liegt ein Fehler im Paket matrixStats vor, der dazu führt, dass R nur bei großen Matrizen unter Windows abstürzt. Der Fehler und die Lösung sind hier aufgeführt: https://github.com/HenrikBengtsson/matrixStats/issues/104. Dieses Problem enthält sowohl einen einfachen Test des Problems als auch Anweisungen zum Installieren der Entwicklungsversion von matrixStats, die es behebt. Dies ist ein Problem in Version matrixStats 0.52.2 und wird voraussichtlich durch die nächste CRAN-Version gelöst werden.

Verwandte Themen