所以我試圖在PHP中實現樣品Pearson相關係數:有什麼錯我的PHP Pearson相關係數代碼
(去http://en.wikipedia.org/wiki/Pearson_correlation_coefficient並搜索「爲樣本Pearson相關係數替代公式也可用」對於特定的公式,我想實現)
$sum = 0;
$TF1 = 0;
$TF2 = 0;
$wSquare1 = 0;
$wSquare2 = 0;
$m = sizeof($sample);
foreach($sample as $x){
if(!isset($obj1[$x])){
$obj1[$x]['count'] = 0;
}
if(!isset($obj2[$x])){
$obj2[$x]['count'] = 0;
}
$sum += $obj1[$x]['count'] * $obj2[$x]['count'];
$TF1 += $obj1[$x]['count'];
$TF2 += $obj2[$x]['count'];
$wSquare1 += $obj1[$x]['count']^2;
$wSquare2 += $obj2[$x]['count']^2;
}
$numer = $sum * $m - $TF1 * $TF2;
$denom_left = $m*$wSquare1 - $TF1^2;
$denom_right = $m*$wSquare2 - $TF2^2;
$denom = sqrt($denom_left) * sqrt($denom_right);
$pears = $numer/$denom;
return $pears;
但後來我有時代碼將返回一個值,雖然是不應該PCC超過1 ....
上午我大於1做錯了什麼?
您的代碼錯過了示例數據,您應該命名其中哪些失敗。也許你應該先爲這個函數編寫一個單元測試?或者是stackoverflow你的單元測試? :) – hakre
示例數據是相當大的擺在這裏......,我想看看我的實現數學是正確的,這樣我可以集中精力找出數據,而不是數學 –
好,使它在github上或類似的可用,並與testdata添加unittests。然後分享鏈接。 – hakre