Polychoric correlation in statsample requires installation of the statsample-bivariate-extension gem. This gem extends the Statsample::Bivariate class with useful algorithms for polychoric and tetrachoric correlation.
Statsample will automatically detect presence of polychoric/tetrachoric algorithms so there is no need to explicitly require the gem.
In this example we'll see how polychoric correlation can be performed using statsample.
require 'statsample'
Statsample::Analysis.store(Statsample::Bivariate::Polychoric) do
ct=Matrix[[rand(10)+50, rand(10)+50, rand(10)+1],
[rand(20)+5, rand(50)+4, rand(10)+1],
[rand(8)+1, rand(12)+1, rand(10)+1]]
# Estimation of polychoric correlation using two-step (default)
poly=polychoric(ct, :name=>"Polychoric with two-step", :debug=>false)
summary poly
# Estimation of polychoric correlation using joint method (slow)
poly=polychoric(ct, :method=>:joint, :name=>"Polychoric with joint")
summary poly
# Uses polychoric series (not recomended)
poly=polychoric(ct, :method=>:polychoric_series, :name=>"Polychoric with polychoric series")
summary poly
end
Statsample::Analysis.run_batch
Analysis 2015-06-04 12:48:32 +0530 = Statsample::Bivariate::Polychoric == Polychoric with two-step Contingence Table +-------+-----+-----+-----+-------+ | | Y=0 | Y=1 | Y=2 | Total | +-------+-----+-----+-----+-------+ | X = 0 | 52 | 58 | 8 | 118 | | X = 1 | 18 | 15 | 7 | 40 | | X = 2 | 5 | 11 | 3 | 19 | +-------+-----+-----+-----+-------+ | T | 75 | 84 | 18 | 177 | +-------+-----+-----+-----+-------+ r: 0.1683 Thresholds +---------------+---------+ | | Value | +---------------+---------+ | Threshold X 0 | 0.4307 | | Threshold X 1 | 1.2408 | | Threshold Y 0 | -0.1924 | | Threshold Y 1 | 1.2720 | +---------------+---------+ Iterations: 10 Test of bivariate normality: X^2 = 3.941, df = 3, p= 0.26795 == Polychoric with joint Contingence Table +-------+-----+-----+-----+-------+ | | Y=0 | Y=1 | Y=2 | Total | +-------+-----+-----+-----+-------+ | X = 0 | 52 | 58 | 8 | 118 | | X = 1 | 18 | 15 | 7 | 40 | | X = 2 | 5 | 11 | 3 | 19 | +-------+-----+-----+-----+-------+ | T | 75 | 84 | 18 | 177 | +-------+-----+-----+-----+-------+ r: 0.1682 Thresholds +---------------+---------+ | | Value | +---------------+---------+ | Threshold X 0 | 0.4296 | | Threshold X 1 | 1.2411 | | Threshold Y 0 | -0.1936 | | Threshold Y 1 | 1.2731 | +---------------+---------+ Iterations: 1 Test of bivariate normality: X^2 = 3.940, df = 3, p= 0.26801 == Polychoric with polychoric series Contingence Table +-------+------+------+------+-------+ | | Y=0 | Y=1 | Y=2 | Total | +-------+------+------+------+-------+ | X = 0 | 52 | 58 | 8 | 118.0 | | X = 1 | 18 | 15 | 7 | 40.0 | | X = 2 | 5 | 11 | 3 | 19.0 | +-------+------+------+------+-------+ | T | 75.0 | 84.0 | 18.0 | 177.0 | +-------+------+------+------+-------+ r: 0.1701 Thresholds +---------------+---------+ | | Value | +---------------+---------+ | Threshold X 0 | 0.4307 | | Threshold X 1 | 1.2408 | | Threshold Y 0 | -0.1924 | | Threshold Y 1 | 1.2720 | +---------------+---------+ Test of bivariate normality: X^2 = 3.941, df = 3, p= 0.26791