Ошибка структурного тематического моделирования (stm) в makeTopMatrix (распространенность, данные): ошибка при создании матрицы модели

#r #topic-modeling

#r #тема-моделирование

Вопрос:

Я пытаюсь выполнить начальные шаги этого руководства по stm

https://github.com/dondealban/learning-stm

что касается этого набора данных, то он является частью исходного

http://www.mediafire.com/file/1jk2aoz4ac84jn6/data.csv/file

 install.packages("stm")
library(stm)
load("VignetteObjects.RData") 
data <- read.csv("C:/data.csv") 
head(data)
processed <- textProcessor(data$documents, metadata=data)
out <- prepDocuments(processed$documents, processed$vocab, processed$meta)
docs <- out$documents
vocab <- out$vocab
meta <- out$meta


poliblogPrevFit <- stm(out$documents, out$vocab, K=4, prevalence=~rating s(day), 
                       max.em.its=200, data=out$meta, init.type="Spectral", 
                       seed=8458159)
  

Но я продолжаю получать ту же ошибку

 Error in makeTopMatrix(prevalence, data) : Error creating model matrix.
                 This could be caused by many things including
                 explicit calls to a namespace within the formula.
                 Try a simpler formula.
  

Пожалуйста, кто-нибудь может запустить ее в 64-разрядной версии MS Windows R-3.5.2.. Я даже нигде не смог найти похожие ошибки..

Ответ №1:

Похоже, ваша проблема заключалась в том, что при выполнении выборки вы получили объект factor только с одним уровнем:

 > levels(meta$rating)
[1] "Conservative"
  

Однако использование подобной переменной не имеет никакого смысла, поскольку между случаями нет различий. Если вы используете исходные данные, ваш код работает абсолютно нормально:

 data <- read.csv("https://raw.githubusercontent.com/dondealban/learning-stm/master/data/poliblogs2008.csv")

processed <- textProcessor(data$documents, metadata = data)
out <- prepDocuments(processed$documents, processed$vocab, processed$meta)
docs <- out$documents
vocab <- out$vocab
meta <- out$meta

levels(meta$rating)
[1] "Conservative" "Liberal" 

poliblogPrevFit <- stm(docs, vocab, K = 4, prevalence = ~rating s(day), 
                       max.em.its = 200, data = out$meta, init.type = "Spectral", 
                       seed = 8458159)
  

Комментарии:

1. БОЖЕ!! Спасибо за ваше время и приношу свои извинения за это!!

2. Проблем нет. Ошибка сбивает с толку при такой минимальной проблеме (что затрудняет ее поиск)

3. Эта ошибка также возникает, когда вы указываете ковариационную переменную в prevalence формуле, но переменная не существует в метаданных