statsample 0.18.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +23 -0
- data/Manifest.txt +28 -17
- data/Rakefile +3 -2
- data/benchmarks/correlation_matrix_15_variables.rb +31 -0
- data/benchmarks/correlation_matrix_5_variables.rb +32 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.ds +0 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.html +93 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.rb +75 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.xls +0 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix_gsl_ruby.ods +0 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix_with_graphics.ods +0 -0
- data/benchmarks/correlation_matrix_methods/results.ds +0 -0
- data/benchmarks/factor_map.rb +37 -0
- data/benchmarks/helpers_benchmark.rb +5 -0
- data/examples/boxplot.rb +13 -14
- data/examples/correlation_matrix.rb +16 -8
- data/examples/dataset.rb +13 -4
- data/examples/dominance_analysis.rb +23 -17
- data/examples/dominance_analysis_bootstrap.rb +28 -22
- data/examples/histogram.rb +8 -9
- data/examples/icc.rb +20 -21
- data/examples/levene.rb +10 -4
- data/examples/multiple_regression.rb +9 -28
- data/examples/multivariate_correlation.rb +9 -3
- data/examples/parallel_analysis.rb +20 -16
- data/examples/polychoric.rb +15 -9
- data/examples/principal_axis.rb +18 -6
- data/examples/reliability.rb +26 -13
- data/examples/scatterplot.rb +10 -6
- data/examples/t_test.rb +15 -6
- data/examples/tetrachoric.rb +9 -2
- data/examples/u_test.rb +12 -4
- data/examples/vector.rb +13 -2
- data/examples/velicer_map_test.rb +33 -26
- data/lib/statsample.rb +32 -12
- data/lib/statsample/analysis.rb +79 -0
- data/lib/statsample/analysis/suite.rb +72 -0
- data/lib/statsample/analysis/suitereportbuilder.rb +38 -0
- data/lib/statsample/bivariate.rb +70 -16
- data/lib/statsample/dataset.rb +25 -19
- data/lib/statsample/dominanceanalysis.rb +2 -2
- data/lib/statsample/factor.rb +2 -0
- data/lib/statsample/factor/map.rb +16 -10
- data/lib/statsample/factor/parallelanalysis.rb +9 -3
- data/lib/statsample/factor/pca.rb +28 -32
- data/lib/statsample/factor/rotation.rb +15 -8
- data/lib/statsample/graph/boxplot.rb +3 -4
- data/lib/statsample/graph/histogram.rb +2 -1
- data/lib/statsample/graph/scatterplot.rb +1 -0
- data/lib/statsample/matrix.rb +106 -16
- data/lib/statsample/regression.rb +4 -1
- data/lib/statsample/regression/binomial.rb +1 -1
- data/lib/statsample/regression/multiple/baseengine.rb +19 -9
- data/lib/statsample/regression/multiple/gslengine.rb +127 -126
- data/lib/statsample/regression/multiple/matrixengine.rb +8 -5
- data/lib/statsample/regression/multiple/rubyengine.rb +1 -1
- data/lib/statsample/regression/simple.rb +31 -6
- data/lib/statsample/reliability.rb +11 -3
- data/lib/statsample/reliability/scaleanalysis.rb +4 -4
- data/lib/statsample/shorthand.rb +81 -0
- data/lib/statsample/test/chisquare.rb +1 -1
- data/lib/statsample/vector.rb +163 -163
- data/lib/statsample/vector/gsl.rb +106 -0
- data/references.txt +2 -2
- data/{data → test/fixtures}/crime.txt +0 -0
- data/{data → test/fixtures}/hartman_23.matrix +0 -0
- data/{data → test/fixtures}/repeated_fields.csv +0 -0
- data/{data → test/fixtures}/test_binomial.csv +0 -0
- data/test/{test_csv.csv → fixtures/test_csv.csv} +0 -0
- data/test/{test_xls.xls → fixtures/test_xls.xls} +0 -0
- data/{data → test/fixtures}/tetmat_matrix.txt +0 -0
- data/{data → test/fixtures}/tetmat_test.txt +0 -0
- data/test/helpers_tests.rb +18 -2
- data/test/test_analysis.rb +118 -0
- data/test/test_anovatwoway.rb +1 -1
- data/test/test_anovatwowaywithdataset.rb +1 -1
- data/test/test_anovawithvectors.rb +1 -2
- data/test/test_bartlettsphericity.rb +1 -2
- data/test/test_bivariate.rb +64 -22
- data/test/test_codification.rb +1 -2
- data/test/test_crosstab.rb +1 -2
- data/test/test_csv.rb +3 -4
- data/test/test_dataset.rb +24 -3
- data/test/test_dominance_analysis.rb +1 -2
- data/test/test_factor.rb +8 -69
- data/test/test_factor_map.rb +43 -0
- data/test/test_factor_pa.rb +54 -0
- data/test/test_ggobi.rb +1 -1
- data/test/test_gsl.rb +12 -18
- data/test/test_histogram.rb +1 -2
- data/test/test_logit.rb +62 -18
- data/test/test_matrix.rb +4 -5
- data/test/test_mle.rb +3 -4
- data/test/test_regression.rb +21 -2
- data/test/test_reliability.rb +3 -3
- data/test/test_reliability_icc.rb +1 -1
- data/test/test_reliability_skillscale.rb +20 -4
- data/test/test_resample.rb +1 -2
- data/test/test_rserve_extension.rb +1 -2
- data/test/test_srs.rb +1 -2
- data/test/test_statistics.rb +1 -2
- data/test/test_stest.rb +1 -2
- data/test/test_stratified.rb +1 -2
- data/test/test_test_f.rb +1 -2
- data/test/test_test_t.rb +1 -2
- data/test/test_umannwhitney.rb +1 -2
- data/test/test_vector.rb +117 -18
- data/test/test_xls.rb +2 -3
- data/web/Rakefile +39 -0
- metadata +109 -29
- metadata.gz.sig +0 -0
- data/examples/parallel_analysis_tetrachoric.rb +0 -31
- data/lib/distribution.rb +0 -25
- data/lib/distribution/chisquare.rb +0 -23
- data/lib/distribution/f.rb +0 -35
- data/lib/distribution/normal.rb +0 -60
- data/lib/distribution/normalbivariate.rb +0 -284
- data/lib/distribution/normalmultivariate.rb +0 -73
- data/lib/distribution/t.rb +0 -55
- data/test/test_distribution.rb +0 -73
@@ -1,11 +1,19 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
|
-
require 'benchmark'
|
4
3
|
require 'statsample'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
|
5
|
+
Statsample::Analysis.store("Statsample::Bivariate.correlation_matrix") do
|
6
|
+
samples=1000
|
7
|
+
ds=data_frame(
|
8
|
+
'a'=>rnorm(samples),
|
9
|
+
'b'=>rnorm(samples),
|
10
|
+
'c'=>rnorm(samples),
|
11
|
+
'd'=>rnorm(samples))
|
12
|
+
cm=cor(ds)
|
13
|
+
summary(cm)
|
14
|
+
end
|
15
|
+
|
16
|
+
if __FILE__==$0
|
17
|
+
Statsample::Analysis.run_batch
|
18
|
+
end
|
19
|
+
|
data/examples/dataset.rb
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
require 'statsample'
|
4
|
-
a=1000.times.collect {r=rand(5); r==4 ? nil: r;}.to_scale
|
5
|
-
b=1000.times.collect {r=rand(5); r==4 ? nil: r;}.to_scale
|
6
4
|
|
7
|
-
|
8
|
-
|
5
|
+
Statsample::Analysis.store(Statsample::Dataset) do
|
6
|
+
samples=1000
|
7
|
+
a=Statsample::Vector.new_scale(samples) {r=rand(5); r==4 ? nil: r}
|
8
|
+
b=Statsample::Vector.new_scale(samples) {r=rand(5); r==4 ? nil: r}
|
9
|
+
|
10
|
+
ds={'a'=>a,'b'=>b}.to_dataset
|
11
|
+
summary(ds)
|
12
|
+
end
|
13
|
+
|
14
|
+
if __FILE__==$0
|
15
|
+
Statsample::Analysis.run_batch
|
16
|
+
end
|
17
|
+
|
@@ -2,25 +2,31 @@
|
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
|
4
4
|
require 'statsample'
|
5
|
-
sample=200
|
6
|
-
a=sample.times.collect {rand}.to_scale
|
7
|
-
b=sample.times.collect {rand}.to_scale
|
8
|
-
c=sample.times.collect {rand}.to_scale
|
9
|
-
d=sample.times.collect {rand}.to_scale
|
10
5
|
|
11
|
-
ds={'a'=>a,'b'=>b,'c'=>c,'d'=>d}.to_dataset
|
12
|
-
ds['y']=ds.collect{|row| row['a']*5 + row['b']*3 + row['c']*2 + row['d'] + rand()}
|
13
|
-
rb=ReportBuilder.new(:name=>"Dominance Analysis")
|
14
6
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
7
|
+
Statsample::Analysis.store(Statsample::DominanceAnalysis) do
|
8
|
+
sample=300
|
9
|
+
a=rnorm(sample)
|
10
|
+
b=rnorm(sample)
|
11
|
+
c=rnorm(sample)
|
12
|
+
d=rnorm(sample)
|
13
|
+
|
14
|
+
ds={'a'=>a,'b'=>b,'cc'=>c,'d'=>d}.to_dataset
|
15
|
+
attach(ds)
|
16
|
+
ds['y']=a*5+b*3+cc*2+d+rnorm(300)
|
17
|
+
cm=cor(ds)
|
18
|
+
summary(cm)
|
19
|
+
lr=lr(ds,'y')
|
20
|
+
summary(lr)
|
21
|
+
da=dominance_analysis(ds,'y')
|
22
|
+
summary(da)
|
23
|
+
|
24
|
+
da=dominance_analysis(ds,'y',:name=>"Dominance Analysis using group of predictors", :predictors=>['a', 'b', %w{cc d}])
|
25
|
+
summary(da)
|
26
|
+
end
|
19
27
|
|
20
|
-
#da=Statsample::DominanceAnalysis.new(ds,'y')
|
21
|
-
#rb.add(da)
|
22
28
|
|
23
|
-
|
24
|
-
|
29
|
+
if __FILE__==$0
|
30
|
+
Statsample::Analysis.run_batch
|
31
|
+
end
|
25
32
|
|
26
|
-
puts rb.to_text
|
@@ -2,26 +2,32 @@
|
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
require 'statsample'
|
4
4
|
|
5
|
+
Statsample::Analysis.store(Statsample::DominanceAnalysis::Bootstrap) do
|
6
|
+
|
7
|
+
sample=300
|
8
|
+
a=rnorm(sample)
|
9
|
+
b=rnorm(sample)
|
10
|
+
c=rnorm(sample)
|
11
|
+
d=rnorm(sample)
|
12
|
+
a.name="a"
|
13
|
+
b.name="b"
|
14
|
+
c.name="c"
|
15
|
+
d.name="d"
|
16
|
+
|
17
|
+
ds={'a'=>a,'b'=>b,'cc'=>c,'d'=>d}.to_dataset
|
18
|
+
attach(ds)
|
19
|
+
ds['y1']=a*5+b*2+cc*2+d*2+rnorm(sample,0,10)
|
20
|
+
ds['y2']=a*10+rnorm(sample)
|
21
|
+
|
22
|
+
dab=dominance_analysis_bootstrap(ds, ['y1','y2'], :debug=>true)
|
23
|
+
dab.bootstrap(100,nil)
|
24
|
+
summary(dab)
|
25
|
+
ds2=ds['a'..'y1']
|
26
|
+
dab2=dominance_analysis_bootstrap(ds2, 'y1', :debug=>true)
|
27
|
+
dab2.bootstrap(100,nil)
|
28
|
+
summary(dab2)
|
29
|
+
end
|
5
30
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
d=100.times.collect {rand}.to_scale
|
10
|
-
|
11
|
-
a.name="a"
|
12
|
-
b.name="b"
|
13
|
-
c.name="c"
|
14
|
-
d.name="d"
|
15
|
-
|
16
|
-
ds={'a'=>a,'b'=>b,'c'=>c,'d'=>d}.to_dataset
|
17
|
-
|
18
|
-
ds['y1']=ds.collect{|row| row['a']*5+row['b']*2+row['c']*2+row['d']*2+10*rand()}
|
19
|
-
ds['y2']=ds.collect{|row| row['a']*10+rand()}
|
20
|
-
|
21
|
-
dab=Statsample::DominanceAnalysis::Bootstrap.new(ds, ['y1','y2'], :debug=>true)
|
22
|
-
dab.bootstrap(100,nil)
|
23
|
-
puts dab.summary
|
24
|
-
ds2=ds['a'..'y1']
|
25
|
-
dab=Statsample::DominanceAnalysis::Bootstrap.new(ds2, 'y1', :debug=>true)
|
26
|
-
dab.bootstrap(100,nil)
|
27
|
-
puts dab.summary
|
31
|
+
if __FILE__==$0
|
32
|
+
Statsample::Analysis.run_batch
|
33
|
+
end
|
data/examples/histogram.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
|
-
$:.unshift('/home/cdx/dev/reportbuilder/lib/')
|
4
3
|
require 'statsample'
|
5
|
-
n=3000
|
6
|
-
rng=Distribution::Normal.rng_ugaussian
|
7
|
-
a=n.times.map {|i| rng.call()*20}.to_scale
|
8
|
-
hg=Statsample::Graph::Histogram.new(a, :bins=>20, :line_normal_distribution=>true )
|
9
4
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
Statsample::Analysis.store(Statsample::Graph::Histogram) do
|
6
|
+
histogram(rnorm(3000,0,20))
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
if __FILE__==$0
|
11
|
+
Statsample::Analysis.run
|
12
|
+
end
|
data/examples/icc.rb
CHANGED
@@ -2,25 +2,24 @@
|
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
|
4
4
|
require 'statsample'
|
5
|
-
size=1000
|
6
|
-
a=size.times.map {rand(10)}.to_scale
|
7
|
-
b=a.recode{|i|i+rand(4)-2}
|
8
|
-
c=a.recode{|i|i+rand(4)-2}
|
9
|
-
d=a.recode{|i|i+rand(4)-2}
|
10
|
-
@ds={'a'=>a,'b'=>b,'c'=>c,'d'=>d}.to_dataset
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@icc=Statsample::Reliability::ICC.new(@ds)
|
15
|
-
|
16
|
-
puts @icc.summary
|
17
|
-
|
18
|
-
@icc.type=:icc_3_1
|
19
|
-
|
20
|
-
puts @icc.summary
|
21
|
-
|
22
|
-
|
23
|
-
@icc.type=:icc_a_k
|
24
|
-
|
25
|
-
puts @icc.summary
|
26
5
|
|
6
|
+
Statsample::Analysis.store(Statsample::Reliability::ICC) do
|
7
|
+
|
8
|
+
size=1000
|
9
|
+
a=Statsample::Vector.new_scale(size) {rand(10)}
|
10
|
+
b=a.recode{|i|i+rand(4)-2}
|
11
|
+
c=a.recode{|i|i+rand(4)-2}
|
12
|
+
d=a.recode{|i|i+rand(4)-2}
|
13
|
+
@ds={'a'=>a,'b'=>b,'c'=>c,'d'=>d}.to_dataset
|
14
|
+
@icc=Statsample::Reliability::ICC.new(@ds)
|
15
|
+
summary(@icc)
|
16
|
+
@icc.type=:icc_3_1
|
17
|
+
summary(@icc)
|
18
|
+
@icc.type=:icc_a_k
|
19
|
+
summary(@icc)
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
if __FILE__==$0
|
24
|
+
Statsample::Analysis.run_batch
|
25
|
+
end
|
data/examples/levene.rb
CHANGED
@@ -2,8 +2,14 @@
|
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
|
4
4
|
require 'statsample'
|
5
|
-
a=[1,2,3,4,5,6,7,8,100,10].to_scale
|
6
|
-
b=[30,40,50,60,70,80,90,100,110,120].to_scale
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
Statsample::Analysis.store(Statsample::Test::Levene) do
|
7
|
+
|
8
|
+
a=[1,2,3,4,5,6,7,8,100,10].to_scale
|
9
|
+
b=[30,40,50,60,70,80,90,100,110,120].to_scale
|
10
|
+
summary(levene([a,b]))
|
11
|
+
end
|
12
|
+
|
13
|
+
if __FILE__==$0
|
14
|
+
Statsample::Analysis.run_batch
|
15
|
+
end
|
@@ -1,36 +1,17 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
|
-
|
2
|
+
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
|
4
4
|
require 'statsample'
|
5
|
-
require 'benchmark'
|
6
|
-
samples=1000
|
7
|
-
a=samples.times.collect {rand}.to_scale
|
8
|
-
b=samples.times.collect {rand}.to_scale
|
9
|
-
c=samples.times.collect {rand}.to_scale
|
10
|
-
d=samples.times.collect {rand}.to_scale
|
11
5
|
|
12
|
-
|
13
|
-
ds['y']=ds.collect{|row| row['a']*5+row['b']*3+row['c']*2+row['d']*1+rand()}
|
6
|
+
Statsample::Analysis.store(Statsample::Regression::Multiple) do
|
14
7
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
if Statsample.has_gsl?
|
21
|
-
x.report("GSL:") {
|
22
|
-
lr=Statsample::Regression::Multiple::GslEngine.new(ds,'y',:name=>"Multiple Regression using GSL")
|
23
|
-
rb.add(lr.summary)
|
24
|
-
}
|
8
|
+
samples=2000
|
9
|
+
ds=dataset('a'=>rnorm(samples),'b'=>rnorm(samples),'cc'=>rnorm(samples),'d'=>rnorm(samples))
|
10
|
+
attach(ds)
|
11
|
+
ds['y']=a*5+b*3+cc*2+d+rnorm(samples)
|
12
|
+
summary lr(ds,'y')
|
25
13
|
end
|
26
14
|
|
27
|
-
|
28
|
-
|
29
|
-
lr=Statsample::Regression::Multiple::RubyEngine.new(ds,'y',:name=>"Multiple Regression using RubyEngine")
|
30
|
-
rb.add(lr.summary)
|
31
|
-
}
|
32
|
-
puts rb.to_text
|
15
|
+
if __FILE__==$0
|
16
|
+
Statsample::Analysis.run_batch
|
33
17
|
end
|
34
|
-
|
35
|
-
|
36
|
-
|
@@ -5,7 +5,8 @@ require 'statsample'
|
|
5
5
|
require 'mathn'
|
6
6
|
|
7
7
|
|
8
|
-
|
8
|
+
Statsample::Analysis.store(Statsample::Regression::Multiple::MultipleDependent) do
|
9
|
+
|
9
10
|
complete=Matrix[
|
10
11
|
[1,0.53,0.62,0.19,-0.09,0.08,0.02,-0.12,0.08],
|
11
12
|
[0.53,1,0.61,0.23,0.1,0.18,0.02,-0.1,0.15],
|
@@ -22,6 +23,11 @@ require 'mathn'
|
|
22
23
|
|
23
24
|
lr=Statsample::Regression::Multiple::MultipleDependent.new(complete, %w{adhd cd odd})
|
24
25
|
|
25
|
-
|
26
|
-
|
26
|
+
echo "R^2_yx #{lr.r2yx}"
|
27
|
+
echo "P^2_yx #{lr.p2yx}"
|
28
|
+
end
|
29
|
+
|
27
30
|
|
31
|
+
if __FILE__==$0
|
32
|
+
Statsample::Analysis.run_batch
|
33
|
+
end
|
@@ -2,30 +2,34 @@
|
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
|
4
4
|
require 'statsample'
|
5
|
-
samples=
|
5
|
+
samples=150
|
6
6
|
variables=30
|
7
7
|
iterations=50
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
Statsample::Analysis.store(Statsample::Factor::ParallelAnalysis) do
|
9
|
+
|
10
|
+
rng = Distribution::Normal.rng()
|
11
|
+
f1=rnorm(samples)
|
12
|
+
f2=rnorm(samples)
|
13
|
+
f3=rnorm(samples)
|
12
14
|
|
13
15
|
vectors={}
|
14
16
|
|
15
17
|
variables.times do |i|
|
16
|
-
vectors["v#{i}"]=samples.times.collect {|nv| f1[nv]*i+(f2[nv]*(15-i))+((f3[nv]*(30-i))*1.5)*rng.
|
18
|
+
vectors["v#{i}"]=samples.times.collect {|nv| f1[nv]*i+(f2[nv]*(15-i))+((f3[nv]*(30-i))*1.5)*rng.call}.to_scale
|
17
19
|
vectors["v#{i}"].name="Vector #{i}"
|
18
20
|
end
|
19
|
-
ds=vectors.to_dataset
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
ds=vectors.to_dataset
|
23
|
+
|
24
|
+
pa=Statsample::Factor::ParallelAnalysis.new(ds, :iterations=>iterations, :debug=>true)
|
25
|
+
pca=pca(cor(ds))
|
26
|
+
echo "There are 3 real factors on data"
|
27
|
+
summary pca
|
28
|
+
echo "Traditional Kaiser criterion (k>1) returns #{pca.m} factors"
|
29
|
+
summary pa
|
30
|
+
echo "Parallel Analysis returns #{pa.number_of_factors} factors to preserve"
|
29
31
|
end
|
30
32
|
|
31
|
-
|
33
|
+
if __FILE__==$0
|
34
|
+
Statsample::Analysis.run_batch
|
35
|
+
end
|
data/examples/polychoric.rb
CHANGED
@@ -1,21 +1,27 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
|
+
$:.unshift("/home/cdx/usr/lib/statsample-bivariate-extension/lib/")
|
3
4
|
|
4
5
|
require 'statsample'
|
5
|
-
|
6
|
+
Statsample::Analysis.store(Statsample::Bivariate::Polychoric) do
|
7
|
+
ct=Matrix[[rand(10)+50, rand(10)+50, rand(10)+1],
|
8
|
+
[rand(20)+5, rand(50)+4, rand(10)+1],
|
9
|
+
[rand(8)+1, rand(12)+1, rand(10)+1]]
|
6
10
|
|
7
11
|
# Estimation of polychoric correlation using two-step (default)
|
8
|
-
poly=
|
9
|
-
|
10
|
-
puts poly.summary
|
12
|
+
poly=polychoric(ct, :name=>"Polychoric with two-step", :debug=>false)
|
13
|
+
summary poly
|
11
14
|
|
12
15
|
# Estimation of polychoric correlation using joint method (slow)
|
13
|
-
poly=
|
14
|
-
|
15
|
-
|
16
|
+
poly=polychoric(ct, :method=>:joint, :name=>"Polychoric with joint")
|
17
|
+
summary poly
|
16
18
|
|
17
19
|
# Uses polychoric series (not recomended)
|
18
20
|
|
19
|
-
poly=
|
20
|
-
|
21
|
+
poly=polychoric(ct, :method=>:polychoric_series, :name=>"Polychoric with polychoric series")
|
22
|
+
summary poly
|
23
|
+
end
|
24
|
+
if __FILE__==$0
|
25
|
+
Statsample::Analysis.run_batch
|
26
|
+
end
|
21
27
|
|
data/examples/principal_axis.rb
CHANGED
@@ -2,9 +2,21 @@
|
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib/')
|
3
3
|
|
4
4
|
require 'statsample'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
|
6
|
+
Statsample::Analysis.store(Statsample::Factor::PrincipalAxis) do
|
7
|
+
|
8
|
+
matrix=Matrix[
|
9
|
+
[1.0, 0.709501601093587, 0.877596585880047, 0.272219316266807], [0.709501601093587, 1.0, 0.291633797330304, 0.871141831433844], [0.877596585880047, 0.291633797330304, 1.0, -0.213373722977167], [0.272219316266807, 0.871141831433844, -0.213373722977167, 1.0]]
|
10
|
+
|
11
|
+
matrix.extend Statsample::CovariateMatrix
|
12
|
+
|
13
|
+
#matrix.fields=%w{a b c d}
|
14
|
+
fa=principal_axis(matrix,:m=>1,:smc=>false)
|
15
|
+
|
16
|
+
summary fa
|
17
|
+
end
|
18
|
+
|
19
|
+
if __FILE__==$0
|
20
|
+
Statsample::Analysis.run_batch
|
21
|
+
end
|
22
|
+
|
data/examples/reliability.rb
CHANGED
@@ -1,20 +1,33 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
$:.unshift(File.dirname(__FILE__)+'/../lib')
|
3
3
|
require 'statsample'
|
4
|
-
samples=100
|
5
|
-
a=samples.times.map {rand(100)}.to_scale
|
6
|
-
ds=Statsample::Dataset.new
|
7
|
-
20.times do |i|
|
8
|
-
ds["v#{i}"]=a.collect {|v| v+rand(20)}.to_scale
|
9
|
-
end
|
10
|
-
ds.update_valid_data
|
11
|
-
rel=Statsample::Reliability::ScaleAnalysis.new(ds)
|
12
|
-
puts rel.summary
|
13
4
|
|
5
|
+
Statsample::Analysis.store(Statsample::Reliability) do
|
6
|
+
|
7
|
+
samples=100
|
8
|
+
a=rnorm(samples)
|
9
|
+
|
10
|
+
ds=Statsample::Dataset.new
|
11
|
+
|
12
|
+
20.times do |i|
|
13
|
+
ds["v#{i}"]=a+rnorm(samples,0,0.2)
|
14
|
+
end
|
15
|
+
|
16
|
+
ds.update_valid_data
|
17
|
+
|
18
|
+
rel=Statsample::Reliability::ScaleAnalysis.new(ds)
|
19
|
+
summary rel
|
20
|
+
|
21
|
+
|
22
|
+
ms=Statsample::Reliability::MultiScaleAnalysis.new(:name=>"Multi Scale analyss") do |m|
|
23
|
+
m.scale "Scale 1", ds.clone(%w{v1 v2 v3 v4 v5 v6 v7 v8 v9 v10})
|
24
|
+
m.scale "Scale 2", ds.clone(%w{v11 v12 v13 v14 v15 v16 v17 v18 v19})
|
25
|
+
end
|
26
|
+
|
27
|
+
summary ms
|
28
|
+
end
|
14
29
|
|
15
|
-
|
16
|
-
|
17
|
-
m.scale "Scale 2", ds.clone(%w{v11 v12 v13 v14 v15 v16 v17 v18 v19})
|
30
|
+
if __FILE__==$0
|
31
|
+
Statsample::Analysis.run_batch
|
18
32
|
end
|
19
33
|
|
20
|
-
puts ms.summary
|