派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【コラム】仕事で使える!データ分析の基本を知る:エンジニアが生き残るためのテクノロジーの授業 #5

この記事では、動画「エンジニアが生き残るためのテクノロジーの授業 #5:仕事で使える!データ分析の基本を知る」をまとめています。

今回は、ビジネスでデータを分析するときに知っておきたい知識と、注意点について紹介します。ビジネスでデータを使う理由として、経験や勘に根拠を示すことが挙げられます。経験や勘に頼っていると、精度がバラバラで再現性がありませんが、データを元にして、数字で相手に伝えることで「根拠」となるのです。

このときに必要なのは高度な分析ではなく、足し算によって合計を求める、割り算を使って平均を求める、といった基本的な計算で十分です。それでも、意外と使い方を知らない、間違った使い方をしている、という例が見受けられますので、基本的な算数や数学を使ってデータを扱う方法について紹介します。

【筆者】
増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピューターを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『Pythonではじめるアルゴリズム入門』『IT用語図鑑』『図解まるわかりセキュリティのしくみ』(以上、翔泳社)、『プログラマのためのディープラーニングのしくみがわかる数学入門』『プログラミング言語図鑑』(以上、ソシム)、『基礎からのプログラミングリテラシー』(技術評論社)などがある。

データを把握する

データを見るとき、数値になっていると無条件に信用してしまう人がいますが、その数値は作為的に作られたものである可能性があります。例えば、アンケート結果の表現の例として、次の図の左側のようなものをよく見かけます。これを見て、「200人も支持しているなら良い商品だ」と感じる人がいるかもしれません。

f:id:itstaffing:20211025161621j:plain

では、図の右側のような表現だとどう感じるでしょうか?「購入者の4割に支持された商品」という表現では、6割の人には支持されていないことがわかります。これではあまり良い商品だとは思わないかもしれません。

実はこれが同じことを表している場合があります。それが次の表のようなデータの場合で、購入した人数が500人いて、良いと答えた人が200人、悪いと答えた人が300人だった場合です。

この場合、上記のいずれの表現も間違えているわけではなく、このような宣伝方法は多く見かけますが、実際の数だけでなく、割合もみなければ正しく評価できないことがわかります。

f:id:itstaffing:20211025161628j:plain

もう一つの例として、グラフで表現している場合があります。例えば、次の図のグラフでは、「良い」と答えた人が前年の2.5倍に増加、と書かれています。これをみると、商品の内容や品質が改善されたように感じるかもしれません。

f:id:itstaffing:20211025161634j:plain

しかし、実際のデータは次の表のようになっている場合があります。前年は200人に調査して、良いと答えた人が80人、今年は500人に調査して良いと答えた人が200人だったとしましょう。そもそもアンケートを実施した人数が異なるわけです。

f:id:itstaffing:20211025161642j:plain

このように、グラフが正しく描かれていても、実際の数だけでなく割合もみなければ正しく評価できないのです。

・代表値

データを把握するときには、代表値も確認します。代表値とは、平均や中央値、最頻値のように、データを代表する値のことです。例えば、データの分布を示すヒストグラムが与えられたとき、その図から受ける印象は人によって違ったとしても、代表値を見れば、誰もが同じ認識を持つことができます。

・平均

平均はデータの合計をデータの個数で割ったもので、多くの人がよく使っていると思います。分布を考えると、ちょうど図形の重心のような位置になります。

・中央値

中央値は名前の通り中央の値のことで、データの大きい方と小さい方から1つずつ取った時に、最後に残る値、つまりデータの数で考えた時にちょうど真ん中にある値です。外れ値が入ると、平均は大きく変わってしまいますが、中央値はあまり変わらないという特徴があります。

・平均と中央値の違い

平均と中央値の違いを表す例としてよく使われるものに、年収や所得を表すヒストグラムがあります。次の図は厚生労働省による平成28年の所得のグラフですが、平均所得が545万円と言われると、そんなに多いとは思えない、という人が多いと思います。一方、中央値をみると427万円となっており、平均との間に100万円以上の差があります。

f:id:itstaffing:20211025161650j:plain

(出典)厚生労働省 平成28年 国民生活基礎調査の概況

この理由は、数は少なくても、1億円やそれ以上の所得を稼いでいる人がいるためです。平均は、大きな値があるなど偏りがある場合に引きずられる傾向があるのです。少し偏っているデータにおいて、代表値として「真ん中」を考えるときは、平均だけでなく中央値も考える必要があることがわかります。

データを分析する

平均や中央値などを使ってデータを把握しても、もう少し詳しくデータの内容を知りたい場合があります。例えば、次の図の分布を比べると、平均や中央値は同じ値になります。しかし、データの分布は異なります。

