今回は、各項目のデータをポイント化して、その合計ポイントから総合ランキングを求める方法を紹介してみよう。この方法が「最も理に適ったランキングの算出方法」と思うかもしれないが、実はそうとも言い切れない。というのも、データのポイント化は意外と難しいからである。

データを比例配分してポイント化する方法

今回も、前回と同じ「賃貸物件の候補」をまとめた表を使って総合ランキングの算出方法を紹介していこう。今回は、データをポイント化して、その合計ポイントから総合ランキングを求める方法を考察してみる。

  • 賃貸物件のデータをまとめた表

データをポイント化するときに頭を悩ませるのが、「どのような計算式でデータをポイントに換算するか?」という問題である。ここでは、

・「広さ」「家賃」「徒歩」の3項目を同じ比重で評価する
  (※各項目の合計ポイントをいずれも100ポイントにする)
・それぞれの数値データを比例配分する形でポイントを付加する

という条件のもと、ポイントの計算方法を考えてみよう。

最初に、各項目の「合計」を算出する。ここでの注意点は、表のすぐ下に「合計」を記述するのではなく、1行空けた状態で「合計」のセルを配置すること。というのも、表のすぐ下に「合計」を配置すると、データを並べ替えたときに「合計の行」まで並べ替えられてしまうからだ。データの並べ替えを行うときは、下図のように1行空けて「合計の行」を配置するのが基本である。

  • 「広さ」のデータを合計

同様の手順で「家賃」と「徒歩」についても合計を求める。

  • 「家賃」と「徒歩」のデータを合計

これらをもとに各データのポイントを算出していこう。比例配分によりポイントを算出するときは、「数値データ/合計」で比率を計算し、これをポイントとすればよい。このとき「合計」のセルを絶対参照で指定しておくと、数式をオートフィルでコピーできるようになる。なお、今回は各ポイントの合計を100とするため、数式の最後に100を「掛け算」してある。

  • 「広さ」をポイント化する数式

この数式をオートフィルでコピーすると、全物件について「広さ」のポイントを算出できる。念のため、ポイントの合計も計算しておこう。正しく数式が入力されていれば、この合計は必ず100になるはずだ。

  • 数式をオートフィルでコピー

  • ポイント化された「広さ」のデータ

同様の手順で「家賃」のポイントも算出していく。ただし、「家賃」は数値が小さく(安く)なるほど良いデータとなることに注意しなければならない。よって、数式の先頭に「-」(マイナス)を付けてポイントを算出している。つまり、この項目は減点ポイントとして扱うことになる。

  • 「家賃」をポイント化する数式

「徒歩」についても同様で、数値が小さく(近く)なるほど良いデータになるため、数式の先頭に「-」(マイナス)を付けて減点ポイントとして扱っている。

  • 「徒歩」をポイント化する数式

上記のように計算を行うと、各項目の合計ポイントが100(または-100)になり、各項目を同じ比重で評価できる。あとは、物件ごとに「総合ポイント」を算出し、関数RANK()で「総合順位」を求めるだけだ。

※関数RANK()の使い方は、前回の連載を参照。

  • 「総合ポイント」の算出

  • 「総合順位」を関数RANK()で求める

今回の例では、加点ポイントが1項目(広さ)、減点ポイントが2項目(家賃と徒歩)になるため、「総合ポイント」はマイナス値になる。もちろん、ポイントの数値が大きいほど「良い物件」になるといえる。総合順位の小さい順にデータを並べ替えると、以下の図のような結果が得られる。

  • 「総合順位」で並べ替えた結果

この結果を見ると、総合1位は「ハイム真伊那比」、総合2位は「AXE Mynavi」、総合3位は「グランMynavi」になることがわかる。ただし、この結果には大きな問題点が含まれていることに注意しなければならない。

比例配分ポイントの問題点

先ほど示した例は、各項目の合計ポイントが100(または-100)になるため、「広さ」「家賃」「徒歩」の3項目を同じ比重で扱っているように見えるかもしれない。しかし、実際にはそのような結果にはなっていない。

先ほどの結果を詳しく見ると、「徒歩」のデータの良し悪しが、かなりの割合で総合ランキングに反映されていることがわかる。

  • 「徒歩のポイント」と「総合ランキング」の関係

