statsample-bivariate-extension 0.13.4 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/History.txt +6 -0
- data/Manifest.txt +2 -0
- data/Rakefile +8 -5
- data/grab_references.rb +28 -0
- data/lib/statsample/bivariate/extension_version.rb +1 -1
- data/lib/statsample/bivariate/polychoric.rb +2 -2
- data/lib/statsample/bivariate/tetrachoric.rb +6 -6
- data/references.txt +5 -0
- data/spec/spec_helper.rb +1 -2
- data/spec/statsample/bivariate/polychoric_processor_spec.rb +2 -2
- data/spec/statsample/bivariate/polychoric_spec.rb +20 -17
- data/spec/statsample/bivariate/tetrachoric_spec.rb +10 -10
- metadata +19 -7
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 0.16.0 / 2010-11-14
|
2
|
+
* Bug fix: Specs work without gsl. Counts iterations when using only ruby
|
3
|
+
* Updated specs to rspec 2
|
4
|
+
* Updated Manifest.txt
|
5
|
+
* Added grab_references to retrieve references on package
|
6
|
+
|
1
7
|
=== 0.13.4 / 2010-08-18
|
2
8
|
|
3
9
|
* Added cache for tetrachoric correlation matrix
|
data/Manifest.txt
CHANGED
@@ -4,10 +4,12 @@ README.txt
|
|
4
4
|
Rakefile
|
5
5
|
data/tetmat_matrix.txt
|
6
6
|
data/tetmat_test.txt
|
7
|
+
grab_references.rb
|
7
8
|
lib/statsample/bivariate/extension_version.rb
|
8
9
|
lib/statsample/bivariate/polychoric.rb
|
9
10
|
lib/statsample/bivariate/polychoric/processor.rb
|
10
11
|
lib/statsample/bivariate/tetrachoric.rb
|
12
|
+
references.txt
|
11
13
|
spec/spec.opts
|
12
14
|
spec/spec_helper.rb
|
13
15
|
spec/statsample/bivariate/polychoric_processor_spec.rb
|
data/Rakefile
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
|
-
require '
|
5
|
+
require 'rspec'
|
6
|
+
require 'rspec/core/rake_task'
|
6
7
|
require 'hoe'
|
7
8
|
|
8
9
|
Hoe.plugin :git
|
@@ -19,10 +20,12 @@ end
|
|
19
20
|
|
20
21
|
|
21
22
|
desc "Run all spec with RCov"
|
22
|
-
|
23
|
-
t.
|
24
|
-
t.
|
25
|
-
t.
|
23
|
+
RSpec::Core::RakeTask.new do |t|
|
24
|
+
t.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"]
|
25
|
+
t.pattern = 'spec/**/*_spec.rb'
|
26
|
+
#t.rcov = true
|
27
|
+
#t.rcov_opts = ['--exclude', 'spec']
|
28
|
+
|
26
29
|
end
|
27
30
|
|
28
31
|
# vim: syntax=ruby
|
data/grab_references.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby1.9
|
2
|
+
require 'reportbuilder'
|
3
|
+
refs=[]
|
4
|
+
Dir.glob "**/*.rb" do |f|
|
5
|
+
reference=false
|
6
|
+
File.open(f).each_line do |l|
|
7
|
+
|
8
|
+
if l=~/== Reference/
|
9
|
+
reference=true
|
10
|
+
elsif reference
|
11
|
+
if l=~/\*\s+(.+)/
|
12
|
+
refs.push $1
|
13
|
+
else
|
14
|
+
reference=false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
rb=ReportBuilder.new(:name=>"References") do |g|
|
23
|
+
refs.uniq.sort.each do |r|
|
24
|
+
g.text "* #{r}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
rb.save_text("references.txt")
|
@@ -85,8 +85,7 @@ module Statsample
|
|
85
85
|
#
|
86
86
|
# See extensive documentation on Uebersax(2002) and Drasgow(2006)
|
87
87
|
#
|
88
|
-
# ==
|
89
|
-
#
|
88
|
+
# == Reference
|
90
89
|
# * Drasgow F. (2006). Polychoric and polyserial correlations. In Kotz L, Johnson NL (Eds.), Encyclopedia of statistical sciences. Vol. 7 (pp. 69-74). New York: Wiley.
|
91
90
|
# * Olsson, U. (1979) Maximum likelihood estimation of the polychoric correlation coefficient. Psychometrika 44, 443-460.
|
92
91
|
# * Uebersax, J.S. (2006). The tetrachoric and polychoric correlation coefficients. Statistical Methods for Rater Agreement web site. 2006. Available at: http://john-uebersax.com/stat/tetra.htm . Accessed February, 11, 2010
|
@@ -307,6 +306,7 @@ module Statsample
|
|
307
306
|
@log+=min.log.to_table.to_s
|
308
307
|
@r=min.x_minimum
|
309
308
|
@loglike_model=-min.f_minimum
|
309
|
+
@iteration=min.iterations
|
310
310
|
puts @log if @debug
|
311
311
|
|
312
312
|
end
|
@@ -61,17 +61,17 @@ module Statsample
|
|
61
61
|
# tc.threshold_y # threshold for y variable
|
62
62
|
# tc.threshold_x # threshold for x variable
|
63
63
|
#
|
64
|
-
# ==
|
65
|
-
#
|
64
|
+
# == Reference:
|
66
65
|
# * Brown, MB. (1977) Algorithm AS 116: the tetrachoric correlation and its standard error. <em>Applied Statistics, 26</em>, 343-351.
|
67
66
|
# * Drasgow F. (2006). Polychoric and polyserial correlations. In Kotz L, Johnson NL (Eds.), Encyclopedia of statistical sciences. Vol. 7 (pp. 69-74). New York: Wiley.
|
68
67
|
# * Uebersax, J.S. (2006). The tetrachoric and polychoric correlation coefficients. Statistical Methods for Rater Agreement web site. 2006. Available at: http://john-uebersax.com/stat/tetra.htm . Accessed February, 11, 2010
|
69
68
|
|
70
69
|
class Tetrachoric
|
70
|
+
RequerimentNotMeet=Class.new(Exception)
|
71
71
|
include Summarizable
|
72
72
|
attr_reader :r
|
73
73
|
attr_accessor :name
|
74
|
-
|
74
|
+
|
75
75
|
TWOPI=Math::PI*2
|
76
76
|
SQT2PI= 2.50662827
|
77
77
|
RLIMIT = 0.9999
|
@@ -94,8 +94,8 @@ module Statsample
|
|
94
94
|
v1a, v2a=Statsample.only_valid(v1,v2)
|
95
95
|
v1a=v1a.dichotomize
|
96
96
|
v2a=v2a.dichotomize
|
97
|
-
raise "v1 have only 0" if v1a.factors==[0]
|
98
|
-
raise "v2 have only 0" if v2a.factors==[0]
|
97
|
+
raise RequerimentNotMeet, "v1 have only 0" if v1a.factors==[0]
|
98
|
+
raise RequerimentNotMeet, "v2 have only 0" if v2a.factors==[0]
|
99
99
|
a,b,c,d = 0,0,0,0
|
100
100
|
v1a.each_index{|i|
|
101
101
|
x,y=v1a[i],v2a[i]
|
@@ -172,7 +172,7 @@ module Statsample
|
|
172
172
|
# kdelta=4 MEANS TABLE HAS 0.0 ROW OR COLUMN, RUN IS TERMINATED
|
173
173
|
#
|
174
174
|
|
175
|
-
raise "Rows and columns should have more than 0 items" if @kdelta==4
|
175
|
+
raise RequerimentNotMeet, "Rows and columns should have more than 0 items" if @kdelta==4
|
176
176
|
|
177
177
|
# GOTO (4, 1, 2 , 92), kdelta
|
178
178
|
#
|
data/references.txt
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
References
|
2
|
+
* Brown, MB. (1977) Algorithm AS 116: the tetrachoric correlation and its standard error. <em>Applied Statistics, 26</em>, 343-351.
|
3
|
+
* Drasgow F. (2006). Polychoric and polyserial correlations. In Kotz L, Johnson NL (Eds.), Encyclopedia of statistical sciences. Vol. 7 (pp. 69-74). New York: Wiley.
|
4
|
+
* Olsson, U. (1979) Maximum likelihood estimation of the polychoric correlation coefficient. Psychometrika 44, 443-460.
|
5
|
+
* Uebersax, J.S. (2006). The tetrachoric and polychoric correlation coefficients. Statistical Methods for Rater Agreement web site. 2006. Available at: http://john-uebersax.com/stat/tetra.htm . Accessed February, 11, 2010
|
data/spec/spec_helper.rb
CHANGED
@@ -22,12 +22,12 @@ describe Statsample::Bivariate::Polychoric::Processor do
|
|
22
22
|
end
|
23
23
|
it "fd a loglike should be equal usign eq.6 and eq.13" do
|
24
24
|
2.times {|k|
|
25
|
-
@processor.fd_loglike_a_eq6(k).should
|
25
|
+
@processor.fd_loglike_a_eq6(k).should be_within(1e-10).of( @processor.fd_loglike_a_eq13(k))
|
26
26
|
}
|
27
27
|
end
|
28
28
|
it "fd b loglike should be equal usign eq.6 and eq.14" do
|
29
29
|
2.times {|m|
|
30
|
-
@processor.fd_loglike_b_eq6(m).should
|
30
|
+
@processor.fd_loglike_b_eq6(m).should be_within(1e-10).of( @processor.fd_loglike_b_eq14(m))
|
31
31
|
}
|
32
32
|
end
|
33
33
|
it "fd rho should be equal usign fd_loglike_cell_rho and fd_loglike_rho" do
|
@@ -24,30 +24,33 @@ describe Statsample::Bivariate::Polychoric do
|
|
24
24
|
@poly.summary.size.should>0
|
25
25
|
end
|
26
26
|
def check_joint
|
27
|
-
@poly.r.should
|
28
|
-
@poly.threshold_x[0].should
|
29
|
-
@poly.threshold_x[1].should
|
27
|
+
@poly.r.should be_within( 0.0001).of(0.4192)
|
28
|
+
@poly.threshold_x[0].should be_within( 0.0001).of(-0.0297)
|
29
|
+
@poly.threshold_x[1].should be_within( 0.0001).of(1.1331)
|
30
30
|
|
31
|
-
@poly.threshold_y[0].should
|
32
|
-
@poly.threshold_y[1].should
|
33
|
-
@poly.chi_square.should
|
31
|
+
@poly.threshold_y[0].should be_within( 0.0001).of(-0.2421)
|
32
|
+
@poly.threshold_y[1].should be_within(0.0001).of(1.5938 )
|
33
|
+
@poly.chi_square.should be_within(0.01).of(11.54)
|
34
34
|
end
|
35
35
|
it "compute joint estimation (without derivative) using gsl" do
|
36
|
+
pending("requires rb-gsl") unless Statsample.has_gsl?
|
37
|
+
|
36
38
|
@poly.compute_one_step_mle_without_derivatives
|
37
39
|
check_joint
|
38
|
-
|
39
40
|
end
|
40
41
|
it "compute joint estimation (with derivative) using gsl" do
|
42
|
+
pending("requires rb-gsl") unless Statsample.has_gsl?
|
43
|
+
|
41
44
|
@poly.compute_one_step_mle_with_derivatives
|
42
45
|
check_joint
|
43
46
|
end
|
44
47
|
|
45
48
|
def check_two_step
|
46
|
-
@poly.r.should
|
47
|
-
@poly.threshold_y[0].should
|
48
|
-
@poly.threshold_x[0].should
|
49
|
-
@poly.threshold_y[1].should
|
50
|
-
@poly.threshold_x[1].should
|
49
|
+
@poly.r.should be_within( 0.001).of(0.420)
|
50
|
+
@poly.threshold_y[0].should be_within(0.001).of(-0.240 )
|
51
|
+
@poly.threshold_x[0].should be_within(0.001).of(-0.027 )
|
52
|
+
@poly.threshold_y[1].should be_within(0.001).of(1.578 )
|
53
|
+
@poly.threshold_x[1].should be_within(0.001).of(1.137 )
|
51
54
|
end
|
52
55
|
it "should compute two step mle with ruby" do
|
53
56
|
@poly.compute_two_step_mle_ruby
|
@@ -66,11 +69,11 @@ describe Statsample::Bivariate::Polychoric do
|
|
66
69
|
@poly.method=:polychoric_series
|
67
70
|
@poly.compute
|
68
71
|
|
69
|
-
@poly.r.should
|
70
|
-
@poly.threshold_y[0].should
|
71
|
-
@poly.threshold_x[0].should
|
72
|
-
@poly.threshold_y[1].should
|
73
|
-
@poly.threshold_x[1].should
|
72
|
+
@poly.r.should be_within( 0.001).of(0.556)
|
73
|
+
@poly.threshold_y[0].should be_within(0.001).of(-0.240 )
|
74
|
+
@poly.threshold_x[0].should be_within(0.001).of(-0.027 )
|
75
|
+
@poly.threshold_y[1].should be_within(0.001).of(1.578 )
|
76
|
+
@poly.threshold_x[1].should be_within(0.001).of(1.137 )
|
74
77
|
end
|
75
78
|
|
76
79
|
end
|
@@ -11,7 +11,7 @@ describe "Statsample::Bivariate tetrachoric extensions" do
|
|
11
11
|
tcm_exp=Statsample::PlainText.read(File.dirname(__FILE__)+"/../../../data/tetmat_matrix.txt", %w{a b c d e}).to_matrix
|
12
12
|
tcm_obs.row_size.times do |i|
|
13
13
|
tcm_obs.column_size do |j|
|
14
|
-
tcm_obs[i,j].should
|
14
|
+
tcm_obs[i,j].should be_within( 0.00001).of(tcm_exp[i,k])
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -27,12 +27,12 @@ describe Statsample::Bivariate::Tetrachoric do
|
|
27
27
|
end
|
28
28
|
it "should return similar values for two step ruby" do
|
29
29
|
@poly.compute_two_step_mle_ruby
|
30
|
-
@tetra.r.should
|
30
|
+
@tetra.r.should be_within(0.0001).of(@poly.r)
|
31
31
|
end
|
32
32
|
if Statsample.has_gsl?
|
33
33
|
it "should return similar values for two step using gsl" do
|
34
34
|
@poly.compute_two_step_mle_gsl
|
35
|
-
@tetra.r.should
|
35
|
+
@tetra.r.should be_within(0.0001).of(@poly.r)
|
36
36
|
end
|
37
37
|
else
|
38
38
|
it "shouldn't use two step gsl without rb-gsl"
|
@@ -43,17 +43,17 @@ describe Statsample::Bivariate::Tetrachoric do
|
|
43
43
|
it "should raise error on contingence table without cases" do
|
44
44
|
a,b,c,d=0,0,0,0
|
45
45
|
|
46
|
-
lambda {Statsample::Bivariate::Tetrachoric.new(a,b,c,d)}.should raise_error(
|
46
|
+
lambda {Statsample::Bivariate::Tetrachoric.new(a,b,c,d)}.should raise_error(Statsample::Bivariate::Tetrachoric::RequerimentNotMeet)
|
47
47
|
end
|
48
48
|
it "should raise error on contingence table without cases on a row" do
|
49
49
|
|
50
50
|
a,b,c,d=10,10,0,0
|
51
51
|
|
52
|
-
lambda {Statsample::Bivariate::Tetrachoric.new(a,b,c,d)}.should raise_error(
|
52
|
+
lambda {Statsample::Bivariate::Tetrachoric.new(a,b,c,d)}.should raise_error(Statsample::Bivariate::Tetrachoric::RequerimentNotMeet)
|
53
53
|
end
|
54
54
|
it "should raise error on contingence table without cases on a column" do
|
55
55
|
a,b,c,d=10,0,10,0
|
56
|
-
lambda {Statsample::Bivariate::Tetrachoric.new(a,b,c,d)}.should raise_error(
|
56
|
+
lambda {Statsample::Bivariate::Tetrachoric.new(a,b,c,d)}.should raise_error(Statsample::Bivariate::Tetrachoric::RequerimentNotMeet)
|
57
57
|
end
|
58
58
|
it "should return correct values for perfect correlation" do
|
59
59
|
a,b,c,d=10,0,0,10
|
@@ -71,10 +71,10 @@ describe Statsample::Bivariate::Tetrachoric do
|
|
71
71
|
it "should return correct value for standard contingence table" do
|
72
72
|
a,b,c,d = 30,40,70,20
|
73
73
|
tc = Statsample::Bivariate::Tetrachoric.new(a,b,c,d)
|
74
|
-
tc.r.should
|
75
|
-
tc.se.should
|
76
|
-
tc.threshold_x.should
|
77
|
-
tc.threshold_y.should
|
74
|
+
tc.r.should be_within(0.0001).of(-0.53980)
|
75
|
+
tc.se.should be_within(0.0001).of(0.09940)
|
76
|
+
tc.threshold_x.should be_within( 0.0001).of(-0.15731)
|
77
|
+
tc.threshold_y.should be_within( 0.0001).of( 0.31864)
|
78
78
|
end
|
79
79
|
it "should return equal values for dataset and crosstab inputs" do
|
80
80
|
x=%w{a a a a b b b a b b a a b b}.to_vector
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: statsample-bivariate-extension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 95
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
8
|
+
- 16
|
9
|
+
- 0
|
10
|
+
version: 0.16.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Claudio Bustos
|
@@ -35,16 +36,18 @@ cert_chain:
|
|
35
36
|
rpP0jjs0
|
36
37
|
-----END CERTIFICATE-----
|
37
38
|
|
38
|
-
date: 2010-
|
39
|
+
date: 2010-11-14 00:00:00 -03:00
|
39
40
|
default_executable:
|
40
41
|
dependencies:
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
43
|
name: rubyforge
|
43
44
|
prerelease: false
|
44
45
|
requirement: &id001 !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
45
47
|
requirements:
|
46
48
|
- - ">="
|
47
49
|
- !ruby/object:Gem::Version
|
50
|
+
hash: 7
|
48
51
|
segments:
|
49
52
|
- 2
|
50
53
|
- 0
|
@@ -56,14 +59,16 @@ dependencies:
|
|
56
59
|
name: hoe
|
57
60
|
prerelease: false
|
58
61
|
requirement: &id002 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
59
63
|
requirements:
|
60
64
|
- - ">="
|
61
65
|
- !ruby/object:Gem::Version
|
66
|
+
hash: 19
|
62
67
|
segments:
|
63
68
|
- 2
|
64
69
|
- 6
|
65
|
-
-
|
66
|
-
version: 2.6.
|
70
|
+
- 2
|
71
|
+
version: 2.6.2
|
67
72
|
type: :development
|
68
73
|
version_requirements: *id002
|
69
74
|
description: |-
|
@@ -80,6 +85,7 @@ extra_rdoc_files:
|
|
80
85
|
- History.txt
|
81
86
|
- Manifest.txt
|
82
87
|
- README.txt
|
88
|
+
- references.txt
|
83
89
|
files:
|
84
90
|
- History.txt
|
85
91
|
- Manifest.txt
|
@@ -87,10 +93,12 @@ files:
|
|
87
93
|
- Rakefile
|
88
94
|
- data/tetmat_matrix.txt
|
89
95
|
- data/tetmat_test.txt
|
96
|
+
- grab_references.rb
|
90
97
|
- lib/statsample/bivariate/extension_version.rb
|
91
98
|
- lib/statsample/bivariate/polychoric.rb
|
92
99
|
- lib/statsample/bivariate/polychoric/processor.rb
|
93
100
|
- lib/statsample/bivariate/tetrachoric.rb
|
101
|
+
- references.txt
|
94
102
|
- spec/spec.opts
|
95
103
|
- spec/spec_helper.rb
|
96
104
|
- spec/statsample/bivariate/polychoric_processor_spec.rb
|
@@ -107,23 +115,27 @@ rdoc_options:
|
|
107
115
|
require_paths:
|
108
116
|
- lib
|
109
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
110
119
|
requirements:
|
111
120
|
- - ">="
|
112
121
|
- !ruby/object:Gem::Version
|
122
|
+
hash: 3
|
113
123
|
segments:
|
114
124
|
- 0
|
115
125
|
version: "0"
|
116
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
117
128
|
requirements:
|
118
129
|
- - ">="
|
119
130
|
- !ruby/object:Gem::Version
|
131
|
+
hash: 3
|
120
132
|
segments:
|
121
133
|
- 0
|
122
134
|
version: "0"
|
123
135
|
requirements: []
|
124
136
|
|
125
137
|
rubyforge_project: ruby-statsample
|
126
|
-
rubygems_version: 1.3.
|
138
|
+
rubygems_version: 1.3.7
|
127
139
|
signing_key:
|
128
140
|
specification_version: 3
|
129
141
|
summary: "Provides advanced bivariate statistics: * Tetrachoric correlation * Polychoric correlation"
|
metadata.gz.sig
CHANGED
Binary file
|