f:id:itstaffing:20211025161658j:plain

これらの違いを知るためには、中央に集まっているのか、全体にばらついているのか、という視点で考える必要があります。ただし、そのばらつき具合の解釈は人によって異なるため、数値化したいものです。

・分散と標準偏差

そこで、平均からどれだけ離れているかを調べる方法として、分散や標準偏差があります。つまり、平均から離れているほど値を大きくするのです。このとき、単純に平均との差を計算してしまうと、プラスの部分とマイナスの部分で相殺されてしまうため、平均との差を2乗し、その平均を求めます。

例えば、次の表のデータがあった場合、平均はAからHまでの点数を合計してデータの数で割れば求められます。この平均との差の2乗を使って計算したものが分散となります。これは、平均から離れている値が多いほど大きくなるため、ばらつき具合を調べられるのです。

f:id:itstaffing:20211025161715j:plain

ここで、分散は2乗しているため、単位が変わってしまっています。そこで、分散の平方根を計算します。上記の場合は、63.5のルートを計算すると、7.97という値が出ます。これが標準偏差で、平均から8くらいばらついている、と考えられます。しかし、この8という値が大きいのか小さいのかよくわかりません。

このように、分散や標準偏差は単独では意味がないのです。分散や標準偏差は、他のものと比べるときに使います。例えば、国語の点数と数学の点数を比べる場合を考えてみましょう。
5人の生徒がいて、それぞれに国語と数学のテストをしました。そして平均を求めると、いずれも60点でした。このとき、分散と標準偏差を求めると、次の表のように大きな違いがあることがわかります。国語よりも数学の分散が大きいため、数学のばらつきが大きいと言えるのです。

f:id:itstaffing:20211025161723j:plain

・標準化

このようにばらつきを比較するだけでなく、分散や標準偏差を使う場面として、標準化があります。標準化は、平均が0、分散が1になるように変換することです。標準化すれば、どんなデータでも平均と分散が同じになります。

標準化では、全体のばらつきをみるのではなく、分布における個人の位置を調べます。これを応用したのが、受験などでよく使われる偏差値です。

・偏差値

偏差値は、標準化を活用したもので、平均が50、分散が100になるように変換したものです。これを使うと、それぞれの生徒の偏差値がわかります。つまり、偏差値が50であれば平均付近で、偏差値が大きくなれば平均より良い成績であることがわかります。そして、平均より離れていればいるほど、偏差値の値が大きくなるのです。この方法は、100点満点でも10点満点でも使えるのでとても便利です。

分散や標準偏差は点数という1つの軸で考えましたが、複数の軸で考えたい場合もあります。この軸の間にどのような関係があるのか知りたい場合は、相関関係を調べる方法や回帰分析を使う方法があります。

・回帰分析

回帰分析は、複数の軸での関係を1つの直線の式で表現する方法です。例えば、登山をする人であれば、標高が高くなるに連れて気温が下がることを知っていると思います。そして、この時には図のような関係があることが知られています。

f:id:itstaffing:20211025161735j:plain

この時、1本の直線上に綺麗に並ぶことはありませんが、傾向としてほぼこの直線のようになります。このように、いくつか点をとって、その真ん中を通るように直線を書く方法が回帰分析で、複数の軸での関係性に気づくことができます。

Excelを使えば簡単に回帰分析ができます。散布図を描いて、グラフ上の点のどれかを選択して右クリックし、近似曲線の追加を選ぶだけです。そして、書式設定画面で「グラフに数式を表示する」という欄にチェックすれば式が表示されます。

f:id:itstaffing:20211025161742j:plain

データを表現する

データをグラフなどで表現するときにはデータの種類について知っておく必要があります。例えば、データをコンピュータで処理するには、数値化する方法がよく使われますが、数値化する方法として名義尺度、順序尺度、間隔尺度、比例尺度という4つの尺度が知られています。

・名義尺度

名義尺度は、分類するために割り当てた数字のことです。性別であれば0は男性、1は女性、血液型であれば1はA型、2はB型、3はO型、4はAB型、のように割り当てます。この名義尺度の特徴として、平均などを計算することに意味がない、ということがあります。例えば、血液型のデータで平均を求めて2.5になったとして、それには意味がありません。

・順序尺度

順序尺度では、5をとても良い、4を良い、3は普通、2は悪い、1はとても悪い、というように順番に並べます。ECサイトなどでは星の数で表される場合もあり、平均を求めることも可能です。例えば、平均が4であれば真ん中よりも良いことはわかります。しかし、この3と4の間と4と5の間は同じとは限りません。このため、平均の値は参考程度に使う方が良いでしょう。

・間隔尺度

