test/test_factor.rb in statsample-0.15.1 vs test/test_factor.rb in statsample-0.16.0
- old
+ new
@@ -1,6 +1,6 @@
-require(File.dirname(__FILE__)+'/helpers_tests.rb')
+require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
class StatsampleFactorTestCase < MiniTest::Unit::TestCase
include Statsample::Fixtures
def test_antiimage
cor=Matrix[[1,0.964, 0.312],[0.964,1,0.411],[0.312,0.411,1]]
@@ -26,36 +26,41 @@
m.row_size.times.map {|i|
assert_in_delta(expected[i], Statsample::Factor.kmo_univariate(m,i),0.01)
}
end
def test_parallelanalysis_with_data
- samples=100
- variables=10
- iterations=50
- rng = GSL::Rng.alloc()
- f1=samples.times.collect {rng.ugaussian()}.to_scale
- f2=samples.times.collect {rng.ugaussian()}.to_scale
- vectors={}
- variables.times do |i|
- if i<5
- vectors["v#{i}"]=samples.times.collect {|nv|
- f1[nv]*5+f2[nv]*2+rng.ugaussian()
- }.to_scale
- else
- vectors["v#{i}"]=samples.times.collect {|nv|
- f2[nv]*5+f1[nv]*2+rng.ugaussian()
- }.to_scale
+ if Statsample.has_gsl?
+ samples=100
+ variables=10
+ iterations=50
+ rng = Distribution::Normal.rng_ugaussian
+ f1=samples.times.collect {rng.call}.to_scale
+ f2=samples.times.collect {rng.call}.to_scale
+ vectors={}
+ variables.times do |i|
+ if i<5
+ vectors["v#{i}"]=samples.times.collect {|nv|
+ f1[nv]*5+f2[nv]*2+rng.call
+ }.to_scale
+ else
+ vectors["v#{i}"]=samples.times.collect {|nv|
+ f2[nv]*5+f1[nv]*2+rng.call
+ }.to_scale
+ end
+
end
+ ds=vectors.to_dataset
+ pa1=Statsample::Factor::ParallelAnalysis.new(ds, :bootstrap_method=>:data, :iterations=>iterations)
+ pa2=Statsample::Factor::ParallelAnalysis.with_random_data(samples,variables,:iterations=>iterations,:percentil=>95)
+ 3.times do |n|
+ var="ev_0000#{n+1}"
+ assert_in_delta(pa1.ds_eigenvalues[var].mean,pa2.ds_eigenvalues[var].mean,0.04)
+ end
+ else
+ skip("Too slow without GSL")
end
- ds=vectors.to_dataset
- pa1=Statsample::Factor::ParallelAnalysis.new(ds, :bootstrap_method=>:data, :iterations=>iterations)
- pa2=Statsample::Factor::ParallelAnalysis.with_random_data(samples,variables,:iterations=>iterations,:percentil=>95)
- 3.times do |n|
- var="ev_0000#{n+1}"
- assert_in_delta(pa1.ds_eigenvalues[var].mean,pa2.ds_eigenvalues[var].mean,0.04)
- end
end
def test_parallelanalysis
pa=Statsample::Factor::ParallelAnalysis.with_random_data(305,8,:iterations=>100,:percentil=>95)
assert_in_delta(1.2454, pa.ds_eigenvalues['ev_00001'].mean, 0.01)
assert_in_delta(1.1542, pa.ds_eigenvalues['ev_00002'].mean, 0.01)