
Googleのウェブマスターツールには、検索クエリデータを参照できる機能があります。
今回はその中の、「検索結果の平均掲載順位」と「クリック率」をすべて集計し、検索順位とクリック率の関係をグラフ化してみたので紹介です。
「掲載順位が下がると、どのようにクリック率が下がるのか?」など視覚的にわかるかと思います。尚、今回利用したのは、このサイトの3ヶ月分のデータです。
photo by Robert Scoble
目次
検索クエリ機能
ウェブマスターツールには、以下のように検索クエリデータを参照できる機能があります。

そしてその機能では、検索で表示された回数、クリック数、クリック率(CTR)、平均掲載順位を3ヶ月分まで見ることができます。

で実際に、このサイトの3ヶ月分の検索クエリを表示させてみたところ、クエリ数約2万、表示回数約53万、クリック数約8万のデータを参照することができました。

これらのデータを見てみると、当然ですが検索掲載順位が高いほどクリック率が高くなり、サイトへの流入が多くなります。
逆に掲載順位が低いほどクリック率が低くなります。

ただこれ、キーワードによってもばらつきがあるので、「掲載順位が下がると、クリック率(サイトへの流入)も下がる」ということは大まかにわかっても、どんな感じで下がっていくのかなどは分りません。
ちょうどウェブマスターツールには、最大3ヶ月分のデータをCSVでダウンロードできる機能があるので、取得したデータを、Rubyでプログラムで集計してみました。

集計結果
約2万クエリ、すべての掲載順位の表示回数とクリック数を集計して、それをもとに平均掲載順位ごとのクリック数を410位まで計算してみました。
以下がこれらをグラフ化したものです。
全データ
1位から410位まですべてをグラフ化したら、以下のような散布図になりました。
ちょっとロングテールすぎてわかりませんね。
1位~100位まで
全データはちょっと見づらいので、1位から100位までのグラフ。
1位から、順位が下がるにつれて、下降するのはわかるのですが、50位以降クリック率が結構上がるのはなんなんでしょうか。誤差にしても、これだけ50位以降にはっきり現れると、何かあるのかもしれません。
これについては、一応自分なりに、原因をいろいろ考えてみました。
Googleには「検索の設定」に「インスタント検索結果は表示しない」という項目があります。
これに設定すると、Googleの検索結果は、50位とか100位まで表示されます。

