1

私の論理では明らかなエラーだと確信していますが、何が間違っているのかわかりません。簡単に言えば、セキュリティ コードの配列リストがあり、セキュリティ コードの各組み合わせ間の相関関係を計算したいと考えています。私のコードは次のとおりです。

private void crossCorr(ArrayList<String> codes, HashMap<String, Stock> stockMap){

    // iterate through the codes list and get all the cross correlations:

    Iterator<String> itr1 = codes.iterator();
    while(itr1.hasNext()){
        String code1 = itr1.next();
System.out.println("  -----  " +code1);
        Iterator<String> itr2 = codes.iterator();
        ArrayList<Double> corrs = new ArrayList<Double>();
        HashMap<String, Double> codeCorr = new HashMap<String, Double>();
        String code2="";
        double corr=-2;
        while(itr2.hasNext()){
            code2 = itr2.next();
            Maths calcs = new Maths();      
            corr = calcs.getCorrelation(stockMap.get(code1).getRorHistory(), stockMap.get(code2).getRorHistory());
            corrs.add(corr);    // we order this list and then use this ordered list
                                // to find the codes for the stocks with the highest
                                // correlation for any given stock
            codeCorr.put(code2, corr);
            System.out.println(code1+" - "+code2+" - Correlation is "+corr);
        }
        orderCorrs(6, codeCorr, corrs, code1);
    }

}

私が得る出力は -

----- GOOG
GOOG - GOOG - Correlation is 1.0000000000000002
GOOG - YHOO - Correlation is 0.6986623807707519
GOOG - MSFT - Correlation is 0.7275411317567286
GOOG - CSCO - Correlation is 0.8122979333663799
GOOG - AAPL - Correlation is 0.8217785260604609
GOOG - ADBE - Correlation is 0.6102679356472099
GOOG - DISH - Correlation is 0.644852624453125
GOOG - NSOL - Correlation is 0.11600387177879072
GOOG - SBUX - Correlation is 0.6694306410719489
GOOG - PSFT - Correlation is -0.09921822861087544 GOOG - XOM - Correlation
is 0.6728272039489009
GOOG - WMT - Correlation is 0.4004364090315347
GOOG - IBM - Correlation is 0.7559988282095168
GOOG - JPM - Correlation is 0.7085525367336528
GOOG - DNA - Correlation is 0.13628949379947575
GOOG - HPQ - Correlation is 0.7819350018750656
GOOG - KO - Correlation is 0.5700932682157461
GOOG - VZ - Correlation is 0.737881573641585
GOOG - INTC - Correlation is 0.7654127298771953
GOOG - SPY - Correlation is 0.8042488406758052
GOOG -PEP-相関は0.6297924741882344
GOOG -WFC -WFC-相関は0.5064491351161948 GOOG
-ABT-
相関
は0.238752389446595
GOOG -QCOM -COM -COM -COM -0.54 -COPATION IS 0.54 -COPREATION IS 0.54 -COPRICATION IS 0.54 -FOM COPREATION IS 0.54 -FOM COPREATION IS

しかし、私は決して得ません

YHOO - GOOG - 相関関係は....etc.etc.

これは単純なエラーだと確信しており、何らかの理由でそれを拾っていません。

相関計算を 2 回行っていることはわかっています。この部分が意図したとおりに機能するようになったら、これを修正します。

さらに情報を提供する必要がある場合はお知らせください。

4

1 に答える 1

3

私たちが知らないコードへの参照を削除した簡単なテスト アプリケーションは、私にとっては問題なく動作します。

あなたが処理していないチェックされていない例外を何かがスローしている可能性はありますか? 問題を示す短いが完全なプログラムを投稿できれば、非常に役立ちます。プロジェクト全体のコピーを取り、問題が解決せずに他に何も取り除くことができなくなるまで、ビット (ハードコーディングされたデータと戻り値など) を削除します。その時点で、もちろん、自分で問題を見つけているかもしれません。

ところで、Java 1.5 以降を使用している場合は、イテレータを明示的に使用するよりも拡張 for ループを使用する方が簡単です。あなたがするだろう:

for (String code1 : codes) {
    // ...
    for (String code2 : codes) {
        // ...
    }
}
于 2009-05-03T06:56:45.100 に答える