2017-03-27 5 views
2

質問離散的および連続的なパネルデータを視覚化するための加重サニキ/沖積ダイアグラム?

は、私は、ディスクリートまたはカテゴリを選択し、各期間における連続選択肢の両方を含んでいる個人にパネルデータを視覚化しようとしています。この状況の一般的な例の1つは、顧客が製品/サブスクリプションを購入してから、製品/サービスの使用頻度を選択することです。

各期間に連続変数で重み付けされた期間に渡ってフローを表示したいと思います。 - 加重積み重ね棒グラフとサニキーまたは沖積グラフの間に何らかの種類の交差があります。サンキーと沖積ダイアグラムは基本的に各フローが単一の大きさを持つノード間のフローを表します。代わりに、私は、同一の個人であっても、異なる期間に異なる価値を有する可能性がある連続的な選択を表す「フロー」を示したいと思う。結果として得られるダイアグラムは、サルキーまたは沖積プロットと非常によく似ていますが、alluviaまたは「フロー」は期間の間に幅が徐々に変化します。たとえば、顧客が2つの期間で同じサブスクリプションを購入したが、2番目の期間でそれを頻繁に使用するとします。その使用法は、第1の期間から第2の期間まで幅が増加するバンドまたは「フロー」によって表すことができる。

  1. このグラフタイプは既にどこに存在しますか?私はかなり広範な検索で例を見つけることができませんでした。存在しない場合は、そのようなグラフタイプの値が明確で、誰かが名前を付けて作成することを願っています! :)
  2. 既存の沖積またはSankeyライブラリを使用して、どのようにRを「ハッキング」することができますか?これらのチャートタイプはノード間の一定のフローによって定義されるので、これは簡単ではないと思います。
Rで

私は、問題を明確にするためにRを使用して、例を見ていきます。データセットの例を次に示します。

library(tidyr) 
library(dplyr) 
library(alluvial) 
library(ggplot2) 
library(forcats) 

set.seed(42) 
individual <- rep(LETTERS[1:10],each=2) 
timeperiod <- paste0("time_",rep(1:2,10)) 
discretechoice <- factor(paste0("choice_",sample(letters[1:3],20, replace=T))) 
continuouschoice <- ceiling(runif(20, 0, 100)) 
d <- data.frame(individual, timeperiod, discretechoice, continuouschoice) 

離散的または選択的な選択肢のパネルデータを完全に視覚化できます。積み上げ棒グラフを使用して、各カテゴリの個体数が時間とともにどのように変化するかを示すことができます。 AlluvialまたはSankeyの図では、カテゴリの合計を変更している個々の動きをさらに表示できます。たとえば:

# stacked bar diagram of discrete choice by individual 
g <- ggplot(data=d,aes(timeperiod,fill=fct_rev(discretechoice))) 
g + geom_bar(position="stack") + guides(fill=guide_legend(title=NULL)) 


# alluvial diagram of discrete choice by individual 
d_alluvial <- d %>% 
    select(individual,timeperiod,discretechoice) %>% 
    spread(timeperiod,discretechoice) %>% 
    group_by(time_1,time_2) %>% 
    summarize(count=n()) %>% 
    ungroup() 
alluvial(select(d_alluvial,-count),freq=d_alluvial$count) 

Stacked Bar and Alluvial Diagrams

私はまた、積み上げ棒グラフに重み付けをカテゴリ別や期間にわたって連続選択肢の合計を見ることができます。

# stacked bar diagram of discrete choice, weighting by continuous choice 
g + geom_bar(position="stack",aes(weight=continuouschoice)) 

Weighted Stacked Bar

しかし、私はこの加重積み上げ棒グラフに期間全体で個々の「流れ」のいずれかの種類を追加することはできません。これらの「フロー」は、期間1と期間2とで幅が異なるため、期間の間に幅が徐々に変化するように表示する必要があります。対照的に、サンキーと沖積ダイアグラムは、各フローに対して単一の大きさまたは幅を持ちます。

答えて

関連する問題