【问题标题】:Creating similar samples based on three different categorical variables基于三个不同的分类变量创建相似的样本
【发布时间】:2018-07-12 21:01:45
【问题描述】:

我正在尝试进行分析,我试图根据三个不同的属性创建两个相似的样本。我想先创建这些样本,然后进行分析,看看这两个样本中哪个更好。分类变量是 sales_group、age_group 和 country。所以我想让两个样本,比如国家的比例、年龄和销售额在两个样本中都相似。

例如:样本 A 和 B 中包含以下变量: ID 国家/地区年龄销售额

样本A中国家的比例为:

美国- 58% 英国- 22% 印度-8% 法国- 6% 德国- 6%

样本B中国家的比例为: 印度- 42% 英国- 36% 美国-12% 法国-3% 德国- 5%

其他分类变量也是如此:age_group 和 sales_group

提前感谢您的帮助

【问题讨论】:

  • 样本数据和期望的结果确实会有所帮助,对于“样本”的含义、样本的大小、拥有的数据量等提供一些定义或指导。
  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。

标签: sql r


【解决方案1】:

您不需要建立特殊的抽样程序,因为一个样本的比例是对总体比例的无偏估计。如果您有 > 1000 个观察值并且您采样的样本超过 30 个样本,那么估计值将非常准确(中心极限定理)。 您可以在下面的模拟中看到它:

set.seed(123)
n <- 10000 # Amount of rows in the source data frame
df <- data.frame(sales_group = sample(LETTERS[1:4], n, replace = TRUE), 
                 age_group = sample(c("old", "young"), n, replace = TRUE), 
                 country = sample(c("USA", "UK", "India", "France", "Germany"), n, replace = TRUE),
                 amount = abs(100 * rnorm(n))) 

s <- 100 # Amount of sampled rows
sampleA <- df[sample(nrow(df), s), ]
sampleB <- df[sample(nrow(df), s), ]

table(sampleA$sales_group)
# A  B  C  D 
# 23 22 32 23 

table(sampleB$sales_group)
# A  B  C  D 
# 25 22 28 25 

免责声明:但是,如果您有一些非常小或非常大的比例并且样本太少,您将需要使用一些高级程序,例如Laplace smoothing

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2022-12-02
    • 2015-12-27
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多