php或mysql提供两列之间的相关系数
有人能告诉我php中的函数或mysql中的查询返回mysql表中两列之间的相关系数的方向或给我一个例子吗?改编自interwebs上发现的类似问题,或许类似的东西可能有用php或mysql提供两列之间的相关系数,php,mysql,Php,Mysql,有人能告诉我php中的函数或mysql中的查询返回mysql表中两列之间的相关系数的方向或给我一个例子吗?改编自interwebs上发现的类似问题,或许类似的东西可能有用 select ( avg( `col1` * `col2` ) - avg( `col1` ) + avg( `col2` ) ) / ( stddev( `col1` ) * stddev(`col2`) ) as 'correlation' from `table`; 最终版本完成-可能帮助他人 mysql_connec
select ( avg( `col1` * `col2` ) - avg( `col1` ) + avg( `col2` ) ) / ( stddev( `col1` ) * stddev(`col2`) ) as 'correlation'
from `table`;
最终版本完成-可能帮助他人
mysql_connect($host,$username,$password);
mysql_select_db($db_name);
$array1 = mysql_query("SELECT totalgoals FROM stats");
$array2 = mysql_query("SELECT totalshotsrecieved FROM stats");
$query = "SELECT * FROM stats";
$result = mysql_query($query) or die(mysql_error());
$array1 = array();
$array2 = array();
while($row = mysql_fetch_array($result)){
$array1[] = $row['totalgoals'];
$array2[] = $row['totalshots_made'];
}
$string_version = implode($array1);
echo $string_version.'<br>';
$string_version = implode($array2);
echo $string_version.'<br>';
$correlation = Correlation($array1, $array2);
//Displaying the calculated Correlation:
print $correlation;
//The functions that work behind the scene to calculate the
//correlation
function Correlation($arr1, $arr2)
{
$correlation = 0;
$k = SumProductMeanDeviation($arr1, $arr2);
$ssmd1 = SumSquareMeanDeviation($arr1);
$ssmd2 = SumSquareMeanDeviation($arr2);
$product = $ssmd1 * $ssmd2;
$res = sqrt($product);
$correlation = $k / $res;
return $correlation;
}
function SumProductMeanDeviation($arr1, $arr2)
{
$sum = 0;
$num = count($arr1);
for($i=0; $i<$num; $i++)
{
$sum = $sum + ProductMeanDeviation($arr1, $arr2, $i);
}
return $sum;
}
function ProductMeanDeviation($arr1, $arr2, $item)
{
return (MeanDeviation($arr1, $item) * MeanDeviation($arr2, $item));
}
function SumSquareMeanDeviation($arr)
{
$sum = 0;
$num = count($arr);
for($i=0; $i<$num; $i++)
{
$sum = $sum + SquareMeanDeviation($arr, $i);
}
return $sum;
}
function SquareMeanDeviation($arr, $item)
{
return MeanDeviation($arr, $item) * MeanDeviation($arr, $item);
}
function SumMeanDeviation($arr)
{
$sum = 0;
$num = count($arr);
for($i=0; $i<$num; $i++)
{
$sum = $sum + MeanDeviation($arr, $i);
}
return $sum;
}
function MeanDeviation($arr, $item)
{
$average = Average($arr);
return $arr[$item] - $average;
}
function Average($arr)
{
$sum = Sum($arr);
$num = count($arr);
return $sum/$num;
}
function Sum($arr)
{
return array_sum($arr);
}
?>
mysql\u connect($host、$username、$password);
mysql\u select\u db($db\u name);
$array1=mysql_查询(“从统计数据中选择totalgoals”);
$array2=mysql_查询(“选择从统计中获取的totalshotsrecieved”);
$query=“从统计信息中选择*”;
$result=mysql\u query($query)或die(mysql\u error());
$array1=数组();
$array2=数组();
while($row=mysql\u fetch\u数组($result)){
$array1[]=$row['totalgoals'];
$array2[]=$row['totalshots_make'];
}
$string_version=内爆($array1);
回显$string_版本。“
”;
$string_version=内爆($array2);
回显$string_版本。“
”;
$correlation=相关性($array1,$array2);
//显示计算出的相关性:
打印$correlation;
//在后台工作以计算
//相关性
函数相关性($arr1,$arr2)
{
$correlation=0;
$k=总产品平均偏差($arr1,$arr2);
$ssmd1=平方平均偏差($arr1);
$ssmd2=平方平均偏差($arr2);
$product=$ssmd1*$ssmd2;
$res=sqrt(产品);
$correlation=$k/$res;
返回$correlation;
}
函数SumProductMeanDeviation($arr1,$arr2)
{
$sum=0;
$num=计数($arr1);
对于($i=0;$i您需要更具体,并且扩展<代码>关联< /代码>。@ Jigar相关性是最常见和最有用的统计之一。相关性是描述两个变量之间的关系程度的单个数字。正相关关系表明这些变量在PAR中增加或减少的程度。allel;负相关性表示一个变量随另一个变量的减少而增加的程度。相关性通常表示为+1和-1之间的结果。我的问题对任何熟悉统计的人来说都很清楚-如果你不熟悉统计术语,就不公平地投反对票。删除不必要的文本。有人能解释为什么他的问题被否决了?@rlandster你能解释一下你的评论吗?太棒了-非常感谢!你知道什么是相关性,理解了这个问题,并给了我简单的代码来给出正确的答案-谢谢。