プロが教えるわが家の防犯対策術!

VBA(エクセル2000)で組んいます
日本各地の気温の変化の関係を調べるソフトを作くろうとしていますが頓挫しています
日本のすべての県庁所在地の365日分の気温を折れ線グラフにします
(47都道府県分あるので47個の折れ線グラフができます)
天気が西から東に移っていくので、温暖の変化も西から東に移っていくと仮設しています
東京のある一ヶ月を基準にして日本各地の県庁所在地の気温の似ている部分を調べたいのですが方法が分かりません

例えば
東京の5月1日から5月31日のグラフは静岡の4月20日から5月20日までのグラフに一番似ている
東京の5月1日から5月31日のグラフは長野の4月10日から5月10日までのグラフに二番目に似ている
東京の5月1日から5月31日のグラフは群馬の5月10日から6月10日までのグラフに三番目に似ている

などのように東京の5月1日から31日までの一ヶ月間を他の46個のグラフのどこかの一ヶ月間から似ている部分を探し出して順番をつけるソフトを作りたいと思っています
グラフを「似ている」順に並べる可能でしょうか?

そのような似ているグラフを並べ替えるプログラムの手法、または学習しなくてはならないことなど、どのようなことでもよいので
教えていただきたいです
今は目視して似ている順にグラフを並べ替えていますが何とかVBAで自動化したいと思っております
よろしくお願いします

A 回答 (2件)

★まずは、類似するグラフを検索する事です。


・類似するグラフを検索するマクロを作りましょう。
・1か月分の折れ線(データ値)を元に類似するグラフを順番に比較して
 差分などを取って一番差がないものを1番似ている。次に差がないものを
 2番目に似ていると処理させます。ソートは検索の後で行います。
・問題は、類似するグラフをどうやって47県のグラフから一致させるかです。
・まずは、1ヶ月のデータを3日おきに10個の点と類似する部分を1月1日から
 12月31日まで順番に検査していきます。もちろん、47県のグラフの1つですよ。
・10個の点が最も多く一致した場所を一時的に記録していきます。似ていると
 判断したら何個一致したかの個数と、一致している最初の月日をセットで
 管理して記憶します。そして、このなかで一番多く一致した箇所を1都道府県
 で最も似たグラフの場所とします。→12月31日まで検査したあとで1つに絞る。
・これをあと46都道府県分おこない、全部で47個の似たグラフをはじき出します。
・そしたら、この47個のグラフから最も一致した箇所が多い県を1番似ている、
 2番目に多く一致した箇所を2番目に似ている県と順位をつけます。
・よって、1位~47位と順位付けます。この上位の3位が類似しているベスト3
 になります。わかりますかね。イメージが…。

まとめ:
・47都道府県のグラフから最も類似した場所のグラフを1県につき、1箇所だけ必ず
 見つけます。
・そして、47県の類似グラフの中から最も一致した箇所の順に1位~47位と順位
 付けます。
・あとは、順位付けグラフの上位の3位をベスト3として表示させれば良いのです。
・重要なのは、類似グラフの検索です。1か月分(31日)では多いので、3日おきに
 10個の点として比較させるのです。あまり多いと検索時間がかかったり、どこも
 類似しないと判定不能に陥ります。バランスですよ。10個って数はね。
・以上。類似検査のアルゴリズムでした。参考になりますかね?これ?おわり。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます
何度も繰り返し読んで全体の流れが理解できました
「似ている順に並べる」ということに関するアルゴリズムが
自分の頭の中でどのように組めばよいのか見当もつかなかったので
貴重な羅針盤になりました。
プログラムを組もうと思います

お礼日時:2007/01/12 07:37

どのようなことでも良いのであれば、俺自身教えてもらったことも含めて書こうと思います。



まずはコヒーレンス関数です。
俺は挫折しました。
http://oshiete1.goo.ne.jp/qa2329264.html
もしかしたら役に立つかもしれません。

次に相互相関関数です。
ある程度似たよな波形を判別する基準にはなるようです。
ただ、俺の場合は利用できませんでした。

方程式を作ってしまって比較する方法として、最小二乗法で求めるのもありだと思います。

ここからは完全な予想で書きます。
俺がやるとしたらと言う方法です。
1)温度データを積分します。(1日+2日+・・・・31日)
その積分したデータを都道府県で引きます。(東京-静岡、東京-長野・・・)

2)温度データを微分し、そのデータを都道府県ごとに微分し、その微分のデータを合計します。
(東京1日-2日)-(静岡1日-2日)+(東京2日-3日)-(静岡2日-3日)・・・+(東京30日-31日)-(静岡30日-31日)
ゼロに近い方が似ています。

3)東京と指定の県の温度データの差を積分します。
ゼロに近い方が似ています。
(東京1日-静岡1日)-(東京2日-静岡2日)-・・・・(東京31日-静岡31日)

4)フーリエ変換をして取り出した周波数のスペクトルの差を積分するのはどうでしょう?
ゼロに近い方が似ています。
東京1Hz-静岡1Hz+東京2Hz+静岡2Hz+・・・

1つだけで比較してもいいし、4つまとめて比較してもいいし、2つだけ使って比較してもいいと思います。
それぞれやってみてどの組み合わせなら今までの基準に近い順番になるのかを検討します。

参考になれば幸いです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます
ご回答とリンク先を拝見させていただきました
繰り返し読ませていただきましたが難しくて今はまだ理解できておりません
しかし、自分にとってこの「似ているグラフを並べる」という問題は長期間掛けて取り組もうと思っていますので少しずつ時間を掛けて紐解かせていただきたいです。
ありがとうございました

お礼日時:2007/01/12 07:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!