在PHP中创建P值

时间:2014-03-03 15:13:41

标签: php statistics

我需要计算一个P值(用于重要性检查),从Z值,均值(0),标准偏差(1),正常分布是累积的。

PHP中是否有可以执行此操作的功能?

这是我目前的代码:

$P_value = (1/sqrt(2*pi()))*exp(-0.5*pow($this->ZValue,2));

ZValue = -4,688072309,确认其值正确。

预期价值:1,37895E-06

价值:6.9681241978373E-6

公式中可能有问题,但无法发现错误。

编辑:

如果有人有兴趣,这里的代码可以正常工作:

function CalculateP_Value(){
    $this->CalculateZ();

    $this->PValue = (1/sqrt(2*pi()))*exp(-0.5*pow($this->ZValue,2));
}

function SetConstant(){
    $this->CalculateZ();

    $this->A1 = 0.319381530;
    $this->A2 = -0.356563782;
    $this->A3 = 1.781477937;
    $this->A4 = -1.8221255978;
    $this->A5 = 1.330274429;
    if($this->ZValue>0){
        $this->K = 1.0/(1.0+0.2316419*$this->ZValue);
    }
    else{
        $this->ZValue*=-1;
        $this->K = 1.0/(1.0+0.2316419*$this->ZValue);
    }
}

function CalculateCumulative(){
    $this-> SetConstant();
    $this-> CalculateP_Value();

    $this->Cumulative = $this->GetCalculateCumulative($this->ZValue);

}

function GetCalculateCumulative($z) {
    if($z >= 0) {
        $val = 1.0 - $this->PValue*($this->A1*$this->K + $this->A2*pow($this->K,2) + $this->A3*pow($this->K,3) + $this->A4*pow($this->K,4) + $this->A5*pow($this->K,5));
        return $val;
    }
    else {
        $val = 1.0 - $this->GetCalculateCumulative(-1 * $z);
        return $val;
    }
}

1 个答案:

答案 0 :(得分:1)

我对它进行了一些调查,似乎从z得分计算p值并不容易。 This gives a formula,这似乎是一系列计算。你的公式看起来像是一个足够好的近似值,但它给出了比预期更大的价值,这很奇怪。如果有的话,它应该小于预期。

至于解决方案,我认为你最好只使用转换表,因为你正在处理标准分布和设定的显着性水平(或几个)。