2019年07月29日

スマホの急速な普及に伴い、特に若年層は毎日多くの時間をスマホ利用に費やしている。それだけスマホに時間を取られていると、当然他の事にしわ寄せが来るわけで、おそらくテレビの視聴時間が減少しているのだろうという推測が成り立つ。

7月頭に総務省が令和初となる令和元年版情報通信白書を公開した(とはいえ、2018年までのデータなので令和は含まれてない)。令和時代のメディア利用実態はどのようになるだろうか? 昭和、そして平成からどのように変化するだろう?



上のVizは主要メディアである、テレビのリアルタイム視聴、録画視聴、ネット利用、新聞購読、ラジオ聴取に関して、平日と休日の行為者率を示したものである。右上のラジオボタンで平日と休日を切替可能だ。
続きを読む

lunarmodule7 at 22:16│Comments(0)

2019年06月09日



厚生労働省が7日に発表した人口動態統計によれば、2018年の出生数は91万8397人で過去最低となり、3年連続100万人を下回った。合計特殊出生率は1.42と政府の目標値1.8とは依然として大きな隔たりがある。

出生数から死亡数を引いた人口の自然増減は44万4085人のマイナスで、人口減少のトレンドはこの先ずっと続くことになる。この人口減少は、おそらく多くの人たちが思っているよりも急激で、多くの人が思っているよりも致命的だ

この先100年にわたりどの程度日本の人口は減少していくのか。国立社会保障・人口問題研究所が発表している日本の将来推計人口(平成29年推計)の2015年から2115年の人口に基づき、2015年時点の各都道府県の人口が失われるのかを可視化してみた。消失する都道府県の選択は人口の少ない順である。右上のスライダーを操作することで年を増減でき、その時点で存続している都道府県のみ地図上に表示される。ただし当該自治体が実際に存続あるいは消失するということでは無いことに留意願いたい。

続きを読む

lunarmodule7 at 19:00│Comments(11)

2019年05月18日

ダミーデータが欲しい時、名前やメールアドレス、住所などがほしければ次のようなジェネレータを使うのが常套手段だろう。


  • 疑似個人情報データ生成サービス:連番、氏名、性別、電話番号(一般)、電話番号(FAX)、電話番号(携帯)、メールアドレス、住所、生年月日、年齢、出身地、血液型、乱数、パスワード
  • なんちゃって個人情報:名前、ふりがな、メールアドレス、性別、年齢、誕生日、婚姻、血液型、都道府県、電話番号、携帯番号、キャリア、カレーの食べ方


上記で対応していないものについては自力で準備しなければならないが、EXCELを使えば、日付、文字列、数値からなるダミーデータを容易に生成できる。Using Excel's Random Functions to setup Dummy Dataではそのテクニックを網羅的に紹介している。ここではいくつか説明を付与して紹介したい。

1.日付


ある範囲の日付を生成するには次のようなやり方がある。

1-1.任意の範囲の日付


ある範囲の日付を生成する場合には次のように記載すれば良い。
=RANDBETWEEN(開始日付,終了日付)

RANDBETWEEN関数に渡す2つの日付はDATE関数で生成する。表示形式を日付にするのを忘れずに。
=RANDBETWEEN(DATE(2019,1,1),DATE(2019,12,31))

1-2.ある月の任意の日付


日だけ変化させればよいのであれば、DATE関数で生成することもできる。
=DATE(2019,2,RANDBETWEEN(1,28))

1-3.指定日を平均とする正規分布日付


おおよそ2019/1/1から2019/12/31まで平均値2019/7/1、標準偏差2ヶ月で生成する。NORMINV(RAND(), 0,60)は±180日に99.7%が入る。
=DATE(2019,7,NORMINV(RAND(), 0,60))



2.文字列


いくつかの単語の中から一つを選択させるのには次のようなやり方がある。

2-1.文字列選択


数式に書ける程度の量であればCHOOSE関数とRANDBETWEEN関数を組み合わせて利用するのが早い。
=CHOOSE(RANDBETWEEN(1,6),"アイテム1","アイテム2","アイテム3","アイテム4","アイテム5","アイテム6")

アイテムの数は任意に設定できる。アイテムの出現頻度に偏りをつけたければ重複して設定すれば良い。たとえば男女比2:1の性別を生成したい場合には次のようにする。
=CHOOSE(RANDBETWEEN(1,3),"男","男","女")

A型39%、O型29%、B型22%、AB型10%の血液型を生成する場合は、RAND関数をA列に配置し、B列に次のように記載する。
A1=RAND()
=IF(A1<0.39,"A型",IF(A1<0.68,"O型",IF(A1<0.9,"B型","AB型")))

2-2.文字列検索


VLOOKUP関数とRANDBETWEEN関数を組み合わせて使えばテーブルを参照してピックアップできる。
=VLOOKUP(RANDBETWEEN(1,リスト長), リスト, 2)


たとえば次のような星座テーブルが用意されているとする。

星座テーブル

