Sha256: 6967ac65886923cf0d41e0e2c73aeb84fdf9b0bc9535f3f6eea70f18e106cca3

Contents?: true

Size: 1.47 KB

Versions: 7

Compression:

Stored size: 1.47 KB

Contents

module Statsample
  module Test
    # == Bartlett's test of Sphericity.
    # Test the hyphotesis that the sample correlation matrix
    # comes from a multivariate normal population where variables
    # are independent. In other words, the population correlation
    # matrix is the identity matrix.
    # == Reference
    # * Dziuban, C., & Shirkey E. (1974). When is a correlation matrix appropriate for factor analysis? Some decision rules. Psychological Bulletin, 81(6), 358-361.
    class BartlettSphericity
      include Statsample::Test
      include Summarizable
      attr_accessor :name
      attr_reader :ncases
      attr_reader :nvars
      attr_reader :value
      attr_reader :df
      # Args
      # * _matrix_: correlation matrix
      # * _ncases_: number of cases
      def initialize(matrix,ncases)
        @matrix=matrix
        @ncases=ncases
        @nvars=@matrix.row_size
        @name=_("Bartlett's test of sphericity")
        compute
      end
      # Uses SPSS formula.
      # On Dziuban & Shirkey, the minus between the first and second
      # statement is a *!!!
      # 
      def compute
        @value=-((@ncases-1)-(2*@nvars+5).quo(6))*Math::log(@matrix.determinant)
        @df=(@nvars*(@nvars-1)) / 2
      end
      def probability
        1-Distribution::ChiSquare.cdf(@value,@df)
      end
      def report_building(builder) # :nodoc:
        builder.text "%s : X(%d) = %0.4f , p = %0.4f" % [@name, @df, @value, probability]
      end
      
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
statsample-ekatena-2.0.2.1 lib/statsample-ekatena/test/bartlettsphericity.rb
statsample-ekatena-2.0.2 lib/statsample-ekatena/test/bartlettsphericity.rb
statsample-2.1.0 lib/statsample/test/bartlettsphericity.rb
statsample-2.0.2 lib/statsample/test/bartlettsphericity.rb
statsample-2.0.1 lib/statsample/test/bartlettsphericity.rb
statsample-2.0.0 lib/statsample/test/bartlettsphericity.rb
statsample-1.5.0 lib/statsample/test/bartlettsphericity.rb