我有一些关于商店购买的数据,数据的随机样本如下所示:
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种产品(PANID
,BEER
,SALTY
)的4年中有3个PIZZA
数据。我试图找出在给定的一周内购买了BEER
的人是否也购买了SALTY
/并构造了一个概率,假设PANID: 3144766
在SALTY
中购买了WEEK: 2009-06-15
他们也会BEER
的概率是多少。对pizza
执行相同的操作,即假设他们购买了BEER
,他们有购买PIZZA
的可能性,最后假设他们购买了PIZZA
,他们有购买{{1} }。
E.G。下面的人购买了3包SALTY
和一包SALTY
,但在不同的一周,他们将刚购买了BEER
和BEER
或PIZZA
。
SALTY
数据:
EDIT1:由于字符限制而删除了数据。可以在这里找到:https://textuploader.com/db1kf
EDIT2:
我运行以下代码以获取以下输出:
> 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
输出:
#Probability of buying BEER or SALTY if PIZZA was bought
dat %>%
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())
#Probability of buying SALTY or PIZZA if BEER was bought
dat %>%
group_by(BEER > 0) %>%
summarise(pizza = sum(PIZZA > 0) / n(), nopizza = sum(PIZZA == 0) / n(),
salty = sum(SALTY > 0) / n(), nosalty = sum(SALTY == 0) / n())
#Probability of buying BEER or PIZZA if SALTY was bought
dat %>%
group_by(SALTY > 0) %>%
summarise(pizza = sum(PIZZA > 0) / n(), nopizza = sum(PIZZA == 0) / n(),
beer = sum(BEER > 0) / n(), nobeer = sum(BEER == 0) / n())
所以我的理解是正确的。如果我购买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
,则有PIZZA
的可能性购买0.586
,而有SALTY
的可能性则没有购买0.414
(表1)。但是,如果我购买SALTY
,那么我有SALTY
的概率购买0.272
而有PIZZA
的概率不购买0.728
(表3)?
答案 0 :(得分:1)
我不是100%肯定这是您要寻找的东西,所以请让我知道我是否偏离轨道。
我们从我在评论中建议的内容开始(经过微调以将NA替换为0):
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
现在,我们可以创建一个表,该表给出了如果在同一周购买了PIZZA(任意数量)的啤酒或咸(任意数量)的概率:
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
因此,我们可以看到,如果购买了披萨,则与不购买披萨的几周相比,啤酒和咸味的可能性降低了。
当然,啤酒和盐也可以做到这一点。
另一种选择是,由于我们对三种食物的每种都有一个数字变量,因此将计算相关性甚至回归,但这不是您要的。