これはあくまで僕の予想ですが、この設定にしている人が検索して、上位で欲しい結果が得られなかった時に、リストをダーっと一気に下がりページャー手前で目に留まったものをクリックしてしまっているのではないかと思います。多分。
1位~50位まで
20位を過ぎるあたりまでは、クリック率が10%近くあるのですが、そこからガクッと3%ぐらいになります。
1位~20位まで
10位以下は、だいたい10%弱で横ばいです。
1位~10位まで
ウェブマスターツールで1位~10位までは、0.1単位で平均掲載順位が出力されます。
1位台は60~40%、2位台は40~20%と急激に下がり、3位から10位までは、緩やかに10%まで下がっていくといった感じです。
すべての数値
やはり、グラフだけでは細かな数値が表示されないので、以下に全てのデータを載せておきます。約2万のキーワード数を集計した結果です。
| 平均掲載順位 | 表示回数 | クリック数 | クリック率 | 
|---|---|---|---|
| 1.0 | 11956 | 7356 | 61.53% | 
| 1.1 | 8306 | 4781 | 57.56% | 
| 1.2 | 4263 | 2133 | 50.04% | 
| 1.3 | 4218 | 2096 | 49.69% | 
| 1.4 | 889 | 543 | 61.08% | 
| 1.5 | 2819 | 1300 | 46.12% | 
| 1.6 | 3289 | 1777 | 54.03% | 
| 1.7 | 2841 | 1233 | 43.40% | 
| 1.8 | 1511 | 769 | 50.89% | 
| 1.9 | 1866 | 770 | 41.26% | 
| 2.0 | 5829 | 2424 | 41.59% | 
| 2.1 | 3878 | 1546 | 39.87% | 
| 2.2 | 3882 | 1383 | 35.63% | 
| 2.3 | 2920 | 979 | 33.53% | 
| 2.4 | 2884 | 1155 | 40.05% | 
| 2.5 | 1900 | 785 | 41.32% | 
| 2.6 | 2135 | 775 | 36.30% | 
| 2.7 | 4905 | 1616 | 32.95% | 
| 2.8 | 4746 | 1346 | 28.36% | 
| 2.9 | 3379 | 870 | 25.75% | 
| 3.0 | 3719 | 1077 | 28.96% | 
| 3.1 | 8195 | 1110 | 13.54% | 
| 3.2 | 8635 | 1421 | 16.46% | 
| 3.3 | 9567 | 1892 | 19.78% | 
| 3.4 | 11016 | 1194 | 10.84% | 
| 3.5 | 32105 | 2437 | 7.59% | 
| 3.6 | 19870 | 3843 | 19.34% | 
| 3.7 | 2234 | 622 | 27.84% | 
| 3.8 | 2345 | 680 | 29.00% | 
| 3.9 | 3043 | 721 | 23.69% | 
| 4.0 | 6072 | 1371 | 22.58% | 
| 4.1 | 2838 | 751 | 26.46% | 
| 4.2 | 2687 | 637 | 23.71% | 
| 4.3 | 3194 | 507 | 15.87% | 
| 4.4 | 5051 | 777 | 15.38% | 
| 4.5 | 2017 | 535 | 26.52% | 
| 4.6 | 5759 | 1062 | 18.44% | 
| 4.7 | 2767 | 676 | 24.43% | 
| 4.8 | 2654 | 685 | 25.81% | 
| 4.9 | 3543 | 721 | 20.35% | 
| 5.0 | 4884 | 870 | 17.81% | 
| 5.1 | 8389 | 726 | 8.65% | 
| 5.2 | 7631 | 944 | 12.37% | 
| 5.3 | 5897 | 1022 | 17.33% | 
| 5.4 | 3444 | 646 | 18.76% | 
| 5.5 | 7642 | 1022 | 13.37% | 
| 5.6 | 3373 | 531 | 15.74% | 
| 5.7 | 3046 | 527 | 17.30% | 
| 5.8 | 2666 | 410 | 15.38% | 
| 5.9 | 2671 | 335 | 12.54% | 
| 6.0 | 2141 | 362 | 16.91% | 
| 6.1 | 8558 | 479 | 5.60% | 
| 6.2 | 2080 | 297 | 14.28% | 
| 6.3 | 5173 | 640 | 12.37% | 
| 6.4 | 1022 | 177 | 17.32% | 
| 6.5 | 6992 | 372 | 5.32% | 
| 6.6 | 3047 | 354 | 11.62% | 
| 6.7 | 1819 | 248 | 13.63% | 
| 6.8 | 2040 | 203 | 9.95% | 
| 6.9 | 4948 | 368 | 7.44% | 
| 7.0 | 2025 | 350 | 17.28% | 
| 7.1 | 2784 | 249 | 8.94% | 
| 7.2 | 11750 | 831 | 7.07% | 
| 7.3 | 10718 | 679 | 6.34% | 
| 7.4 | 4865 | 359 | 7.38% | 
| 7.5 | 2726 | 239 | 8.77% | 
| 7.6 | 1677 | 184 | 10.97% | 
| 7.7 | 3156 | 379 | 12.01% | 
| 7.8 | 2975 | 309 | 10.39% | 
| 7.9 | 904 | 93 | 10.29% | 
| 8.0 | 1972 | 247 | 12.53% | 
| 8.1 | 6742 | 592 | 8.78% | 
| 8.2 | 2137 | 212 | 9.92% | 
| 8.3 | 2911 | 250 | 8.59% | 
| 8.4 | 1320 | 154 | 11.67% | 
| 8.5 | 4355 | 341 | 7.83% | 
| 8.6 | 2759 | 264 | 9.57% | 
| 8.7 | 4661 | 215 | 4.61% | 
| 8.8 | 1702 | 245 | 14.39% | 
| 8.9 | 1171 | 185 | 15.80% | 
| 9.0 | 2997 | 293 | 9.78% | 
| 9.1 | 39978 | 1096 | 2.74% | 
| 9.2 | 3875 | 172 | 4.44% | 
| 9.3 | 1256 | 141 | 11.23% | 
| 9.4 | 389 | 49 | 12.60% | 
| 9.5 | 895 | 82 | 9.16% | 
| 9.6 | 1234 | 114 | 9.24% | 
| 9.7 | 591 | 93 | 15.74% | 
| 9.8 | 6632 | 198 | 2.99% | 
| 9.9 | 852 | 98 | 11.50% | 
| 10 | 6396 | 556 | 8.69% | 
| 11 | 3624 | 407 | 11.23% | 
| 12 | 2745 | 353 | 12.86% | 
| 13 | 2286 | 211 | 9.23% | 
| 14 | 4959 | 452 | 9.11% | 
| 15 | 5586 | 436 | 7.81% | 
| 16 | 5283 | 225 | 4.26% | 
| 17 | 2488 | 199 | 8.00% | 
| 18 | 1889 | 171 | 9.05% | 
| 19 | 1650 | 160 | 9.70% | 
| 20 | 1128 | 109 | 9.66% | 
| 21 | 2336 | 150 | 6.42% | 
| 22 | 1308 | 113 | 8.64% | 
| 23 | 1626 | 124 | 7.63% | 
| 24 | 3549 | 113 | 3.18% | 
| 25 | 3050 | 78 | 2.56% | 
| 26 | 4674 | 84 | 1.80% | 
| 27 | 1746 | 58 | 3.32% | 
| 28 | 2580 | 136 | 5.27% | 
| 29 | 1915 | 52 | 2.72% | 
| 30 | 2598 | 59 | 2.27% | 
| 31 | 1459 | 43 | 2.95% | 
| 32 | 2068 | 54 | 2.61% | 
| 33 | 1264 | 37 | 2.93% | 
| 34 | 1284 | 27 | 2.10% | 
| 35 | 1322 | 54 | 4.08% | 
| 36 | 1305 | 32 | 2.45% | 
| 37 | 1017 | 24 | 2.36% | 
| 38 | 3068 | 41 | 1.34% | 
| 39 | 1616 | 24 | 1.49% | 
| 40 | 943 | 25 | 2.65% | 
| 41 | 1245 | 27 | 2.17% | 
| 42 | 2373 | 23 | 0.97% | 
| 43 | 1857 | 15 | 0.81% | 
| 44 | 1007 | 14 | 1.39% | 
| 45 | 773 | 12 | 1.55% | 
| 46 | 1889 | 39 | 2.06% | 
| 47 | 514 | 6 | 1.17% | 
| 48 | 412 | 11 | 2.67% | 
| 49 | 402 | 7 | 1.74% | 
| 50 | 267 | 10 | 3.75% | 
| 51 | 216 | 11 | 5.09% | 
| 52 | 55 | 6 | 10.91% | 
| 53 | 44 | 8 | 18.18% | 
| 54 | 150 | 3 | 2.00% | 
| 55 | 177 | 8 | 4.52% | 
| 56 | 159 | 1 | 0.63% | 
| 57 | 64 | 3 | 4.69% | 
| 58 | 130 | 5 | 3.85% | 
| 59 | 78 | 5 | 6.41% | 
| 60 | 65 | 2 | 3.08% | 
| 61 | 53 | 3 | 5.66% | 
| 62 | 61 | 2 | 3.28% | 
| 63 | 31 | 5 | 16.13% | 
| 64 | 23 | 4 | 17.39% | 
| 65 | 43 | 1 | 2.33% | 
| 66 | 83 | 3 | 3.61% | 
| 67 | 26 | 3 | 11.54% | 
| 68 | 50 | 3 | 6.00% | 
| 69 | 73 | 1 | 1.37% | 
| 70 | 39 | 4 | 10.26% | 
| 71 | 22 | 3 | 13.64% | 
| 72 | 20 | 0 | 0.00% | 
| 73 | 36 | 2 | 5.56% | 
| 74 | 13 | 1 | 7.69% | 
| 75 | 62 | 2 | 3.23% | 
| 76 | 47 | 2 | 4.26% | 
| 77 | 46 | 2 | 4.35% | 
| 78 | 3 | 0 | 0.00% | 
| 79 | 23 | 0 | 0.00% | 
| 80 | 59 | 3 | 5.08% | 
| 81 | 5 | 1 | 20.00% | 
| 82 | 31 | 1 | 3.23% | 
| 83 | 22 | 1 | 4.55% | 
| 84 | 5 | 1 | 20.00% | 
| 85 | 15 | 1 | 6.67% | 
| 86 | 53 | 5 | 9.43% | 
| 87 | 21 | 3 | 14.29% | 
| 88 | 32 | 0 | 0.00% | 
| 89 | 21 | 2 | 9.52% | 
| 90 | 23 | 2 | 8.70% | 
| 91 | 33 | 2 | 6.06% | 
| 92 | 2 | 1 | 50.00% | 
| 93 | 11 | 0 | 0.00% | 
| 94 | 7 | 1 | 14.29% | 
| 95 | 28 | 0 | 0.00% | 
| 96 | 29 | 0 | 0.00% | 
| 97 | 17 | 1 | 5.88% | 
| 98 | 4 | 0 | 0.00% | 
| 99 | 15 | 4 | 26.67% | 
| 100 | 225 | 4 | 1.78% | 
| 110 | 955 | 12 | 1.26% | 
| 120 | 1374 | 9 | 0.66% | 
| 130 | 1689 | 5 | 0.30% | 
| 140 | 1104 | 2 | 0.18% | 
| 150 | 376 | 1 | 0.27% | 
| 160 | 164 | 3 | 1.83% | 
| 170 | 135 | 2 | 1.48% | 
| 180 | 124 | 1 | 0.81% | 
| 190 | 96 | 4 | 4.17% | 
| 200 | 173 | 2 | 1.16% | 
| 210 | 317 | 0 | 0.00% | 
| 220 | 412 | 3 | 0.73% | 
| 230 | 434 | 0 | 0.00% | 
| 240 | 210 | 0 | 0.00% | 
| 250 | 56 | 0 | 0.00% | 
| 260 | 5 | 0 | 0.00% | 
| 290 | 17 | 0 | 0.00% | 
| 300 | 1 | 0 | 0.00% | 
| 340 | 1 | 0 | 0.00% | 
| 360 | 1 | 0 | 0.00% | 
| 380 | 2 | 0 | 0.00% | 
| 410 | 2 | 0 | 0.00% | 
| 合計 | 534898 | 82543 | 15.43% | 
今回使用したプログラム
今回集計用に作った、Rubyのプログラムも以下に載せておきます。
# encoding: utf-8
require "csv"
require 'pp'
csv = CSV.read('sheet.csv')
results = {}
csv.each_with_index do |items, i|
  next if i == 0 #最初の行はとばす
  key = items[4].chomp.to_f
  if results[key]#検索平均掲載順位をハッシュのキーとして
    results[key] = [results[key][0].to_i + items[1].to_i, results[key][1].to_i + items[2].to_i]
  else
    results[key] = [items[1].to_i, items[2].to_i]
  end
end
#pp results.sort
click_rates = []
results.each do |k, v|
  click_rates << [k, v[0], v[1], v[1].to_f/v[0].to_f]
end
click_rates = click_rates.sort {|a, b| a[0] <=> b[0] }
is_csv = false #CSVをファイルに出力する
res_csv = ''
puts "平均\t表示\tClick\tClick率" unless is_csv
click_rates.each do |v|
  if is_csv #CSVとして出力
    res_csv << v[0].to_s + "," + v[1].to_s + "," + v[2].to_s + "," + v[3].to_s + "\n"
  else #ターミナルに表示
    puts v[0].to_s + "\t" + v[1].to_s + "\t" + v[2].to_s + "\t" + sprintf( "%.2f%",  (v[3] * 100))
  end
end
if is_csv
  puts res_csv
  File.write("res_csv.csv", res_csv)
end
CSVデータの文字コードは、UTF-8でないとエラーが出ます。
まとめ
今回使用したのが、このサイトの3ヶ月分だけのデータなので、数値には多少ばらつきがあります。
サイトのターゲットとなるキーワードによっては、結果も変わってくると思うので、あくまで参考程度に見てください。




 
        