Class: Statsample::Multiset
- Inherits:
-
Object
- Object
- Statsample::Multiset
- Defined in:
- lib/statsample/multiset.rb
Overview
Multiset joins multiple dataset with the same fields and vectors but with different number of cases. This is the base class for stratified and cluster sampling estimation
Instance Attribute Summary collapse
-
#datasets ⇒ Object
readonly
Returns the value of attribute datasets.
-
#fields ⇒ Object
readonly
Returns the value of attribute fields.
Class Method Summary collapse
Instance Method Summary collapse
- #[](i) ⇒ Object
- #add_dataset(key, ds) ⇒ Object
- #collect_vector(field) ⇒ Object
- #datasets_names ⇒ Object
-
#initialize(fields) ⇒ Multiset
constructor
To create a multiset * Multiset.new(%wf2 f3) # define only fields.
- #n_datasets ⇒ Object
- #sum_field(field) ⇒ Object
Constructor Details
#initialize(fields) ⇒ Multiset
To create a multiset
-
Multiset.new(%wf2 f3) # define only fields
9 10 11 12 |
# File 'lib/statsample/multiset.rb', line 9 def initialize(fields) @fields=fields @datasets={} end |
Instance Attribute Details
#datasets ⇒ Object (readonly)
Returns the value of attribute datasets.
6 7 8 |
# File 'lib/statsample/multiset.rb', line 6 def datasets @datasets end |
#fields ⇒ Object (readonly)
Returns the value of attribute fields.
6 7 8 |
# File 'lib/statsample/multiset.rb', line 6 def fields @fields end |
Class Method Details
Instance Method Details
#[](i) ⇒ Object
46 47 48 |
# File 'lib/statsample/multiset.rb', line 46 def[](i) @datasets[i] end |
#add_dataset(key, ds) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/statsample/multiset.rb', line 26 def add_dataset(key,ds) if(ds.fields!=@fields) raise ArgumentError, "Dataset(#{ds.fields.to_s})must have the same fields of the Multiset(#{@fields})" else @datasets[key]=ds end end |
#collect_vector(field) ⇒ Object
41 42 43 44 45 |
# File 'lib/statsample/multiset.rb', line 41 def collect_vector(field) @datasets.collect {|k,v| yield k, v[field] } end |
#datasets_names ⇒ Object
20 21 22 |
# File 'lib/statsample/multiset.rb', line 20 def datasets_names @datasets.keys.sort end |
#n_datasets ⇒ Object
23 24 25 |
# File 'lib/statsample/multiset.rb', line 23 def n_datasets @datasets.size end |
#sum_field(field) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/statsample/multiset.rb', line 33 def sum_field(field) @datasets.inject(0) {|a,da| stratum_name=da[0] vector=da[1][field] val=yield stratum_name,vector a+val } end |