Структурная тематическая модель (пакет stm) отображает процентные значения графика с использованием функции plot - PullRequest
0 голосов
/ 12 марта 2019

На странице 18 учебного пособия по stm

https://cran.r -project.org / web / packages / stm / vignettes / stmVignette.pdf

ожидаемая темапропорции построены

plot(poliblogPrevFit, type = "summary", xlim = c(0, .3))

где poliblogPrevFit

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

Я пытаюсь выяснить, как отобразить на графике процентные значения, я пытаюсь добавить textфункция графика, но не работает .. как можно добавить значения справа от каждого столбца на графике?

1 Ответ

1 голос
/ 25 марта 2019

Для вашей идеи использовать вероятности, вам нужна, во-первых, специальная матрица, сгенерированная моделью темы stm: Theta . Это в основном показывает вероятность документа, принадлежащего к теме. Во-вторых, вам нужны ярлыки вашей темы (если вы хотите придерживаться темы 1, темы 2 и т. Д.), Чтобы связать ваши значения. Я собрал код с моими собственными данными, но он должен работать и для ваших данных. Просто помните, что, возможно, измените несколько вещей, чтобы заставить код работать для ваших собственных конкретных данных.

## Put labels in a vector
labels <- c("Buffy", "Vampire", "Slayer", "Mr. Pointy")
## Include here your own labels, you probably have more than four

## Extract theta from the stm-model
df <- data.frame(labels)
proportion <- as.data.frame(colSums(stm_topics$theta/nrow(stm_topics$theta)))
df <- cbind(df, proportion)
colnames(df) <- c("Labels", "Probability")

## Sort the dataframe
df <- df[order(-proportion), ] 
df$Labels <- factor(df$Labels, levels = rev(df$Labels))
df$Probability <- as.numeric(df$Probability)
df$Probability <- round(df$Probability, 4)

## Plot graph
ggplot(df, aes(x = Labels, y = Probability)) + 
  geom_bar(stat = "identity") + 
  scale_y_continuous(breaks = c(0, 0.15), limits = c(0, 0.15), expand = c(0, 0)) + #change breaks and limits as you need
  coord_flip() + 
  geom_text(aes(label = scales::percent(Probability)), #Scale in percent
            hjust = -0.25, size = 4,
            position = position_dodge(width = 1),
            inherit.aes = TRUE) + 
  theme(panel.border = element_blank())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...