間隔尺度では、その間隔が一定です。例えば、気温の場合は1℃と2℃の間隔は1℃で、21℃と22℃の間隔も1℃で同じです。ただし、1℃と2℃の場合は2倍になっていますが、10℃と20℃の2倍とは大きく違います。

・比例尺度

そこで、倍率も同じ指標として、比例尺度があります。長さの場合は1cmと2cmは2倍ですし、10cmと20cmも2倍です。

この名義尺度と順序尺度を合わせて「質的変数」、間隔尺度と比例尺度を合わせて「量的変数」といいます。こういった考え方がデータを表現するときに必要な理由について考えてみましょう。

例えば、血液型のような名義尺度の場合には、グラフを描くときにどの順番で並べても問題ありませんが、順序尺度の場合には、グラフを描く時には順番に並べないとわかりにくいものです。

例えば、左の図は人数の多い順に並べたもの、右の図は尺度の順番に並べたものです。この場合、右の方がわかりやすいと感じるのではないでしょうか。

f:id:itstaffing:20211025161754j:plain

・棒グラフ、ヒストグラム、折れ線グラフ、円グラフ

グラフを選ぶ時にも、データの種類によって変わってきます。例えば、棒グラフは質的変数の時に使います。一方で、量的変数の場合には似たようなグラフでもヒストグラムを使うことが一般的です。ヒストグラムは隣接する棒の間隔を開けずに並べます。

f:id:itstaffing:20211025161800j:plain

グラフを描くときは表計算ソフトを使うのが簡単ですが、表計算ソフトにはさまざまなグラフが用意されています。それらを使ってどんなグラフを描くのが適切なのかを考えてみましょう。

例えば、次のようなデータがあったとき、どんなグラフを描けば良いでしょうか?

f:id:itstaffing:20211025161807j:plain

1つの例として、次の図のようなグラフが考えられます。

f:id:itstaffing:20211025161814j:plain

このとき、正解があるわけではありません。あくまでも1つの例であり、1つ目の場合に円グラフを使って割合を表現しても構いませんし、3つ目の場合に折れ線グラフを使って量を比較しても構いません。

ここで大事なのは何を表現したいのか、ということです。量を表現したい場合は棒グラフを使いますし、変化を比較したい場合は折れ線グラフ、割合を比較したい場合は円グラフを使います。

そして、ただグラフを描くだけでなく、何を伝えたいのかを考えてみましょう。例えば、1つ目のグラフをみただけでは、何を伝えたいのかよくわかりません。基本情報技術者試験の応募者数が多いことを伝えたいのか、データベーススペシャリストが少ないことを伝えたいのかわからないのです。

また、2つ目のグラフの場合も、右肩下りであることを伝えたいのか、2017年に増えていることを伝えたいのかよくわかりません。このため、グラフを単純に作成するだけでなく、グラフの色を変える、自分が伝えたいことを入れる、というのも1つの方法です。

f:id:itstaffing:20211025161821j:plain

データから選択する

普段から私たちはさまざまな場面で選択しています。その日に着る服や食べるもの、仕事を進める順番など、常に何かを選んでいると言っても過言ではないかもしれません。この時、1つの評価軸で決定できるのであれば簡単ですが、実際にはそんなに簡単でないこともあるでしょう。

例えば、スマートフォンを選ぶ場面を考えてみましょう。この時、選ぶ基準はたくさんあります。デザインが良い機種や性能が良い機種、価格が安いものやブランド力があるもの、などさまざまです。もし全てにおいて優れていれば簡単に選べるのですが、実際にはそんなことはありません。次の表のように点数をつけるとバラバラなことが多いでしょう。

f:id:itstaffing:20211025161828j:plain

性能がよければ価格が高かったり、デザインが良くても性能が悪かったりします。そんな中でこれらの中から自分なりに優先順位をつけて選ばないといけないわけです。このとき、性能を重視する人もいれば、価格を重視する人もいるでしょう。

これを個人の好みで決めていいのであれば簡単なのですが、ビジネスの場面では好みだけでなく根拠が必要です。例えば、これがスマートフォンを選ぶのではなく新卒採用の場面や、新しいシステムの発注の場面かもしれません。そのような場合は、事前に優先順位をつけて重みを設定しておくのです。

例えば、次のような重みを設定したとしましょう。この場合は、価格の優先度を高く、デザインの優先度を低くしています。そして、この重みにそって計算すると、点数がもっとも高い機種Dを選択できます。

f:id:itstaffing:20211025161834j:plain

ここでのポイントは、デザインや性能といった複数の軸があったものが、1つの軸で判断できるようになったことです。そして、事前に決めた優先順位や重みによって、誰が計算しても同じ判断ができるようになったのです。

ここで問題になるのは、どうやって優先順位を決めるのか、ということです。優先順位を間違えると結果が変わってしまいますし、重みの設定によっても結果が変わります。そこで、この優先順位の決め方について考えてみましょう。

