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