私はPerlで過去の株式市場分析をしています。 1つの側面は、研究機関の過去の株式格付けの正確性を分析することを扱う。最も基本的な評価尺度は、購入、保留、売却です。しかし、これらの企業の多くは異なる用語を使用していますが、その中には3点以上のものもあります。私が持っているもの不等式の比較からPerlで順序付きリストを作成する方法は?
は、次のようになります(ヤフー・ファイナンスから)別の企業数百人によって発行されたアップグレード/ダウングレードの何千ものリストです:
Action From To
==================================================
Upgrade Add Buy
Downgrade Add Hold
Upgrade Hold Add
Downgrade Buy Outperform
Upgrade Hold Outperform
Downgrade Hold Reduce
Upgrade Add Outperform
だから、基本的には、Aのような比較のリストです> B、D < C、B> C、D <
私は、各調査会社のために必要なもの、これらの比較の長いリストに取って、次のようになります順序付けられたリストである:
A> B > C> D> E
私はこの問題に多くの考えを与えており、解決策を思いつくことはできません。各アップグレード/ダウングレードが1増分だけ飛び降りた場合、私はそれを行うことができたと思いますが、C < Aのような比較をどのように挿入するかについて頭を悩ますことはできません。
誰もが考えている?
更新:
ありがとう@ikegami。元のデータでテストしたところ、あなたは正しいです。
グラフをレンダリングするGraph :: Easyを使用してデータを実行しました。
コード:
use Graph::Easy;
my $graph = Graph::Easy->new();
# Note that these are all in 'Upgrade' direction
$graph->add_edge ('Hold', 'Add');
$graph->add_edge ('Hold', 'Buy');
$graph->add_edge ('Hold', 'Outperform');
$graph->add_edge ('Buy', 'Outperform');
$graph->add_edge ('Reduce', 'Hold');
$graph->add_edge ('Add', 'Buy');
print $graph->as_ascii();
出力:
+------------------------+
| v
+--------+ +------+ +-----+ +-----+ +------------+
| Reduce | --> | Hold | --> | Add | --> | Buy | --> | Outperform |
+--------+ +------+ +-----+ +-----+ +------------+
| ^
+------------------------------------+
は、ここではいくつかの明確なあいまいさを持つグラフです。おそらく私は何とか両方のモジュール(またはグラフのいくつかの機能)を使ってあいまいさをテストすることができます。
+------------------------------+
| v
+--------+ +---------+ +-----+
| Reduce | --> | Neutral | --> | Buy |
+--------+ +---------+ +-----+
^ ^
| |
| |
+---------+ |
| Sell | ------+
+---------+
各データセットに 'A> B> C> D> E'が存在すると仮定できますか? – Dave
あなたの例では、OutperformがAddよりも高いか低いかはあいまいです。 – Sean
@Sean:申し訳ありませんが、グラフにデータを追加しました。私は簡潔さを目指していましたが、必要な情報をすべて提供していないことがわかりました。 – calyeung