参考までに、各項目のポイント差を比較すると、

  「広さ」・・・最高16.05、最低8.85、その差は約7.20ポイント
  「家賃」・・・最高-10.66、最低-15.08、その差は約4.42ポイント
  「徒歩」・・・最高-4.76、最低-20.63、その差は約15.87ポイント

という数値になる。

このように、比例配分によりポイントを算出した場合は、「値が小さい項目」のポイント差が必要以上に大きくなりすぎる傾向がある。上記の例の場合、「徒歩」のデータが過大評価されており、「家賃」のデータは誤差のような評価にしかなっていない。

比例配分という計算方法を用いる以上、これは避けられない問題といえる。よって、比例配分によりポイントを算出する方法は、「必ずしも最適な方法ではない」となるケースが多いと思われる。

基準値からの増減でポイント化する

では、どのようにポイントを算出すればよいのだろうか? 別の方法として考えられるのは、「基準となる値」を設定し、そこから「指定した変動幅」につき1ポイントの割合でポイントを増減させる、という手法である。

たとえば、「広さ」の基準を25.00㎡とし、そこから1.50㎡につき1ポイントの割合でポイントを増減する、という考え方でポイントを算出してみよう。

  • 「広さ」の基準値と変動幅

この計算式は以下の図のようになる。(数値データ)-(基準値)で「基準値からの差」を計算し、それを(変動幅)で割ってポイントを算出している。さらに、今回の例では、10を足すことで(基準値)=10ポイントとなるように調整してある。

  • 「広さ」をポイント化する数式

(基準値)と(変動幅)を絶対参照で指定していれば、この数式はオートフィルでコピーすることが可能だ。これで「広さ」のポイントを算出できる。

  • 数式をオートフィルでコピー

同様に「家賃」の項目は、(基準値)を80,000円、(変動幅)を2,000円と設定してポイントを算出した。こちらは、数値が小さく(安く)なるほどポイントを高くしたいので、(変動幅)にマイナスの数値を指定している。

  • 「家賃」の基準値と変動幅

  • 「家賃」をポイント化する数式

「徒歩」についても同様の計算方法でポイントを算出する。こちらは、(基準値)を5分、(変動幅)を1分に設定した。

  • ポイント化された「徒歩」のデータ

あとは、各物件のポイント数を合計し、関数RANK()で総合順位を求めるだけ。このような計算方法でも総合ランキングを求めることが可能である。

  • 「総合ポイント」の算出

  • 「総合順位」で並べ替えた結果

念のため、総合順位を紹介しておくと、総合1位は「ハイム真伊那比」、総合2位は「ザ・パークMynavi」、総合3位は「Mynaviパティオ」という結果になった。

データのポイント化は意外と難しい!?

(基準値)と(変動幅)を自分で指定してポイントを算出する方法は、「ある程度は合理的なランキングの算出方法」といえるが、その設定次第でランキングが変化してしまうことに注意しなければならない。

たとえば、先ほどの例で「広さ」の(変動幅)を2.00㎡に変更すると、それに応じてポイントが再計算され、総合ランキングは以下の図のように変化する。

  • 「広さ」の変動幅を2に変更した場合

つまり、「(変動幅)をいくつに設定するか?」のさじ加減ひとつで、ランキングの結果も大きく変わってしまう訳である。よって、かなり不安定な要素を含む計算方法になると考えられる。

このように、データをポイント化してランキングするときは、「どうやってポイントを算出するか?」が大きな問題となる。最適な計算方法を見出すには、その分野に関する十分な知識と経験が求められるし、それでも最適解にはたどり着けないかもしれない。

スポーツの分野でも、世界ランキングの算出などに(過去の試合結果を)ポイント化する手法がよく採用されているが、より公平なランキングにするために何度も計算方法が改定されているケースが少なくない。

適切にポイントを算出しようとすればするほど、その計算式や条件(場合分け)が複雑になっていくはずだ。もっと言えば、「何が適切なのか?」を定義することすら困難になるケースも十分にもありえる。

このように考えていくと、データのポイント化は計算を複雑にするだけで、簡易的なランキングの算出には向ていないいえる。ランキング結果を参考程度に捉えるのであれば、本連載の第14回や第15回で紹介した手法を使った方が、計算の手間が少ないぶんだけ便利といえるかもしれない。