R 产品购买-如果消费者购买产品x,他们购买产品y的可能性有多大

R 产品购买-如果消费者购买产品x,他们购买产品y的可能性有多大,r,R,我有一些关于商店级别购买的数据,数据的随机样本如下所示: PANID WEEK L1 966 3357632 2011-02-21 PIZZA 352 3357632 2009-11-09 SALTY 68 3357632 2012-06-18 BEER 65 3357632 2012-03-05 BEER 43 3108696 2011-10-31 BEER 672 3144766 2010-03-29 SALTY 70 3357632 2012-0

我有一些关于商店级别购买的数据,数据的随机样本如下所示:

      PANID       WEEK    L1
966 3357632 2011-02-21 PIZZA
352 3357632 2009-11-09 SALTY
68  3357632 2012-06-18  BEER
65  3357632 2012-03-05  BEER
43  3108696 2011-10-31  BEER
672 3144766 2010-03-29 SALTY
70  3357632 2012-06-18  BEER
810 3144766 2012-06-18 SALTY
546 3144766 2008-05-05 SALTY
933 3357632 2009-06-15 PIZZA
(编辑:这个随机样本包含2012年的信息,我提供的数据是从2007-2010年筛选出来的-由于字符数)

对于3类产品(
啤酒
咸的
比萨饼
),4年内共有3个
PANID
数据。我试图找出在给定的一周内买了
啤酒的人是否也买了
咸的
/构造一个概率,假设
PANID:3144766
周:2009-06-15
买了
咸的
他们也会买
啤酒
的概率是多少。对
比萨饼
,也就是说,假设他们购买了
啤酒
他们购买
比萨饼
的概率,最后假设他们购买了
比萨饼
他们购买
的概率

例如,下面的人买了3包
咸的
和一单位
啤酒
,但在不同的一周,他们会买
啤酒
比萨饼
,或者只买
咸的

> data %>%
+   group_by(PANID) %>%
+   filter(WEEK == "2009-06-15") %>%
+   filter(PANID == "3144766")
# A tibble: 6 x 3
# Groups:   PANID [1]
    PANID WEEK       L1   
    <int> <date>     <chr>
1 3144766 2009-06-15 BEER 
2 3144766 2009-06-15 SALTY
3 3144766 2009-06-15 SALTY
4 3144766 2009-06-15 SALTY
5 3144766 2009-06-15 PIZZA
6 3144766 2009-06-15 PIZZA
输出:

1)

# A tibble: 2 x 5
  `PIZZA > 0`  beer nobeer salty nosalty
  <lgl>       <dbl>  <dbl> <dbl>   <dbl>
1 FALSE       0.333  0.667 0.833   0.167
2 TRUE        0.257  0.743 0.586   0.414

2)

# A tibble: 2 x 5
  `BEER > 0` pizza nopizza salty nosalty
  <lgl>      <dbl>   <dbl> <dbl>   <dbl>
1 FALSE      0.371   0.629 0.843   0.157
2 TRUE       0.290   0.710 0.532   0.468

3)

# A tibble: 2 x 5
  `SALTY > 0` pizza nopizza  beer nobeer
  <lgl>       <dbl>   <dbl> <dbl>  <dbl>
1 FALSE       0.569   0.431 0.569  0.431
2 TRUE        0.272   0.728 0.219  0.781
1)
#一个tibble:2x5
`比萨饼>0`啤酒无盐诺萨尔蒂
1假0.333 0.667 0.833 0.167
2真实值0.257 0.743 0.586 0.414
2)
#一个tibble:2x5
`啤酒>0`pizza nopizza咸诺萨尔蒂
1假0.371 0.629 0.843 0.157
2真实值0.290 0.710 0.532 0.468
3)
#一个tibble:2x5
`咸度>0`披萨nopizza啤酒nobeer
1假0.569 0.431 0.569 0.431
2真实值0.272 0.728 0.219 0.781

所以我的理解是正确的。如果我买
PIZZA
我买
SALTY
的概率为
0.586
,不买
SALTY
的概率为
0.414
(表1)。然而,如果我买的是咸的,那么我买比萨饼的概率是0.272,不买比萨饼的概率是0.728(表3)

我不是100%确定这就是你要找的,所以如果我偏离了轨道,请告诉我

我们从我在评论中的建议开始(稍作调整,以0取代NAs):

结果:

# A tibble: 2 x 5
  `PIZZA > 0`  beer nobeer salty nosalty
  <lgl>       <dbl>  <dbl> <dbl>   <dbl>
1 FALSE       0.333  0.667 0.833   0.167
2 TRUE        0.257  0.743 0.586   0.414
#一个tible:2 x 5
`比萨饼>0`啤酒无盐诺萨尔蒂
1假0.333 0.667 0.833 0.167
2真实值0.257 0.743 0.586 0.414
因此,我们可以看到,如果购买了比萨饼,与没有购买比萨饼的几周相比,啤酒和咸味的可能性都会降低

当然,啤酒和咸啤酒也是如此


另一种选择是,由于我们对这三种食物都有一个数字变量,因此可以计算相关性甚至回归,但这不是你所要求的。

这似乎更像是统计分析的问题(你需要做什么来计算概率),而不是R中的问题(你如何编码R来做你需要做的事情来计算概率)。是的,这就是我正在尝试做的。计算给定的人X购买产品的条件概率
啤酒
同一个人(在同一次购物旅行
)将把产品
咸的
放在他们的篮子里。-建议啤酒和咸的产品是恭维,应该比数据集中的其他产品(即
尿布
)有更高的结合概率。我只是说这是一个统计问题,不是一个R问题。无论如何,提示我们R部分:
df%>%groupby(PANID,年,周,L1)%%>%汇总(n=n())%%>%tidyr::价差(L1,n)
这很有帮助,谢谢!这给了我每个消费者在给定的
周内对每种产品的总购买量
?这是正确的是,我相信这就是我所希望的。回归将是下一步。我已经对我的原始帖子进行了编辑,关于对输出概率的理解。太好了。别忘了接受!您的问题是-是的,您的解释是正确的。如果您从代码中删除所有的
/n()
s,查看绝对数,您可能会更清楚这是如何发生的。
df<- df %>% group_by(PANID, year, WEEK,L1) %>% summarize(n=n()) %>% tidyr::spread(L1, n, fill=0)
> head(df,3)
# A tibble: 3 x 6
# Groups:   PANID, year, WEEK [3]
    PANID  year WEEK        BEER PIZZA SALTY
    <int> <int> <date>     <dbl> <dbl> <dbl>
1 3108696  2007 2007-12-31     2     4     6
2 3108696  2008 2008-01-21     0     2     2
3 3108696  2008 2008-02-04     1     0     2
df %>% group_by(PIZZA>0) %>% 
  summarise(beer=sum(BEER>0)/n(),nobeer=sum(BEER==0)/n(),
    salty=sum(SALTY>0)/n(),nosalty=sum(SALTY==0)/n())
# A tibble: 2 x 5
  `PIZZA > 0`  beer nobeer salty nosalty
  <lgl>       <dbl>  <dbl> <dbl>   <dbl>
1 FALSE       0.333  0.667 0.833   0.167
2 TRUE        0.257  0.743 0.586   0.414