【JKI】022_Pride_02_未知なる世界
【JKI_022】課題を再確認
Just KNIME It! (JKI)
世界中のさまざまな性的指向の法律を調査したCSVファイルをKNIME workflow (WF)で解析し、可視化を試みています。
は1990年代以降かなというところまで前回で扱いました。
今回はその続きです。
【KNIME workflow説明】
【課題_02】同性愛非犯罪化の経年推移
世界の241地域のデータのうち、70地域は未だに非合法だそうですので、そのデータも加えて全体傾向を考えたいと思います。
Constant Value Columnで上記のラベル付けを行い、GroupByで集計、すでに算出した非犯罪化の経年推移データとConcatenateで統合して、Table Viewで一覧表示します。KNIMEの操作は簡単ですね。
設定:
結果:
1990年代から2000年代だけでも52地域での非犯罪化が進んだとはいえ、まだ4分の1強に当たる70地域の法整備が進んでいない状態を一般的になったと言えるだろうかと考えます。
【課題_03】同性婚が法的に認められている国
CSVデータのSAME SEX MARRIAGEカラムを処理して可視化を行います。
YES/NOから1または0へとRule Engineで変換したのち、同性婚が合法な国だけにRow Splitterで絞り込み、Table Viewでの一覧表示や公開されているコンポーネントを利用した世界地図での表示などしてみました。
設定:
Enhanced Choropleth Mapコンポーネントの入手方法は後述します。
結果:
Table Viewは国以外も含む58地域
こちらはコンポーネント側が国家と認識したデータのみ地図上に表示なので注意です。つまり58地域の中で色塗りされていない地域はありうると思いますが私は未検証です。
データの網羅性という観点では完璧な可視化ではないけれど、一目で世界的な偏りが分かるのでとても有用と考えます。
【課題_04】同性婚とシビルユニオンの認知度分布
そもそものところで、私はシビルユニオンという言葉を初めて知りました。
なるほど、同性婚は認められなくてもシビルユニオンなら良いと言う価値観があるのですね。勉強になりました。
WFとしては上記のように、シビルユニオンについてもRule Engineで01表記としてから解析を実行しました。
ひとまず先ほどと同様に地図上に可視化を試みました。
【Enhanced Choropleth Mapコンポーネント】
Choropleth Mapとは何かを調べました。
設定:
今回は非合法とされる国は黄色で、データがないなどで表示できない地域は白色になる様にしてみました。
色の分布は五大陸で大きく異なりますので、ある程度解答になっているとは思います。できれば数値での比較がしたいと考え、以下更に検討しました。
重要な技術上の問題としては、どの地域を五大陸のどれに分類するか、出題者から明示されていないことです。
【CSV Reader】国と大陸
今回の出題者のalinebessaさん
はいつも公式解答を出してくださっているのですが、
Challenge7のKNIME workflow (WF)で国名から大陸名を取得する仕組みを公開されているので、今回使わせていただきます。
既にお気づきかもしれませんが、Enhanced Choropleth Mapコンポーネントもここから拝借して使っています。
今回の私の提出したWFには下記の通り2つのcsvファイルが格納されています。
alinebessaさんからいただいたCSV Readerを使うと
下記の様なデータテーブルが得られます
【大陸分類別データ処理】
alinebessaさんの提供した定義ファイルにしたがって大陸分類をしています。ですので241地域の中で分類ができていないものは集計から漏れていることはご了承ください。同様の問題で私は前に苦心惨憺したことを想い出しています。
Joinerで定義ファイルに掲載されている国のみ大陸分類データを付与し、大陸別にGroupByで集計、Math Formula (Multi Column)で同性婚、シビルユニオンの法制化率を算出してみました。
設定:
結果:
アジアなどが不寛容であることがわかりやすいデータになりました。
同性婚の合法化は0, シビルユニオンは1国のみ合法。えっ、アジアにそんなとこあったっけとリストに戻って見返したら、イスラエルだったので納得でした。
【計算結果の可視化】
WFとしてはColumn Renameで表示名を定義、Column Resorterで並び順を決めてTable Viewで表示するだけです。
設定:
結果:
同性婚もシビルユニオンも合法化がヨーロッパと南アメリカで進んでいることが明白に見て取れると思います。
以上で全ての課題に解答を完了しました。
KNIME Hubに解答は上げています。
おまけ:
【データ解析と可視化のノーコード化】
前の記事で最初にコメントした通り、多くの意味で決してEasyな問題ではありませんでした。私は今回note執筆も含めると半日以上この課題に取り組んでいました。
ただし、一方でプログラミング技術的にはほとんど苦労はありませんでした。
どういう風にデータを扱うか、実データを見たりして悩んで解析方法を定めたら、KNIMEのノードとコンポーネントさえ見つけてきたら設定を変えるだけで、データの各種処理やビジュアライゼーション(可視化)についてはノーコードつまり自分でスクリプトを書く必要などなく解決できました。
本当に網羅的にとか、美麗にと考えると簡単には実装できなくて諦めた部分はありました。でも自分で情報を解析し、見せ方を検討したことで与えられた情報に対する理解度が明らかに高まりました。
今回の出題は
とありました。私は思うのです。作成し終えたビジュアライゼーションだけを納品するだけではもったいない。むしろWFを渡して、どこをいじったらどんなデータを収集、解析、可視化できるかを教えてあげたら一層有用なサービス提供なのではないかと。
老子の言葉とされる『授人以魚 不如授以漁』にちなんで、
という方々がいます。
WFをもらった人は、なるほどこれなら自分でもできる。今度は自分で工夫して新たな視点で他のデータと合わせて分析してみようじゃないかと思うかもしれません。
技術的な情報なら、KNIMEコミュニティなど世界中から得られます。JKIの公式解答も、コミュニティの活用推進を推奨していると感じています。
さあ、皆さんご一緒に!
記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。