はじめに
こんにちは、まっきーです。今回はヒストグラムの作り方について解説したいと思います。ヒストグラムは大きなデータを解析する前に、どんなデータが含まれているのかをざっくり確認するのに非常に役に立ちます。
Excelでは動作が止まってしまうような大きなデータを扱う際はぜひKNIMEで前処理を行ってデータをざっくり確認するという作業をしてみてください。
では始めましょう。
今回のテーマ ~Histogram~
覚えてほしいこと
大きなデータで解析を始める前に
一度ヒストグラムでデータ概要を確認してみる
やりたいこと
全社員の残業時間がどのように分布しているか?をヒストグラムで確認するということをやってみたいと思います。
今回は簡単のため非常に少ないデータでヒストグラムを作ってみたいと思います。
ヒストグラムを見ると、今回のデータでは残業時間 2h 未満の入力が一番多いんだなというのがざっくりわかります。
Histogramの使い方
行数のカウントであれば、概要を把握したい数値カラムを指定するだけで簡単にヒストグラムを作成することが可能です。
Workflow - Histogram
データは以前のグラフ化解説で使用したデータと同じデータを使用して解説しています。
Workflowは下記リンクからダウンロードできます。
ヒストグラム - Histogram – KNIME Hub
Confirm - Histogram
勤怠表の残業時間のカラムを元に、勝手に5分割されて行数をカウントし残業時間の分布が作成されます。これによりデータの概要を掴むことができます。
Configure - Histogram
先ほどのような単純なヒストグラムでは設定はカラムを選択するのみでほとんど設定の必要がありません。
かなり追加オプションがあるので、ぜひ複雑な設定も覚えて使いこなしてみてください。
Step1 - Options 分布を知りたいカラムを選択
Histogram Column
Histogram Column で分布を知りたい数値カラムを選択します。今回は残業時間の分布を知りたいので残業時間を選択しました。
Aggregation Method
Bar Chartと同じようなOptionです。ヒストグラムの際は基本Occurence Countを選択すれば、出現回数(行数)をカウントしてくれます。
Sum やAverageを選択すると、残業時間の分布を元に、下で指定する数値カラムを計算してくれます。今回は他の数値カラムがないので例として出してはいませんが、例えば、「年齢」という数値カラムがあったとしてAverageを選択したのち、下で「年齢」を選択すると
「残業時間が少ない分布の人たちの平均の年齢はXX」というのを棒グラフとして示すことができます。
Step2 - Binning 分布の区切りを指定
下記はデフォルト設定なので、適当に5分割であれば何も触る必要がないのですが、それぞれのオプションの意味が非常に大事なので解説します。
Binning method
ここが一番大事です。Binning methodで分布の設定を行います。下記の2種類から選べます。
- Fixed number of bins: X等分の分布を作成
- Sample quantities: 指定した割合で分布を作成
Fixed number of bins で5がデフォルトで設定されています。これは「5等分で分割」という意味になります。詳しい分割の仕方やSample quantities の使い方についてはちょっと一言をご覧ください。
Bin naming
x 軸のラベルを下記の3種類から選べます。デフォルトは中間値を表示するMidpointsになっています。表示例はちょっと一言をご覧ください。
- Midpoints:中間値を表示
- Borders:範囲を表示
- Numbered:Bin1, Bin2, Bin3というように表示
Step3 - General Plot Options 軸ラベル・グラフタイトルを指定
最後に下記を任意で設定して終了です!
- Title: グラフタイトル
- Subtitle:グラフサブタイトル
- Category-axis label:縦軸ラベル
- Frequency-axis label:横軸ラベル
また、Plot horizontal bar chartをクリックすると、x軸とy軸が入れ替わってグラフが生成されます。
ちょっと一言
Histogramはどう範囲を分割しているのか?(Fixed number of bins)
Fixed number of binsを選択した場合、
分割の幅 = ( DomainのMax - DomainのMin ) / fixed number of bins
という公式で分割幅が決まっています。今回の例であれば、
分割の幅 (1.2) = (7 - 1) / 5
という計算が走っていました。
また、Fixed number of binsを選択した場合、Equalを選択できます。それぞれ、
- width:一定の幅になるように分割
- frequency:一定の出現頻度になるように分割
という意味を持っていて、今回の例でequal をfrequencyにすると、下記のようなグラフになり、分割幅が一定の出現頻度になるように調整されます。
Binning method - Sample quantitiesの使い方
デフォルト設定ではFixed number of bins(等分に分割する方法)ですが Sample quantitiesを使用すると任意の位置での区切りが可能になります。
例えば「0%, 25%, 50%, 100% を区切りとして3つに分ける」場合だと、下記のような設定になります。
Bin namingの例
上で説明した通り、Bin Naming(x 軸のラベル)は下記の3つから選べます。デフォルトは中間値を表示するMidpointsになっています。
- Midpoints:中間値を表示
- Borders:範囲を表示
- Numbered:Bin1, Bin2, Bin3というように表示
正しくやったはずなのに正しくヒストグラムが作成されないのはなぜ?
異常値はありませんか?先ほど上で説明した通り、ヒストグラムは最大値・最小値をもとに自動で範囲を作成します。
そのため異常値があった場合、かなり偏ったヒストグラムになってしまい思ったようなヒストグラムにならないことがあります。対処法としては、外れ値を先にRow Filter等で外してしまい、Domain CalculaterでDomainを再計算したのちにHistogramを改めて作るといい感じに作れると思います。
おわりに
お疲れ様でした!久々に更新したらちょっと書きすぎてしまいましたね。
この前すさんからTwitterにてリプライいただけたのが、個人的な嬉しい出来事でした。最近閲覧数増えてきた気がするので、ちょっとは広まっているのかな?
もしリクエスト、お仕事の依頼等ございましたら、Twitterもしくはお問合せフォームよりご連絡ください。
ではまた!
KNIME Hubワークスペース
Twitter アカウント
まっきー | デジタル推進課 (@makkynm) | Twitter
KNIMEに関する本
KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、
本がいいなーと言う人はぜひ試してみてください。
参考リンク
- KNIME Hub(英語):
- KNIME Example Workflow(英語):