廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

ggplot2 で二項分布の成功確率パラメータの信頼区間

ggplot2 で移動平均(stat_ma) - 廿TT に引き続き、二項分布のパラメータの信頼区間を描画する stat_binomCI を書いた。

stat_binomCI.R · GitHub

Google アナリティクスのデータで試してみる。

例1:ランディングページごとの直帰率の比較はこんな感じ。

library(ggplot2)
library(googleAnalyticsR)
source("https://gist.githubusercontent.com/abikoushi/e5ab58b29b2d5166b8df716a2608b8e6/raw/dabe1a69061e7c2d67ff7c155d4b140d9141c5d7/stat_binomCI.R")
ga_auth()
account_list <- ga_account_list()
ga_id <- account_list[3,'viewId']
lpdat <-
  google_analytics_4(ga_id,
                     date_range = c("2017-05-01","2017-05-31"),
                     metrics = c("sessions","bounces"),
                     dimensions = "landingPagePath",
                     order = order_type(c("sessions"), 
                                        sort_order = "DESC", 
                                        orderType = "VALUE"),
                     max = 10)

ggplot(lpdat,aes(x=reorder(landingPagePath,bounces/sessions),y=bounces/sessions))+
  geom_point()+
  stat_binomCI(aes(numerator=bounces,denominator=sessions),conf.level = 0.8)+
  coord_flip()+xlab("")

aes の中の numerator に分子、denominator に分母を入れると信頼区間を描画します。

信頼水準は conf.level で設定できます。

f:id:abrahamcow:20170602064815p:plain

例2:日ごとの直帰率の推移はこんな感じです。

dailydat <-
  google_analytics_4(ga_id,
                     date_range = c("2017-05-01","2017-05-31"),
                     metrics = c("sessions","bounces"),
                     dimensions = "date")

ggplot(dailydat,aes(x=date,y=bounces/sessions))+
  geom_line(size=1)+
  stat_binomCI(aes(numerator=bounces,denominator=sessions),geom = "ribbon",alpha=0.3)+
  xlab("")

f:id:abrahamcow:20170602064822p:plain

lpdat、dailydat の中身はそれぞれこんなふうになっています。

> lpdat
            landingPagePath sessions bounces
1  /entry/2014/12/19/221230     1335    1207
2  /entry/2015/01/17/064522     1270    1143
3  /entry/2015/01/15/073029      644     608
4  /entry/2014/08/13/031519      575     525
5  /entry/2014/03/05/001432      504     453
6  /entry/2014/03/23/064859      348     306
7  /entry/2014/09/19/055830      340     292
8  /entry/2014/01/25/232720      327     285
9  /entry/2013/08/03/160222      301     269
10 /entry/2014/11/24/142841      263     235
> dailydat
         date sessions bounces
1  2017-05-01      403     350
2  2017-05-02      469     404
3  2017-05-03      324     286
4  2017-05-04      297     256
5  2017-05-05      428     367
6  2017-05-06      386     335
7  2017-05-07      419     372
8  2017-05-08      510     454
9  2017-05-09      563     505
10 2017-05-10      498     441
11 2017-05-11      461     408
12 2017-05-12      483     411
13 2017-05-13      350     312
14 2017-05-14      316     266
15 2017-05-15      466     405
16 2017-05-16      540     476
17 2017-05-17      487     426
18 2017-05-18      450     401
19 2017-05-19      424     372
20 2017-05-20      262     237
21 2017-05-21      323     285
22 2017-05-22      492     417
23 2017-05-23      580     500
24 2017-05-24      480     410
25 2017-05-25      486     423
26 2017-05-26      483     437
27 2017-05-27      318     291
28 2017-05-28      296     256
29 2017-05-29      509     453
30 2017-05-30      543     485
31 2017-05-31      501     429

例3:エラーバー付き棒グラフ

f:id:abrahamcow:20170921025746p:plain

data(babyfood,package="faraway")

ggplot(babyfood,aes(x=food,y=disease/(disease+nondisease),colour=food))+
  geom_col(position = position_dodge(1),alpha=0.2,size=1)+
  facet_wrap(~sex)+
  stat_binomCI(aes(numerator=disease,denominator=disease+nondisease),
               geom = "errorbar",
               position = position_dodge(1),
               width=0.5,
               size=1)+
  theme(legend.position = "none")

アマゾンアフィリエイトのコーナー

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集