class StatsampleMultisetTestCase

Public Instance Methods

setup() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 5
def setup
  @x=%w{a a a a b b b b}.to_vector
  @y=[1,2,3,4,5,6,7,8].to_scale
  @z=[10,11,12,13,14,15,16,17].to_scale
  @ds={'x'=>@x,'y'=>@y,'z'=>@z}.to_dataset
  @ms=@ds.to_multiset_by_split('x')
end
test_creation() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 12
def test_creation
  v1a=[1,2,3,4,5].to_vector
  v2b=[11,21,31,41,51].to_vector
  v3c=[21,23,34,45,56].to_vector
  ds1={'v1'=>v1a,'v2'=>v2b,'v3'=>v3c}.to_dataset
  v1b=[15,25,35,45,55].to_vector
  v2b=[11,21,31,41,51].to_vector
  v3b=[21,23,34,45,56].to_vector
  ds2={'v1'=>v1b,'v2'=>v2b,'v3'=>v3b}.to_dataset
  ms=Statsample::Multiset.new(['v1','v2','v3'])
  ms.add_dataset('ds1',ds1)
  ms.add_dataset('ds2',ds2)
  assert_equal(ds1,ms['ds1'])
  assert_equal(ds2,ms['ds2'])
  assert_equal(v1a,ms['ds1']['v1'])
  assert_not_equal(v1b,ms['ds1']['v1'])
  ds3={'v1'=>v1b,'v2'=>v2b}.to_dataset
  assert_raise ArgumentError do
    ms.add_dataset(ds3)
  end
end
test_creation_empty() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 33
def test_creation_empty
  ms=Statsample::Multiset.new_empty_vectors(%w{id age name},%w{male female})
  ds_male={'id'=>[].to_vector,'age'=>[].to_vector, 'name'=>[].to_vector}.to_dataset(%w{id age name})
  ds_female={'id'=>[].to_vector,'age'=>[].to_vector, 'name'=>[].to_vector}.to_dataset(%w{id age name})
  ms2=Statsample::Multiset.new(%w{id age name})
  ms2.add_dataset('male',ds_male)
  ms2.add_dataset('female',ds_female)
  assert_equal(ms2.fields,ms.fields)
  assert_equal(ms2['male'],ms['male'])
  assert_equal(ms2['female'],ms['female'])
end
test_each() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 99
def test_each
  xpe={
    'a'=>%w{a a a a}.to_vector,
    'b'=>%w{b b b b}.to_vector
  }
  ype={
    'a'=>[1,2,3,4].to_scale,
    'b'=>[5,6,7,8].to_scale,
  }
  zpe={
    'a'=>[10,11,12,13].to_scale,
    'b'=>[14,15,16,17].to_scale,
  }
  xp,yp,zp=Hash.new(),Hash.new(),Hash.new()
  @ms.each {|k,ds|
    xp[k]=ds['x']
    yp[k]=ds['y']
    zp[k]=ds['z']
  }
  assert_equal(xpe,xp)
  assert_equal(ype,yp)
  assert_equal(zpe,zp)

end
test_multiset_union() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 140
def test_multiset_union
  r1=rand()
  r2=rand()
  ye=[1*r1,2*r1,3*r1,4*r1,5*r2,6*r2,7*r2,8*r2].to_scale
  
  ze=[10*r1,11*r1,12*r1,13*r1, 14*r2,15*r2,16*r2,17*r2].to_scale
  @ms.each {|k,ds|
    ds['y'].recode!{|v| 
    k=='a' ? v*r1 : v*r2}
    ds['z'].recode!{|v| 
    k=='a' ? v*r1 : v*r2}
    
  }
  ds2=@ms.union
  assert_equal(ye,ds2['y'])
  assert_equal(ze,ds2['z'])
  
end
test_multiset_union_with_block() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 123
def test_multiset_union_with_block
  
  r1=rand()
  r2=rand()
  ye=[1*r1,2*r1,3*r1,4*r1,5*r2,6*r2,7*r2,8*r2].to_scale
  
  ze=[10*r1,11*r1,12*r1,13*r1, 14*r2,15*r2,16*r2,17*r2].to_scale
  
  ds2=@ms.union {|k,ds|
    ds['y'].recode!{|v| 
    k=='a' ? v*r1 : v*r2}
    ds['z'].recode!{|v| 
    k=='a' ? v*r1 : v*r2}
  }
  assert_equal(ye,ds2['y'])
  assert_equal(ze,ds2['z'])