このテーブルをランダムに参照するには次のように記載する。
=VLOOKUP(RANDBETWEEN(1,12),星座テーブル,2)

2-3.インデックス


INDEX関数を使えばよりシンプルに書くことも可能だ。ソート番号を用意する必要がない。
=INDEX(リスト, RANDBETWEEN(1, COUNTA(リスト) ))

先程の星座を参照するには次のように記載する。
=INDEX(星座テーブル[星座],RANDBETWEEN(1,COUNTA(星座テーブル[星座])))


3.数値


ある条件に基づいた数値を出力にするには次のような方法がある。

3-1.数値選択


文字列と同じ方法が利用できる。
=CHOOSE(RANDBETWEEN(1,6),数値1,数値2,数値3,数値4,数値5,数値6)
=CHOOSE(RANDBETWEEN(1,6), 18, 21, -19, 36.4, 18, 24)

3-2.ランダム整数


整数に関してはRANDBETWEEN関数が便利に利用できる。
=RANDBETWEEN(開始数値, 終了数値)
=RANDBETWEEN(50, 100)

3-3.ランダム実数


RAND関数は0以上1未満の乱数を生成する。
=RAND()

aとbの範囲で乱数を生成するには次のようにする。
=RAND()*(b-a)+a

INT関数でくくれば整数になる。
=INT(RAND()*(b-a)+a)

3-4.正規分布


指定値を平均とする正規分布はNORMINV関数で生成できる。
=NORMINV(RAND(), 平均, 標準偏差)

平均50、標準偏差17の分布は次のように生成できる。
=NORMINV(RAND(), 50, 17)

3-5.傾向線に沿った数値


傾向線Y=mX+cに沿った数値を生成するためには傾向線にランダム要素を付与する。m=2, c=5のとき、たとえば次のように記載する。
=NORMINV(RAND(),2,0.3)*A1 + NORMINV(RAND(),5,1.5)

傾向線

4.真偽値


TRUE/FALSEを返す真偽値は文字列と同様に生成できる。

4-1.選択


CHOOSE関数でTRUE/FALSEから選択させる。
=CHOOSE(RANDBETWEEN(1,2),TRUE, FALSE)

4-2.IF


IF文を使えばTRUE/FALSEの割合を細かく制御できる。TRUEを30%にしたければ次の通り。
=IF(RAND()<0.3,TRUE, FALSE)

5.文字列と数値の組み合わせ


各々生成して&で結合すれば良い。接頭辞としてTR,VN,CARのいずれかをもち、その後に2桁の01-15までの数値が付く商品コードは次のように生成できる。
=CHOOSE(RANDBETWEEN(1,3),"TR","VN","CAR")&TEXT(RANDBETWEEN(1,15),"0#")


おまけ


Pythonが使えるならFakerパッケージを使うことで、自由自在にダミーデータを生成できる。日本語ドキュメントはこちら。使い方はPythonメモ : fakerでテストデータを生成する - もた日記で紹介されている。生成可能なデータの一覧はこちらにまとめられている。

lunarmodule7 at 23:31│Comments(0)

2019年05月08日

ComicCloud


WikipediaのList of best-selling mangaにおいては2000万部以上販売された漫画リストがメンテされている。現時点でリストに挙げられているのは136作品。最も巻数が多いのは『こちら葛飾区亀有公園前派出所』で200巻、最少は『デビルマン』の5巻である。

それをタイムラインとして可視化したのが次のVizだ。タイムラインとリストをボタンで切替可能で、ソート順を販売数(Sales)、初出年(Start Year)で切り替えられる。販売数、初出年、読者層でフィルタリング可能だ。また、作品をクリックすると英語版Wikipediaの解説ページに遷移する。

ComicTL




続きを読む

lunarmodule7 at 23:30│Comments(0)││視覚化 

2019年05月02日

令和の時代が幕を開けた。平成は名前と異なり激動の時代だった。バブル経済の崩壊、地下鉄サリン事件、2度の大震災、アメリカ同時多発テロと歴史に残る出来事が多くあった。

一方、経済に目を向けると、リーマンショックがあったとはいえ、世界が順調に経済発展を続けてきたのとは裏腹に、バブル崩壊後の日本は長く停滞の時期を迎えることとなった。世界が豊かになったのに、日本はずっと足踏みを続けてきた。相対的に貧しくなったのだ。

日本国内にいるとなかなかその実感には乏しいかもしれないが、賃金を諸外国と比較すると一目瞭然だ。経済協力開発機構(OECD)が加盟国の平均賃金(年収)データを集計しているので、本エントリでは各国の賃金の推移を可視化したVizを作成してみた。昨年OECDに加盟したリトアニアを除く35カ国の給与を2017年USD購買力平価(PPP)で換算したものである。為替レートによる換算よりも、各国の物価を反映した購買力で比較をしたほうが、豊かさ/貧しさを評価するには適しているだろう。

Wage3Countries

続きを読む

lunarmodule7 at 22:00│Comments(0)