Dutch PHP Conference 2025 - Call For Papers

# stats_covariance

(PECL stats >= 1.0.0)

stats_covarianceComputes the covariance of two data sets

### Descripción

stats_covariance(array \$a, array \$b): float

Returns the covariance of a and b.

a

The first array

b

The second array

### Valores devueltos

Returns the covariance of a and b, or false on failure.

### User Contributed Notes 2 notes

Angel J. Salinas
8 years ago
// kanniprabu's function is wrong.
// You can check this function with COVARIANCE.P Excel function:

function getCovariance( \$valuesA, \$valuesB )
{
\$countA = count(\$valuesA);
\$countB = count(\$valuesB);
if ( \$countA != \$countB ) {
trigger_error( 'Arrays with different sizes: countA='. \$countA .', countB='. \$countB, E_USER_WARNING );
return false;
}

if ( \$countA < 0 ) {
trigger_error( 'Empty arrays', E_USER_WARNING );
return false;
}

// Use library function if available
if ( function_exists( 'stats_covariance' ) ) {
return stats_covariance( \$valuesA, \$valuesB );
}

\$meanA = array_sum( \$valuesA ) / floatval( \$countA );
\$meanB = array_sum( \$valuesB ) / floatval( \$countB );

for ( \$pos = 0; \$pos < \$countA; \$pos++ ) {
\$valueA = \$valuesA[ \$pos ];
if ( ! is_numeric( \$valueA ) ) {
trigger_error( 'Not numerical value in array A at position '. \$pos .', value='. \$valueA, E_USER_WARNING );
return false;
}

\$valueB = \$valuesB[ \$pos ];
if ( ! is_numeric( \$valueB ) ) {
trigger_error( 'Not numerical value in array B at position '. \$pos .', value='. \$valueB, E_USER_WARNING );
return false;
}

\$difA = \$valueA - \$meanA;
\$difB = \$valueB - \$meanB;
\$add += ( \$difA * \$difB );
} // for

return \$add / floatval( \$countA );
}
-2
kanniprabu at gmail dot com
11 years ago
<?php
//Covariance Calculation
function standard_covariance(\$aValues,\$bValues)
{
\$a= (array_sum(\$aValues)*array_sum(\$bValues))/count(\$aValues);
\$ret = array();
for(
\$i=0;\$i<count(\$aValues);\$i++)
{
\$ret[\$i]=\$aValues[\$i]*\$bValues[\$i];
}
\$b=(array_sum(\$ret)-\$a)/(count(\$aValues)-1);
return (float)
\$b;
}
\$aValues=array(3,4,5,7);
\$bValues=array(10,11,13,14);
echo
standard_covariance(\$aValues,\$bValues);
?>