わかりやすいのは、重要度と緊急度によって決める方法です。横軸に重要度、縦軸に緊急度をとると、図のような4つに分けて考えられます。

f:id:itstaffing:20211025161841j:plain

優先順位が一番高いのは右上の重要度が高くて緊急度も高いものです。お客様に関する案件で、トラブルが起きているような場合には最優先で対応が必要でしょう。一方、優先順位が一番低いのは左下です。自社の案件で、トラブルも起きていなければ後回しでも問題ないでしょう。問題なのは右下と左上です。これは状況によって、会社によって、内容によって変わってきます。

このような方法はわかりやすい一方で、今回のスマートフォンを選ぶような場合には使えません。また、新卒採用やシステムの発注の場合にも使えません。そこで、ロジカルに優先順位をつける方法として、狩野分析法があります。

これは、ある商品の機能の場合、その機能があるとどう思うのか、ないとどう思うのか、という両面で考える方法です。例えば、次の表のように、うれしい、普通、困る、といった視点で考えます(実際にはもう少し細かく分割します)。

f:id:itstaffing:20211025161849j:plain

一番優先順位が高いのは、ないと困るけれど、あって当たり前のものです。そして、2番目は、ないと困り、あると嬉しいものです。続いて3番目はなくても普通で、あると嬉しいものです。そして、4番目はなくても普通で、あっても普通のものです。

これを使うと、私がスマートフォンを選ぶときの優先順位は次のようになります。私の場合、カメラはあるのが普通で、ないと困ります。電子マネーはあると嬉しいですが、ないと困ります。ワンセグはあると嬉しいが、なくても普通、音楽再生はあるのが普通ですが、なくても普通です。

この優先順位は人によって違うと思いますが、順番を決めるときに参考になると思います。あとはこの優先順位にそって重みを設定すれば良いのです。

データで予測する

未来の変化を予測するときは、過去のデータを使うことになります。このとき、いくつかの方法があります。例えば、株価などでよく使われるのが移動平均です。区間をずらしながら平均を計算する方法で、その区間を長くすることで傾向をつかむことができます。

また、分析のところで紹介した回帰分析も予測に使えます。一次関数などの関数に当てはめることで、未知の値が与えられたときに、そのとき値を計算で求められます。これを応用した例としてフェルミ推定があります。

また、確率も予測には便利です。確率を使う例として、期待値や区間推定と言った方法があります。ここでは移動平均について、もう少し詳しく紹介します。

・移動平均

移動平均は区間をずらしながら平均を計算する方法で、表計算ソフトを使うと簡単に計算できます。例えば、A列に日付が入っていて、B列に値が入っていたとします。このとき、C列で3日間の移動平均を求めるには、AVERAGE関数で3日間の平均を計算するだけです。同様に、D列で1週間の移動平均を求める場合も、AVERAGE関数で7日間の平均を計算すれば求められます。

そして、計算された値でグラフを描きます。実際には、Excelが備えるデータ分析ツールにある移動平均というものを使っても同じことができます。例えば、気温のデータを使えば、次のようなグラフが描けます。

f:id:itstaffing:20211025161855j:plain

この青色が元のグラフで、7日間の移動平均がオレンジ、30日間の移動平均が緑のグラフになっています。これを見ると、青よりもオレンジ、そしてオレンジよりも緑の方が滑らかになっていることがわかります。

これにより傾向はわかりますが、緑のグラフは青のグラフよりも全体的に右に寄っています。つまり、全体的に遅れているのです。傾向はわかるけれど、全体的に遅れるということは、予測には使いにくいものです。

・加重移動平均

そこで、直近のデータを優先する方法として加重移動平均があります。例えば、3日間の場合は、1日前のデータを3倍、2日前のデータを2倍、1日前のデータを1倍して6で割ります。この日数を増やして計算すると、図のようなグラフが描けます。

f:id:itstaffing:20211025161902j:plain

オレンジのグラフが移動平均で、緑のグラフが加重移動平均です。これを見ると、どちらも同じくらい滑らかになっていて、緑の方が若干左に寄っていることがわかります。つまり、直近のデータを優先することで、全体的に前倒しできていることになります。他にも、指数平滑化法という方法があります。

今回紹介したのは基本的なデータの使い方でしたが、他にもさまざまな方法が存在します。ぜひ興味がある場合は他についても調べていただければと思います。

▼ これまでの「コラム:エンジニアが生き残るためのテクノロジーの授業」
#1「現代のITエンジニアに求められるスキルとは?」
#2「プログラミングに必要なアルゴリズムの考え方とは?」
#3「ネットワークがつながる理由を知る」
#4「データベースのしくみと使い方を知る」