如何在TermDocumentMatrix中使用调查包中的权重

时间:2016-11-28 16:39:34

标签: r text-mining tm survey

我的工作很多我想要推广给更多人群的样本。但是,大多数情况下样本都有偏差,需要使用survey包进行加权。但是,我还没有找到一种方法来对这些权重加权Term Document Matrix。考虑这个例子

library(tm)
library(wordcloud)

set.seed(123)

# Consider this example: I have performed a sample from a population and now have 
# 1000 observations of text. In the data I also have information about gender.

# The sample
data <- rbind(data.frame(gender = "M",
                  words =  sample(c("education", "money", "family",
                                    "house", "debts"),
                                  600, replace = TRUE)),
              data.frame(gender = "F",
                    words =  sample(c("career", "bank", "friends", 
                                      "drinks", "relax"),
                                    400, replace = TRUE)))
# I create a simple wordcloud
text <- paste(data$words, collapse = " ")
matrix <- as.matrix(
  TermDocumentMatrix(
    VCorpus(
      VectorSource(text)
    )
  )
)

产生一个类似于下面的wordcloud: enter image description here

正如你所看到的,男性提到的术语更大,因为它们看起来更频繁。但是,我知道这个人口的真实分布,因此这个词云有偏见。

真正的性别分布

true_gender_dist <- data.frame(gender = c("M", "F"), freq = nrow(data) * c(0.49,0.51))

使用调查包我可以使用rake函数

对数据进行加权
library(survey)
rake_data <- rake(design = svydesign(ids = ~1, data = data),
                  sample.margins = list(~gender),
                  population.margins = list(true_gender_dist))

为了在分析,可视化等中使用权重(未包含在调查包中),我将权重添加到原始数据中。

data_weighted <- cbind(data, data.frame(weights = weights(rake_data)))

到目前为止一切顺利。但是,我想制作一个考虑到这些重量的wordcloud。

我的第一次尝试是在制作术语文档矩阵时使用权重。

text_corp <- VCorpus(VectorSource(text))
w_tdm <- TermDocumentMatrix(text_corp,
                                control = list(weighting = weights(rake_data)))

但后来我得到了:

Error in .TermDocumentMatrix(m, weighting) : invalid weighting

这一切都可能吗?

1 个答案:

答案 0 :(得分:0)

我还无法发表评论,所以我会用这个答案评论您的问题:

您可能对R package stm(结构化主题模型)感兴趣。它提供了推断有关元变量(连续和/或离散)的潜在主题的可能性。

您可以生成不同类型的图以查看元变量如何影响

a)所选主题依赖,

b)一个主题内的首选词,

c)等等:)

有些链接,如果您有兴趣:

Paper describing the R package

R documentation

Some more Papers&lt; - 这是一个非常好的收藏品,如果你想再深入探讨这个主题!