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 -相关性是1.0000000000000002
歌-雅虎-相关的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
歌- JPM -相关性是0.7085525367336528歌
- DNA -相关性是0.13628949379947575歌
- HPQ -相关性是0.7819350018750656歌
- KO -相关性是0.5700932682157461歌
- VZ -相关性是0.737881573641585歌
- INTC -相关性是0.7654127298771953歌
- SPY -相关性是0.8042488406758052
歌- PEP - 相关性是0.6297924741882344 goog
- wfc - 相关性是0.5064491351161948 goog -
关联是0.238752389446595 goog - qcom -
相关是0.726356709262025 goog - cop - cop
- 相关是0.570604981251932 goog - mcd
- 相关性是0.5434872575410538

但我从来没有得到

YHOO - GOOG - 相关性是……等等等等。

我确信这是一个简单的错误,出于某种原因我没有接受它。

我知道我做了两次相关计算,一旦我让这部分按预期工作,我会解决这个问题。

如果我需要提供更多信息,请告诉我。

4

1 回答 1

3

删除了对我们不知道的代码的引用的快速测试应用程序对我来说效果很好。

是否有可能引发您未处理的未经检查的异常?如果您可以发布一个简短但完整的程序来演示该问题,那将非常有帮助。复制您的整个项目,并删除一些位(例如硬编码数据和返回值),直到您不能拿走任何其他东西而问题也会消失。当然,那时您很可能已经为自己找到了问题。

顺便说一句,如果您使用的是 Java 1.5 或更高版本,则使用扩展的 for 循环比显式使用迭代器更简单。你会这样做:

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