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