end
test_stratum_proportion() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 70
def test_stratum_proportion
  ds1={'q1'=>[1,1,1,1,1,0,0,0,0,0,0,0].to_vector}.to_dataset
  ds2={'q1'=>[1,1,1,1,1,1,1,0,0].to_vector}.to_dataset
  assert_equal(5.0/12, ds1['q1'].proportion )
  assert_equal(7.0/9, ds2['q1'].proportion )
  ms=Statsample::Multiset.new(['q1'])
  ms.add_dataset('d1',ds1)
  ms.add_dataset('d2',ds2)
  ss=Statsample::StratifiedSample.new(ms,{'d1'=>50,'d2'=>100})
  assert_in_delta(0.655, ss.proportion('q1'),0.01)
  assert_in_delta(0.345, ss.proportion('q1',0),0.01)

end
test_stratum_scale() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 83
def test_stratum_scale
  boys={'test'=>[50, 55, 60, 62, 62, 65, 67, 67, 70, 70, 73, 73, 75, 78, 78, 80, 85, 90].to_vector(:scale)}.to_dataset
  girls={'test'=>[70, 70, 72, 72, 75, 75, 78, 78, 80, 80, 82, 82, 85, 85, 88, 88, 90, 90].to_vector(:scale)}.to_dataset
  ms=Statsample::Multiset.new(['test'])
  ms.add_dataset('boys',boys)
  ms.add_dataset('girls',girls)
  ss=Statsample::StratifiedSample.new(ms,{'boys'=>10000,'girls'=>10000})
  assert_equal(2,ss.strata_number)
  assert_equal(20000,ss.population_size)
  assert_equal(10000,ss.stratum_size('boys'))
  assert_equal(10000,ss.stratum_size('girls'))
  assert_equal(36,ss.sample_size)
  assert_equal(75,ss.mean('test'))
  assert_in_delta(1.45,ss.standard_error_wor('test'),0.01)
  assert_in_delta(ss.standard_error_wor('test'), ss.standard_error_wor_2('test'),0.00001)
end
test_to_multiset_by_split_multiple() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 57
def test_to_multiset_by_split_multiple
  sex=%w{m m m m m m m m m m f f f f f f f f f f}.to_vector(:nominal)
  city=%w{London London London Paris Paris London London London Paris Paris London London London Paris Paris London London London Paris Paris}.to_vector(:nominal)
  hair=%w{blonde blonde black black blonde blonde black black blonde blonde black black blonde blonde black black blonde blonde black black}.to_vector(:nominal)
  age=[10,10,20,30,34,34,33,35,36,40, 10,10,20,30,34,34,33,35,36,40].to_vector(:scale)
  ds={'sex'=>sex,'city'=>city,'hair'=>hair,'age'=>age}.to_dataset(%w{sex city hair age})
  ms=ds.to_multiset_by_split('sex','city','hair')
  assert_equal(8,ms.n_datasets)
  assert_equal(3,ms[%w{m London blonde}].cases)
  assert_equal(3,ms[%w{m London blonde}].cases)
  assert_equal(1,ms[%w{m Paris black}].cases)
end
test_to_multiset_by_split_one() click to toggle source
# File pkg/statsample-1.4.0/test/test_multiset.rb, line 44
def test_to_multiset_by_split_one
  sex=%w{m m m m m f f f f m}.to_vector(:nominal)
  city=%w{London Paris NY London Paris NY London Paris NY Tome}.to_vector(:nominal)
  age=[10,10,20,30,34,34,33,35,36,40].to_vector(:scale)
  ds={'sex'=>sex,'city'=>city,'age'=>age}.to_dataset
  ms=ds.to_multiset_by_split('sex')
  assert_equal(2,ms.n_datasets)
  assert_equal(%w{f m},ms.datasets.keys.sort)
  assert_equal(6,ms['m'].cases)
  assert_equal(4,ms['f'].cases)
  assert_equal(%w{London Paris NY London Paris Tome},ms['m']['city'].to_a)
  assert_equal([34,33,35,36],ms['f']['age'].to_a)
end