質問

それは私のロジックの明らかなエラーであると確信していますが、間違っていることを解決できないようです。簡単に言えば、セキュリティコードの配列リストがあり、セキュリティコードの各組み合わせ間の相関関係を計算したいのです。私のコードは次のとおりです。

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-相関は1.0000000000000002
GOOG-YHOO-相関は0.6986623807707519
GOOG-MSFT-相関は0.7275411317567286
GOOG-CSCO-相関は0.8122979333663799
GOOG-AAPL-相関は0.8217785260604609
GOOG-ADBE-相関は0.6102679356472099
GOOG-DISH-相関は0.644852624453125
GOOG-NSOL-相関は0.11600387177879072
GOOG-SBUX-相関は0.6694306410719489
GOOG-PSFT-相関は-0.09921822861087544
GOOG-XOM-相関は0.6728272039489009
GOOG-WMT-相関は0.4004364090315347
GOOG-IBM-相関は0.7559988282095168
GOOG-JPM-相関は0.7085525367336528
GOOG-DNA-相関は0.13628949379947575
GOOG-HPQ-相関は0.7819350018750656
GOOG-KO-相関は0.5700932682157461
GOOG-VZ-相関は0.737881573641585
GOOG-INTC-相関は0.7654127298771953
GOOG-SPY-相関は0.8042488406758052
GOOG-PEP-相関は0.6297924741882344
GOOG-WFC-相関は0.5064491351161948
GOOG-ABT-相関は0.238752389446595
GOOG-QCOM-相関は0.726356709262025
GOOG-COP-相関は0.570604981251932
GOOG-MCD-相関は0.5434872575410538

しかし、私は取得できません

YHOO-GOOG-相関は....などなど

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

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

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

役に立ちましたか?

解決

私たちが知らないコードへの参照を削除したクイックテストアプリケーションは、私にとってはうまく機能します。

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

ところで、Java 1.5以降を使用している場合、反復子を明示的に使用するよりも、拡張forループを使用する方が簡単です。あなたがします:

for (String code1 : codes) {
    // ...
    for (String code2 : codes) {
        // ...
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top