scipy.stats.chi2返回Nan概率

时间:2019-10-25 09:22:53

标签: python scipy probability chi-squared

我需要计算期望遵循泊松分布的数据集的Chi ^ 2概率。我有观察到的频率和理论频率。我的自由度是7。

import java.util.*;

abstract class Shape
{
    int area;
    abstract void area();
}

class Square extends Shape
{   
    int len;
    void area()
    {
        Scanner s = new Scanner(System.in);
        System.out.print("Enter the lenght of the square: ");
        len=s.nextInt();
    }

    public void displayarea()
    {
        Square q= new Square();
        q.area();
        System.out.println("The area of the square is: "+(len*len));
    }
}

class Rectangle extends Shape
{
    int l,b;
    public void area()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the lenght of the rectangle: ");
        l=sc.nextInt();
        System.out.println("Enter the breadth of the rectangle: ");
        b=sc.nextInt();
    }

    public void displayarea()
    {
        Rectangle r = new Rectangle();
        r.area();
        System.out.println("The area of the rectangle is: "+(l*b));
    }
} 

public class Postlab
{
    public static void main(String[] args)
    {
        Rectangle rectangle = new Rectangle();
        Square square = new Square();
        rectangle.displayarea();
        square.displayarea();
    }
}

不幸的是,这返回了Chi ^ 2的正确值,但没有相关的概率。

 realFreq = [ 2.  3.  9.  8.  6.  2.  2.  1.]

 expectedFreq = [ 1.69352235  5.0292482   7.46767156  7.39224054  
 5.48817858 3.25964546 1.61335987  0.6844557 ]

 dof = 7

 chi_statistic, p_value = scipy.stats.chisquare(realFreq,expectedFreq,dof)

它应该给我返回pvalue = 0.959218的值。

如果我离开自由度参数,它将返回一些值。

最多6个自由度,它会返回一个p值。

我要去哪里错了?我是否对这个问题了解得太迟?或者它是 statistic=2.0112702570397993, pvalue=nan 函数的某种用法?

谢谢,

戈登

1 个答案:

答案 0 :(得分:0)

我的错误。 vue-select2

的文档

scipy.stats.chisquare(f_obs = , f_exp= , ddof = )代表自由度增量。由于该功能自动假定自由度为N-1。