earth 1.1.1 → 1.1.2

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.
Files changed (32) hide show
  1. data/CHANGELOG +12 -0
  2. data/data/residence/recs_response_groupings.csv +52 -0
  3. data/earth.gemspec +1 -1
  4. data/lib/earth/automobile/automobile_make_model_year_variant/data_miner.rb +1 -1
  5. data/lib/earth/industry/mecs_energy.rb +26 -16
  6. data/lib/earth/{insolation_scopes.rb → irradiance_scopes.rb} +1 -1
  7. data/lib/earth/loader.rb +5 -4
  8. data/lib/earth/locality/{direct_normal_insolation.rb → direct_normal_irradiance.rb} +4 -4
  9. data/lib/earth/locality/{direct_normal_insolation → direct_normal_irradiance}/data_miner.rb +4 -4
  10. data/lib/earth/locality/electricity_mix/data_miner.rb +8 -8
  11. data/lib/earth/locality/{global_horizontal_insolation.rb → global_horizontal_irradiance.rb} +4 -4
  12. data/lib/earth/locality/{global_horizontal_insolation → global_horizontal_irradiance}/data_miner.rb +4 -4
  13. data/lib/earth/locality/{photovoltaic_insolation.rb → photovoltaic_irradiance.rb} +4 -4
  14. data/lib/earth/locality/{photovoltaic_insolation → photovoltaic_irradiance}/data_miner.rb +4 -4
  15. data/lib/earth/locality/state.rb +3 -1
  16. data/lib/earth/locality/state/data_miner.rb +15 -8
  17. data/lib/earth/locality/zip_code/data_miner.rb +1 -1
  18. data/lib/earth/residence/recs_2009_response.rb +655 -0
  19. data/lib/earth/residence/recs_2009_response/data_miner.rb +402 -0
  20. data/lib/earth/residence/recs_2009_response/parser.rb +879 -0
  21. data/lib/earth/version.rb +1 -1
  22. data/spec/earth/locality/direct_normal_irradiance_spec.rb +8 -0
  23. data/spec/earth/locality/global_horizontal_irradiance_spec.rb +8 -0
  24. data/spec/earth/locality/photovoltaic_irradiance_spec.rb +8 -0
  25. data/spec/earth/locality/state_spec.rb +7 -0
  26. data/spec/earth/residence/recs_2009_response_spec.rb +388 -0
  27. data/spec/earth_spec.rb +1 -1
  28. metadata +386 -246
  29. data/ar17.html +0 -2093
  30. data/spec/earth/locality/direct_normal_insolation_spec.rb +0 -8
  31. data/spec/earth/locality/global_horizontal_insolation_spec.rb +0 -8
  32. data/spec/earth/locality/photovoltaic_insolation_spec.rb +0 -8
data/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+ 1.1.2 / 2013-03-15
2
+
3
+ * Enhancements
4
+
5
+ * 2012 Fuel Economy Guide
6
+ * RECS 2009 microdata
7
+ * New ZCTA urls from census.gov
8
+
9
+ * Bug fixes
10
+
11
+ * Fix esoteric regression with loading RECS 2009
12
+
1
13
  1.1.0 / 2012-10-18
2
14
 
3
15
  * Breaking changes
@@ -0,0 +1,52 @@
1
+ state_postal_abbreviation,recs_grouping_id
2
+ AK,27
3
+ AL,18
4
+ AR,20
5
+ AZ,24
6
+ CA,26
7
+ CO,22
8
+ CT,1
9
+ DC,14
10
+ DE,14
11
+ FL,17
12
+ GA,15
13
+ HI,27
14
+ IA,10
15
+ ID,23
16
+ IL,6
17
+ IN,7
18
+ KS,11
19
+ KY,18
20
+ LA,20
21
+ MA,2
22
+ MD,14
23
+ ME,1
24
+ MI,8
25
+ MN,10
26
+ MO,12
27
+ MS,18
28
+ MT,23
29
+ NC,16
30
+ ND,10
31
+ NE,11
32
+ NH,1
33
+ NJ,4
34
+ NM,25
35
+ NV,25
36
+ NY,3
37
+ OH,7
38
+ OK,20
39
+ OR,27
40
+ PA,5
41
+ RI,1
42
+ SC,16
43
+ SD,10
44
+ TN,19
45
+ TX,21
46
+ UT,23
47
+ VA,13
48
+ VT,1
49
+ WA,27
50
+ WI,9
51
+ WV,14
52
+ WY,23
@@ -4,7 +4,7 @@ require File.expand_path("../lib/earth/version", __FILE__)
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "earth"
6
6
  s.version = Earth::VERSION
7
- s.authors = ["Seamus Abshere", "Derek Kastner", "Andy Rossmeissl"]
7
+ s.authors = ["Seamus Abshere", "Derek Kastner", "Andy Rossmeissl", "Ian Hough"]
8
8
  s.email = ['seamus@abshere.net', 'dkastner@gmail.com', 'andy@rossmeissl.net', 'ijhough@gmail.com']
9
9
  s.homepage = "https://github.com/brighterplanet/earth"
10
10
  s.summary = %Q{Land, sky, and sea}
@@ -110,7 +110,7 @@ AutomobileMakeModelYearVariant.class_eval do
110
110
  2009 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/09data.zip', :filename => '2009_FE_guide for DOE_ALL-rel dates-no-sales-8-28-08download.csv' },
111
111
  2010 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/10data.zip', :filename => '2010FEGuide for DOE-all rel dates-no-sales-02-22-2011public.xlsx' },
112
112
  2011 => { :url => 'http://www.fueleconomy.gov/FEG/epadata/11data.zip', :filename => '2011FEGuide-for DOE rel-dates before 1-23-2011-no-sales-01-10-2011_All_public.xlsx' },
113
- 2012 => { :url => 'http://www.fueleconomy.gov/feg/epadata/12data.zip', :filename => '2012 FEGuide for DOE-rev99-rel dates before 3-13-2012-no-sales_public.xlsx' }
113
+ 2012 => { :url => 'http://www.fueleconomy.gov/feg/epadata/12data.zip', :filename => '2012 FEGuide-for DOE-OK to release-no-sales-11-13-2012public.xlsx' }
114
114
  })
115
115
 
116
116
  fuel_economy_guides.each do |year, options|
@@ -70,31 +70,41 @@ EOS
70
70
  def fuel_ratios
71
71
  # Don't return a ratio if reported total energy was withheld
72
72
  if energy.to_f > 0
73
+
73
74
  # Calculate the sum of all fuels and note if any were withheld
74
- withheld = 0
75
+ withheld = false
75
76
  fuels_sum = MecsEnergy::FUELS.inject(0) do |sum, fuel|
76
- (value = send("#{fuel}")).nil? ? withheld = 1 : sum += value
77
+ if (v = send(fuel)).nil?
78
+ withheld = true
79
+ else
80
+ sum += v
81
+ end
77
82
  sum
78
83
  end
79
84
 
80
- # If energy > sum of all fuels and some fuels were withheld, calculate fuel ratios as fraction of energy
81
- # and attribute the disparity between energy and sum of all fuels to the dirtiest fuel that was withheld
82
- if energy > fuels_sum and withheld == 1
83
- ratios = MecsEnergy::FUELS.inject({}) do |r, fuel|
84
- fuel_use = send("#{fuel}")
85
- r[fuel] = fuel_use.present? ? fuel_use / energy : nil
86
- r
85
+ if energy > fuels_sum and withheld
86
+ # If energy > sum of all fuels and some fuels were withheld, calculate fuel ratios as fraction of energy
87
+ # and attribute the disparity between energy and sum of all fuels to the dirtiest fuel that was withheld
88
+ ratios = MecsEnergy::FUELS.inject({}) do |memo, fuel|
89
+ memo[fuel] = if (v = send(fuel)).present?
90
+ v / energy
91
+ else
92
+ nil
93
+ end
94
+ memo
87
95
  end
88
-
89
96
  dirtiest_withheld = ([:coal, :other_fuel, :coke_and_breeze, :residual_fuel_oil, :distillate_fuel_oil, :lpg_and_ngl, :natural_gas] & ratios.select{|k,v| v.nil?}.keys).first
90
97
  ratios[dirtiest_withheld] = (energy - fuels_sum) / energy
91
- ratios.delete_if{ |fuel, ratio| ratio.to_f == 0.0 }
92
- # Otherwise calculate ratios as fraction of sum of all fuels, skipping any fuels that were withheld
98
+ ratios.delete_if do |fuel, ratio|
99
+ ratio.to_f == 0.0
100
+ end
93
101
  else
94
- ratios = MecsEnergy::FUELS.inject({}) do |r, fuel|
95
- fuel_use = send("#{fuel}")
96
- r[fuel] = fuel_use / fuels_sum if fuel_use.to_f > 0
97
- r
102
+ # Otherwise calculate ratios as fraction of sum of all fuels, skipping any fuels that were withheld
103
+ ratios = MecsEnergy::FUELS.inject({}) do |memo, fuel|
104
+ if (v = send(fuel).to_f) > 0
105
+ memo[fuel] = v / fuels_sum
106
+ end
107
+ memo
98
108
  end
99
109
  ratios.keys.any? ? ratios : nil
100
110
  end
@@ -1,5 +1,5 @@
1
1
  module Earth
2
- module InsolationScopes
2
+ module IrradianceScopes
3
3
  def self.included(target)
4
4
  target.scope :at_lat_lon, lambda { |lat, lon|
5
5
  target.where('nw_lat > ? AND nw_lon > ? AND se_lat < ? AND se_lon < ?', lat, lon, lat, lon)
@@ -22,16 +22,17 @@ module Earth
22
22
  args = [glob, options]
23
23
  return if @require_glob.include?(args)
24
24
  @require_glob << args
25
- data_miner_paths = []
25
+ require_later = []
26
26
  ::Dir[glob].each do |path|
27
- if path.include?('data_miner')
28
- data_miner_paths << path
27
+ # ugh
28
+ if path.include?('data_miner') or path.include?('parser')
29
+ require_later << path
29
30
  else
30
31
  require path
31
32
  end
32
33
  end
33
34
  # load data_miner blocks second to make sure they override
34
- data_miner_paths.each do |path|
35
+ require_later.each do |path|
35
36
  require path
36
37
  end if options[:load_data_miner] || options[:mine_original_sources]
37
38
  nil
@@ -1,12 +1,12 @@
1
1
  require 'earth/model'
2
- require 'earth/insolation_scopes'
2
+ require 'earth/irradiance_scopes'
3
3
 
4
- class DirectNormalInsolation < ActiveRecord::Base
4
+ class DirectNormalIrradiance < ActiveRecord::Base
5
5
  extend Earth::Model
6
- include Earth::InsolationScopes
6
+ include Earth::IrradianceScopes
7
7
 
8
8
  TABLE_STRUCTURE = <<-EOS
9
- CREATE TABLE direct_normal_insolations
9
+ CREATE TABLE direct_normal_irradiances
10
10
  (
11
11
  row_hash CHARACTER VARYING(255) NOT NULL PRIMARY KEY,
12
12
  nw_lat FLOAT,
@@ -1,20 +1,20 @@
1
1
  begin
2
2
  require 'geo_ruby'
3
3
  rescue LoadError
4
- puts '[Earth] You need to install the geo_ruby gem to mine Insolation from scratch'
4
+ puts '[Earth] You need to install the geo_ruby gem to mine DirectNormalIrradiance from scratch'
5
5
  exit
6
6
  end
7
7
  begin
8
8
  require 'dbf'
9
9
  rescue LoadError
10
- puts '[Earth] You need to install the dbf gem to mine Insolation from scratch'
10
+ puts '[Earth] You need to install the dbf gem to mine DirectNormalIrradiance from scratch'
11
11
  exit
12
12
  end
13
13
  require 'unix_utils'
14
14
 
15
- DirectNormalInsolation.class_eval do
15
+ DirectNormalIrradiance.class_eval do
16
16
  data_miner do
17
- import 'Direct Normal Insolation shapefile from NREL at http://www.nrel.gov/gis/data_solar.html',
17
+ import 'Direct Normal Irradiance shapefile from NREL at http://www.nrel.gov/gis/data_solar.html',
18
18
  :url => 'http://www.nrel.gov/gis/cfm/data/GIS_Data_Technology_Specific/United_States/Solar/High_Resolution/Lower_48_DNI_High_Resolution.zip',
19
19
  :format => :shp do
20
20
  key :row_hash
@@ -64,10 +64,10 @@ ElectricityMix.class_eval do
64
64
  sub_pops = state.zip_codes.known_subregion.sum(:population, :group => :egrid_subregion)
65
65
 
66
66
  %w{ co2 ch4 n2o }.each do |gas|
67
- ef = sub_pops.inject(0) do |memo, (subregion, population)|
68
- memo += subregion.send("#{gas}_emission_factor") * population
69
- memo
70
- end / sub_pops.values.sum
67
+ ef = sub_pops.sum do |subregion, population|
68
+ subregion.send("#{gas}_emission_factor") * population
69
+ end
70
+ ef /= sub_pops.values.sum
71
71
 
72
72
  mix.update_attributes!(
73
73
  "#{gas}_emission_factor" => ef,
@@ -75,10 +75,10 @@ ElectricityMix.class_eval do
75
75
  )
76
76
  end
77
77
 
78
- lf = sub_pops.inject(0) do |memo, (subregion, population)|
79
- memo += subregion.egrid_region.loss_factor * population
80
- memo
81
- end / sub_pops.values.sum
78
+ lf = sub_pops.sum do |subregion, population|
79
+ subregion.egrid_region.loss_factor * population
80
+ end
81
+ lf /= sub_pops.values.sum
82
82
 
83
83
  mix.update_attributes! :loss_factor => lf
84
84
  end
@@ -1,12 +1,12 @@
1
1
  require 'earth/model'
2
- require 'earth/insolation_scopes'
2
+ require 'earth/irradiance_scopes'
3
3
 
4
- class GlobalHorizontalInsolation < ActiveRecord::Base
4
+ class GlobalHorizontalIrradiance < ActiveRecord::Base
5
5
  extend Earth::Model
6
- include Earth::InsolationScopes
6
+ include Earth::IrradianceScopes
7
7
 
8
8
  TABLE_STRUCTURE = <<-EOS
9
- CREATE TABLE global_horizontal_insolations
9
+ CREATE TABLE global_horizontal_irradiances
10
10
  (
11
11
  row_hash CHARACTER VARYING(255) NOT NULL PRIMARY KEY,
12
12
  nw_lat FLOAT,
@@ -1,20 +1,20 @@
1
1
  begin
2
2
  require 'geo_ruby'
3
3
  rescue LoadError
4
- puts '[Earth] You need to install the geo_ruby gem to mine Insolation from scratch'
4
+ puts '[Earth] You need to install the geo_ruby gem to mine GlobalHorizontalIrradiance from scratch'
5
5
  exit
6
6
  end
7
7
  begin
8
8
  require 'dbf'
9
9
  rescue LoadError
10
- puts '[Earth] You need to install the dbf gem to mine Insolation from scratch'
10
+ puts '[Earth] You need to install the dbf gem to mine GlobalHorizontalIrradiance from scratch'
11
11
  exit
12
12
  end
13
13
  require 'unix_utils'
14
14
 
15
- GlobalHorizontalInsolation.class_eval do
15
+ GlobalHorizontalIrradiance.class_eval do
16
16
  data_miner do
17
- import 'Global Horizontal Insolation shapefile from NREL at http://www.nrel.gov/gis/data_solar.html',
17
+ import 'Global Horizontal Irradiance shapefile from NREL at http://www.nrel.gov/gis/data_solar.html',
18
18
  :url => 'http://www.nrel.gov/gis/cfm/data/GIS_Data_Technology_Specific/United_States/Solar/High_Resolution/Lower_48_GHI_High_Resolution.zip',
19
19
  :format => :shp do
20
20
  key :row_hash
@@ -1,12 +1,12 @@
1
1
  require 'earth/model'
2
- require 'earth/insolation_scopes'
2
+ require 'earth/irradiance_scopes'
3
3
 
4
- class PhotovoltaicInsolation < ActiveRecord::Base
4
+ class PhotovoltaicIrradiance < ActiveRecord::Base
5
5
  extend Earth::Model
6
- include Earth::InsolationScopes
6
+ include Earth::IrradianceScopes
7
7
 
8
8
  TABLE_STRUCTURE = <<-EOS
9
- CREATE TABLE photovoltaic_insolations
9
+ CREATE TABLE photovoltaic_irradiances
10
10
  (
11
11
  row_hash CHARACTER VARYING(255) NOT NULL PRIMARY KEY,
12
12
  nw_lat FLOAT,
@@ -1,20 +1,20 @@
1
1
  begin
2
2
  require 'geo_ruby'
3
3
  rescue LoadError
4
- puts '[Earth] You need to install the geo_ruby gem to mine Insolation from scratch'
4
+ puts '[Earth] You need to install the geo_ruby gem to mine PhotovoltaicIrradiance from scratch'
5
5
  exit
6
6
  end
7
7
  begin
8
8
  require 'dbf'
9
9
  rescue LoadError
10
- puts '[Earth] You need to install the dbf gem to mine Insolation from scratch'
10
+ puts '[Earth] You need to install the dbf gem to mine PhotovoltaicIrradiance from scratch'
11
11
  exit
12
12
  end
13
13
  require 'unix_utils'
14
14
 
15
- PhotovoltaicInsolation.class_eval do
15
+ PhotovoltaicIrradiance.class_eval do
16
16
  data_miner do
17
- import 'Photovoltaic Insolation shapefile from NREL at http://www.nrel.gov/gis/data_solar.html',
17
+ import 'Photovoltaic Irradiance (tilt = latitude) shapefile from NREL at http://www.nrel.gov/gis/data_solar.html',
18
18
  :url => 'http://www.nrel.gov/gis/cfm/data/GIS_Data_Technology_Specific/United_States/Solar/High_Resolution/Lower_48_LATTILT_High_Resolution.zip',
19
19
  :format => :shp do
20
20
  key :row_hash
@@ -30,7 +30,8 @@ CREATE TABLE states
30
30
  population INTEGER,
31
31
  electricity_emission_factor FLOAT,
32
32
  electricity_emission_factor_units CHARACTER VARYING(255),
33
- electricity_loss_factor FLOAT
33
+ electricity_loss_factor FLOAT,
34
+ recs_grouping_id INTEGER
34
35
  );
35
36
 
36
37
  EOS
@@ -39,6 +40,7 @@ EOS
39
40
 
40
41
  has_many :zip_codes, :foreign_key => 'state_postal_abbreviation'
41
42
  has_many :climate_divisions, :foreign_key => 'state_postal_abbreviation'
43
+ has_many :recs_2009_responses, :foreign_key => 'recs_grouping_id', :primary_key => 'recs_grouping_id'
42
44
  belongs_to :census_division, :foreign_key => 'census_division_number'
43
45
  has_one :census_region, :through => :census_division
44
46
  has_one :electricity_mix, :foreign_key => 'state_postal_abbreviation'
@@ -27,6 +27,13 @@ State.class_eval do
27
27
  store 'petroleum_administration_for_defense_district_code', :field_name => 'Code'
28
28
  end
29
29
 
30
+ # RECS 2009 grouping
31
+ import 'RECS 2009 response grouping ids',
32
+ :url => "file:///#{Earth::DATA_DIR}/residence/recs_response_groupings.csv" do
33
+ key 'postal_abbreviation', :field_name => 'state_postal_abbreviation'
34
+ store 'recs_grouping_id'
35
+ end
36
+
30
37
  process 'ensure ZipCode and EgridSubregion are populated' do
31
38
  ZipCode.run_data_miner!
32
39
  EgridSubregion.run_data_miner!
@@ -37,20 +44,20 @@ State.class_eval do
37
44
  safe_find_each do |state|
38
45
  sub_pops = state.zip_codes.known_subregion.sum(:population, :group => :egrid_subregion)
39
46
 
40
- ef = sub_pops.inject(0) do |memo, (subregion, population)|
41
- memo += subregion.electricity_emission_factor * population
42
- memo
43
- end / sub_pops.values.sum
47
+ ef = sub_pops.sum do |subregion, population|
48
+ subregion.electricity_emission_factor * population
49
+ end
50
+ ef /= sub_pops.values.sum
44
51
 
45
52
  state.update_attributes!(
46
53
  :electricity_emission_factor => ef,
47
54
  :electricity_emission_factor_units => 'kilograms_co2e_per_kilowatt_hour'
48
55
  )
49
56
 
50
- loss_factor = sub_pops.inject(0) do |memo, (subregion, population)|
51
- memo += subregion.egrid_region.loss_factor * population
52
- memo
53
- end / sub_pops.values.sum
57
+ loss_factor = sub_pops.sum do |subregion, population|
58
+ subregion.egrid_region.loss_factor * population
59
+ end
60
+ loss_factor /= sub_pops.values.sum
54
61
 
55
62
  state.update_attributes! :electricity_loss_factor => loss_factor
56
63
  end
@@ -26,7 +26,7 @@ ZipCode.class_eval do
26
26
 
27
27
  # NOTE: ZCTAs are not zip codes but are based on the most common zip code in the area they cover - see http://www.census.gov/geo/ZCTA/zcta.html
28
28
  import 'US Census 2010 zip code tabulation area populations',
29
- :url => 'http://www.census.gov/geo/www/2010census/zcta_rel/zcta_county_rel_10.txt' do
29
+ :url => 'http://www.census.gov/geo/maps-data/data/docs/rel/zcta_county_rel_10.txt' do
30
30
  key 'name', :field_name => 'ZCTA5', :sprintf => '%05d'
31
31
  store 'population', :field_name => 'ZPOP'
32
32
  end
@@ -0,0 +1,655 @@
1
+ require 'earth/model'
2
+
3
+ class Recs2009Response < ActiveRecord::Base
4
+ extend Earth::Model
5
+
6
+ TABLE_STRUCTURE = <<-EOS
7
+ CREATE TABLE recs_2009_responses
8
+ (
9
+ id INTEGER NOT NULL PRIMARY KEY,
10
+ weighting FLOAT,
11
+ census_region_number INTEGER,
12
+ census_division_number INTEGER,
13
+ recs_grouping_id INTEGER,
14
+ urban_rural CHARACTER VARYING(10),
15
+ metro_micro CHARACTER VARYING(10),
16
+ climate_region_id INTEGER,
17
+ climate_zone_id INTEGER,
18
+ hdd_2009 FLOAT,
19
+ hdd_2009_units CHARACTER VARYING(25),
20
+ hdd_avg FLOAT,
21
+ hdd_avg_units CHARACTER VARYING(25),
22
+ cdd_2009 FLOAT,
23
+ cdd_2009_units CHARACTER VARYING(25),
24
+ cdd_avg FLOAT,
25
+ cdd_avg_units CHARACTER VARYING(25),
26
+ building_type CHARACTER VARYING(25),
27
+ converted_house BOOLEAN,
28
+ condo_coop CHARACTER VARYING(10),
29
+ apartments INTEGER,
30
+ year_built INTEGER,
31
+ year_occupied INTEGER,
32
+ building_floors INTEGER,
33
+ levels INTEGER,
34
+ area FLOAT,
35
+ area_units CHARACTER VARYING(25),
36
+ rooms INTEGER,
37
+ bedrooms INTEGER,
38
+ bathrooms INTEGER,
39
+ half_baths INTEGER,
40
+ other_rooms INTEGER,
41
+ attic_rooms INTEGER,
42
+ basement_rooms INTEGER,
43
+ garage_type CHARACTER VARYING(10),
44
+ garage_size CHARACTER VARYING(10),
45
+ pool BOOLEAN,
46
+ shaded BOOLEAN,
47
+ slab BOOLEAN,
48
+ crawlspace BOOLEAN,
49
+ basement_type CHARACTER VARYING(10),
50
+ attic_type CHARACTER VARYING(10),
51
+ wall_material CHARACTER VARYING(35),
52
+ roof_material CHARACTER VARYING(25),
53
+ windows INTEGER,
54
+ window_panes INTEGER,
55
+ sliding_doors INTEGER,
56
+ insulation CHARACTER VARYING(10),
57
+ drafty CHARACTER VARYING(20),
58
+ high_ceiling BOOLEAN,
59
+ heating BOOLEAN,
60
+ heater CHARACTER VARYING(30),
61
+ heater_age INTEGER,
62
+ heater_fuel CHARACTER VARYING(15),
63
+ heater_shared BOOLEAN,
64
+ heater_thermostats INTEGER,
65
+ heater_portion FLOAT,
66
+ heater_2 CHARACTER VARYING(30),
67
+ heater_2_fuel CHARACTER VARYING(15),
68
+ heater_3 CHARACTER VARYING(30),
69
+ heater_3_fuel CHARACTER VARYING(15),
70
+ heater_4 CHARACTER VARYING(30),
71
+ heater_4_fuel CHARACTER VARYING(15),
72
+ heater_5 CHARACTER VARYING(30),
73
+ heater_5_fuel CHARACTER VARYING(15),
74
+ heater_6 CHARACTER VARYING(30),
75
+ heater_6_fuel CHARACTER VARYING(15),
76
+ cooling BOOLEAN,
77
+ cooler_central_age INTEGER,
78
+ cooler_central_shared BOOLEAN,
79
+ cooler_ac_units INTEGER,
80
+ cooler_ac_age INTEGER,
81
+ cooler_ac_energy_star BOOLEAN,
82
+ fans INTEGER,
83
+ water_heaters_storage INTEGER,
84
+ water_heaters_tankless INTEGER,
85
+ water_heater CHARACTER VARYING(15),
86
+ water_heater_fuel CHARACTER VARYING(15),
87
+ water_heater_age INTEGER,
88
+ water_heater_size CHARACTER VARYING(30),
89
+ water_heater_shared BOOLEAN,
90
+ water_heater_2 CHARACTER VARYING(15),
91
+ water_heater_2_fuel CHARACTER VARYING(15),
92
+ water_heater_2_age INTEGER,
93
+ water_heater_2_size CHARACTER VARYING(30),
94
+ pool_fuel CHARACTER VARYING(15),
95
+ hot_tub_fuel CHARACTER VARYING(15),
96
+ lights_high_use INTEGER,
97
+ lights_high_use_efficient INTEGER,
98
+ lights_med_use INTEGER,
99
+ lights_med_use_efficient INTEGER,
100
+ lights_low_use INTEGER,
101
+ lights_low_use_efficient INTEGER,
102
+ lights_outdoor INTEGER,
103
+ lights_outdoor_efficient INTEGER,
104
+ cooking_fuel CHARACTER VARYING(15),
105
+ stoves INTEGER,
106
+ stove_fuel CHARACTER VARYING(15),
107
+ cooktops INTEGER,
108
+ cooktop_fuel CHARACTER VARYING(15),
109
+ ovens INTEGER,
110
+ oven_fuel CHARACTER VARYING(15),
111
+ oven_type CHARACTER VARYING(25),
112
+ outdoor_grill_fuel CHARACTER VARYING(15),
113
+ indoor_grill_fuel CHARACTER VARYING(15),
114
+ toaster BOOLEAN,
115
+ coffee BOOLEAN,
116
+ fridges INTEGER,
117
+ fridge_type CHARACTER VARYING(35),
118
+ fridge_size CHARACTER VARYING(35),
119
+ fridge_defrost CHARACTER VARYING(10),
120
+ fridge_door_ice BOOLEAN,
121
+ fridge_age INTEGER,
122
+ fridge_energy_star BOOLEAN,
123
+ fridge_2_type CHARACTER VARYING(35),
124
+ fridge_2_size CHARACTER VARYING(35),
125
+ fridge_2_defrost CHARACTER VARYING(10),
126
+ fridge_2_age INTEGER,
127
+ fridge_2_energy_star BOOLEAN,
128
+ fridge_3_type CHARACTER VARYING(35),
129
+ fridge_3_size CHARACTER VARYING(35),
130
+ fridge_3_defrost CHARACTER VARYING(10),
131
+ fridge_3_age INTEGER,
132
+ fridge_3_energy_star BOOLEAN,
133
+ freezers INTEGER,
134
+ freezer_type CHARACTER VARYING(10),
135
+ freezer_size CHARACTER VARYING(35),
136
+ freezer_defrost CHARACTER VARYING(10),
137
+ freezer_age INTEGER,
138
+ freezer_2_type CHARACTER VARYING(10),
139
+ freezer_2_size CHARACTER VARYING(35),
140
+ freezer_2_defrost CHARACTER VARYING(10),
141
+ freezer_2_age INTEGER,
142
+ dishwasher_age INTEGER,
143
+ dishwasher_energy_star BOOLEAN,
144
+ washer_type CHARACTER VARYING(15),
145
+ washer_age INTEGER,
146
+ washer_energy_star BOOLEAN,
147
+ dryer_fuel CHARACTER VARYING(15),
148
+ dryer_age INTEGER,
149
+ tvs INTEGER,
150
+ tv_size CHARACTER VARYING(20),
151
+ tv_type CHARACTER VARYING(10),
152
+ tv_theater BOOLEAN,
153
+ tv_2_size CHARACTER VARYING(20),
154
+ tv_2_type CHARACTER VARYING(10),
155
+ tv_2_theater BOOLEAN,
156
+ tv_3_size CHARACTER VARYING(20),
157
+ tv_3_type CHARACTER VARYING(10),
158
+ tv_3_theater BOOLEAN,
159
+ computers INTEGER,
160
+ computer_type CHARACTER VARYING(10),
161
+ computer_monitor CHARACTER VARYING(10),
162
+ computer_2_type CHARACTER VARYING(10),
163
+ computer_2_monitor CHARACTER VARYING(10),
164
+ computer_3_type CHARACTER VARYING(10),
165
+ computer_3_monitor CHARACTER VARYING(10),
166
+ internet BOOLEAN,
167
+ printers INTEGER,
168
+ fax BOOLEAN,
169
+ copier BOOLEAN,
170
+ well_pump BOOLEAN,
171
+ engine_block_heater BOOLEAN,
172
+ aquarium BOOLEAN,
173
+ stereo BOOLEAN,
174
+ cordless_phone BOOLEAN,
175
+ answering_machine BOOLEAN,
176
+ tools INTEGER,
177
+ electronics INTEGER,
178
+ home_business BOOLEAN,
179
+ home_during_week BOOLEAN,
180
+ telecommuting INTEGER,
181
+ telecommuting_units CHARACTER VARYING(15),
182
+ unusual_activities BOOLEAN,
183
+ heat_area FLOAT,
184
+ heat_area_units CHARACTER VARYING(15),
185
+ heat_rooms INTEGER,
186
+ heat_attic_portion FLOAT,
187
+ heat_basement_portion FLOAT,
188
+ heat_garage BOOLEAN,
189
+ heat_temp_day FLOAT,
190
+ heat_temp_day_units CHARACTER VARYING(20),
191
+ heat_temp_night FLOAT,
192
+ heat_temp_night_units CHARACTER VARYING(20),
193
+ heat_temp_away FLOAT,
194
+ heat_temp_away_units CHARACTER VARYING(20),
195
+ heat_auto_adjust_day BOOLEAN,
196
+ heat_auto_adjust_night BOOLEAN,
197
+ cool_area FLOAT,
198
+ cool_area_units CHARACTER VARYING(15),
199
+ cool_rooms INTEGER,
200
+ cool_attic_portion FLOAT,
201
+ cool_basement_portion FLOAT,
202
+ cool_garage BOOLEAN,
203
+ cool_temp_day FLOAT,
204
+ cool_temp_day_units CHARACTER VARYING(20),
205
+ cool_temp_night FLOAT,
206
+ cool_temp_night_units CHARACTER VARYING(20),
207
+ cool_temp_away FLOAT,
208
+ cool_temp_away_units CHARACTER VARYING(20),
209
+ cool_auto_adjust_day BOOLEAN,
210
+ cool_auto_adjust_night BOOLEAN,
211
+ cooler_central_use CHARACTER VARYING(35),
212
+ cooler_ac_use CHARACTER VARYING(35),
213
+ fan_use CHARACTER VARYING(35),
214
+ humidifier_use INTEGER,
215
+ humidifier_use_units CHARACTER VARYING(10),
216
+ dehumidifier_use INTEGER,
217
+ dehumidifier_use_units CHARACTER VARYING(10),
218
+ oven_use INTEGER,
219
+ oven_use_units CHARACTER VARYING(15),
220
+ microwave_use CHARACTER VARYING(30),
221
+ microwave_defrost BOOLEAN,
222
+ cooking_frequency INTEGER,
223
+ cooking_frequency_units CHARACTER VARYING(15),
224
+ fridge_2_use INTEGER,
225
+ fridge_2_use_units CHARACTER VARYING(10),
226
+ fridge_3_use INTEGER,
227
+ fridge_3_use_units CHARACTER VARYING(10),
228
+ dishwasher_use INTEGER,
229
+ dishwasher_use_units CHARACTER VARYING(15),
230
+ washer_use INTEGER,
231
+ washer_use_units CHARACTER VARYING(15),
232
+ washer_temp_wash CHARACTER VARYING(10),
233
+ washer_temp_rinse CHARACTER VARYING(10),
234
+ dryer_use CHARACTER VARYING(25),
235
+ tv_weekday_use INTEGER,
236
+ tv_weekday_use_units CHARACTER VARYING(15),
237
+ tv_weekend_use INTEGER,
238
+ tv_weekend_use_units CHARACTER VARYING(15),
239
+ tv_2_weekday_use INTEGER,
240
+ tv_2_weekday_use_units CHARACTER VARYING(15),
241
+ tv_2_weekend_use INTEGER,
242
+ tv_2_weekend_use_units CHARACTER VARYING(15),
243
+ tv_3_weekday_use INTEGER,
244
+ tv_3_weekday_use_units CHARACTER VARYING(15),
245
+ tv_3_weekend_use INTEGER,
246
+ tv_3_weekend_use_units CHARACTER VARYING(15),
247
+ computer_use INTEGER,
248
+ computer_use_units CHARACTER VARYING(15),
249
+ computer_idle CHARACTER VARYING(15),
250
+ computer_2_use INTEGER,
251
+ computer_2_use_units CHARACTER VARYING(15),
252
+ computer_2_idle CHARACTER VARYING(15),
253
+ computer_3_use INTEGER,
254
+ computer_3_use_units CHARACTER VARYING(15),
255
+ computer_3_idle CHARACTER VARYING(15),
256
+ tool_charging CHARACTER VARYING(20),
257
+ tool_vampires CHARACTER VARYING(25),
258
+ electronic_charging CHARACTER VARYING(20),
259
+ electronic_vampires CHARACTER VARYING(25),
260
+ energy_audit BOOLEAN,
261
+ energy_audit_year INTEGER,
262
+ energy_audit_incent CHARACTER VARYING(35),
263
+ energy_audit_incent_year INTEGER,
264
+ insulation_added BOOLEAN,
265
+ insulation_added_year INTEGER,
266
+ insulation_incent CHARACTER VARYING(35),
267
+ insulation_incent_year INTEGER,
268
+ windows_replaced CHARACTER VARYING(10),
269
+ windows_incent CHARACTER VARYING(35),
270
+ windows_incent_year INTEGER,
271
+ caulking_added BOOLEAN,
272
+ caulking_added_year INTEGER,
273
+ caulking_incent CHARACTER VARYING(35),
274
+ caulking_incent_year INTEGER,
275
+ heater_maintained BOOLEAN,
276
+ heater_replaced BOOLEAN,
277
+ heater_incent CHARACTER VARYING(35),
278
+ heater_incent_year INTEGER,
279
+ cooler_central_maintained BOOLEAN,
280
+ cooler_central_replaced BOOLEAN,
281
+ cooler_central_incent CHARACTER VARYING(35),
282
+ cooler_central_incent_year INTEGER,
283
+ cooler_ac_replaced BOOLEAN,
284
+ cooler_ac_incent CHARACTER VARYING(35),
285
+ cooler_ac_incent_year INTEGER,
286
+ water_heater_blanket BOOLEAN,
287
+ water_heater_incent CHARACTER VARYING(35),
288
+ water_heater_incent_year INTEGER,
289
+ lights_replaced BOOLEAN,
290
+ lights_incent CHARACTER VARYING(35),
291
+ lights_incent_year INTEGER,
292
+ dishwasher_replaced BOOLEAN,
293
+ dishwasher_incent CHARACTER VARYING(35),
294
+ dishwasher_incent_year INTEGER,
295
+ fridge_replaced BOOLEAN,
296
+ fridge_incent CHARACTER VARYING(35),
297
+ fridge_incent_year INTEGER,
298
+ freezer_replaced BOOLEAN,
299
+ freezer_incent CHARACTER VARYING(35),
300
+ freezer_incent_year INTEGER,
301
+ washer_replaced BOOLEAN,
302
+ washer_incent CHARACTER VARYING(35),
303
+ washer_incent_year INTEGER,
304
+ renewable_energy CHARACTER VARYING(15),
305
+ own_rent CHARACTER VARYING(10),
306
+ sex CHARACTER VARYING(10),
307
+ employment CHARACTER VARYING(25),
308
+ live_with_spouse BOOLEAN,
309
+ race CHARACTER VARYING(35),
310
+ latino BOOLEAN,
311
+ education CHARACTER VARYING(30),
312
+ household_size INTEGER,
313
+ member_1_age INTEGER,
314
+ member_2_age INTEGER,
315
+ member_3_age INTEGER,
316
+ member_4_age INTEGER,
317
+ member_5_age INTEGER,
318
+ member_6_age INTEGER,
319
+ member_7_age INTEGER,
320
+ member_8_age INTEGER,
321
+ member_9_age INTEGER,
322
+ member_10_age INTEGER,
323
+ member_11_age INTEGER,
324
+ member_12_age INTEGER,
325
+ member_13_age INTEGER,
326
+ member_14_age INTEGER,
327
+ income INTEGER,
328
+ income_employment BOOLEAN,
329
+ income_retirement BOOLEAN,
330
+ income_ssi BOOLEAN,
331
+ income_welfare BOOLEAN,
332
+ income_investment BOOLEAN,
333
+ income_other BOOLEAN,
334
+ poverty_100 BOOLEAN,
335
+ poverty_150 BOOLEAN,
336
+ public_housing_authority BOOLEAN,
337
+ food_stamps BOOLEAN,
338
+ low_rent BOOLEAN,
339
+ pays_electricity_heat CHARACTER VARYING(30),
340
+ pays_electricity_water CHARACTER VARYING(30),
341
+ pays_electricity_cooking CHARACTER VARYING(30),
342
+ pays_electricity_cool CHARACTER VARYING(30),
343
+ pays_electricity_lighting CHARACTER VARYING(30),
344
+ pays_natural_gas_heat CHARACTER VARYING(30),
345
+ pays_natural_gas_water CHARACTER VARYING(30),
346
+ pays_natural_gas_cooking CHARACTER VARYING(30),
347
+ pays_natural_gas_other CHARACTER VARYING(30),
348
+ pays_fuel_oil CHARACTER VARYING(30),
349
+ pays_propane CHARACTER VARYING(30),
350
+ electricity_heat BOOLEAN,
351
+ electricity_heat_2 BOOLEAN,
352
+ electricity_cool BOOLEAN,
353
+ electricity_water BOOLEAN,
354
+ electricity_cooking BOOLEAN,
355
+ electricity_other BOOLEAN,
356
+ natural_gas_heat BOOLEAN,
357
+ natural_gas_heat_2 BOOLEAN,
358
+ natural_gas_water BOOLEAN,
359
+ natural_gas_cooking BOOLEAN,
360
+ natural_gas_other BOOLEAN,
361
+ propane_heat BOOLEAN,
362
+ propane_heat_2 BOOLEAN,
363
+ propane_water BOOLEAN,
364
+ propane_cooking BOOLEAN,
365
+ propane_other BOOLEAN,
366
+ fuel_oil_heat BOOLEAN,
367
+ fuel_oil_heat_2 BOOLEAN,
368
+ fuel_oil_water BOOLEAN,
369
+ fuel_oil_other BOOLEAN,
370
+ kerosene_heat BOOLEAN,
371
+ kerosene_heat_2 BOOLEAN,
372
+ kerosene_water BOOLEAN,
373
+ kerosene_other BOOLEAN,
374
+ wood_heat BOOLEAN,
375
+ wood_heat_2 BOOLEAN,
376
+ wood_water BOOLEAN,
377
+ wood_other BOOLEAN,
378
+ solar_heat BOOLEAN,
379
+ solar_heat_2 BOOLEAN,
380
+ solar_water BOOLEAN,
381
+ solar_other BOOLEAN,
382
+ other_heat BOOLEAN,
383
+ other_heat_2 BOOLEAN,
384
+ other_water BOOLEAN,
385
+ other_cooking BOOLEAN,
386
+ energy FLOAT,
387
+ energy_units CHARACTER VARYING(10),
388
+ energy_cost INTEGER,
389
+ energy_cost_units CHARACTER VARYING(10),
390
+ electricity FLOAT,
391
+ electricity_units CHARACTER VARYING(10),
392
+ electricity_cost INTEGER,
393
+ electricity_cost_units CHARACTER VARYING(10),
394
+ natural_gas FLOAT,
395
+ natural_gas_units CHARACTER VARYING(10),
396
+ natural_gas_cost INTEGER,
397
+ natural_gas_cost_units CHARACTER VARYING(10),
398
+ propane FLOAT,
399
+ propane_units CHARACTER VARYING(10),
400
+ propane_cost INTEGER,
401
+ propane_cost_units CHARACTER VARYING(10),
402
+ fuel_oil FLOAT,
403
+ fuel_oil_units CHARACTER VARYING(10),
404
+ fuel_oil_cost INTEGER,
405
+ fuel_oil_cost_units CHARACTER VARYING(10),
406
+ kerosene FLOAT,
407
+ kerosene_units CHARACTER VARYING(10),
408
+ kerosene_cost INTEGER,
409
+ kerosene_cost_units CHARACTER VARYING(10),
410
+ wood FLOAT,
411
+ wood_units CHARACTER VARYING(10)
412
+ );
413
+ EOS
414
+
415
+ self.table_name = "recs_2009_responses"
416
+ self.primary_key = "id"
417
+
418
+ has_many :states, :foreign_key => :recs_grouping_id, :primary_key => :recs_grouping_id
419
+
420
+ warn_if_nulls_except(
421
+ :metro_micro,
422
+ :converted_house,
423
+ :condo_coop,
424
+ :apartments,
425
+ :building_floors,
426
+ :garage_type,
427
+ :garage_size,
428
+ :basement_type,
429
+ :attic_type,
430
+ :roof_material,
431
+ :heater,
432
+ :heater_age,
433
+ :heater_fuel,
434
+ :heater_shared,
435
+ :heater_portion,
436
+ :heater_2,
437
+ :heater_2_fuel,
438
+ :heater_3,
439
+ :heater_3_fuel,
440
+ :heater_4,
441
+ :heater_4_fuel,
442
+ :heater_5,
443
+ :heater_5_fuel,
444
+ :heater_6,
445
+ :heater_6_fuel,
446
+ :cooler_central_age,
447
+ :cooler_central_shared,
448
+ :cooler_ac_age,
449
+ :cooler_ac_energy_star,
450
+ :water_heater,
451
+ :water_heater_fuel,
452
+ :water_heater_age,
453
+ :water_heater_size,
454
+ :water_heater_shared,
455
+ :water_heater_2,
456
+ :water_heater_2_fuel,
457
+ :water_heater_2_age,
458
+ :water_heater_2_size,
459
+ :pool_fuel,
460
+ :hot_tub_fuel,
461
+ :cooking_fuel,
462
+ :stove_fuel,
463
+ :cooktop_fuel,
464
+ :oven_fuel,
465
+ :oven_type,
466
+ :outdoor_grill_fuel,
467
+ :indoor_grill_fuel,
468
+ :fridge_type,
469
+ :fridge_size,
470
+ :fridge_defrost,
471
+ :fridge_door_ice,
472
+ :fridge_age,
473
+ :fridge_energy_star,
474
+ :fridge_2_type,
475
+ :fridge_2_size,
476
+ :fridge_2_defrost,
477
+ :fridge_2_age,
478
+ :fridge_2_energy_star,
479
+ :fridge_3_type,
480
+ :fridge_3_size,
481
+ :fridge_3_defrost,
482
+ :fridge_3_age,
483
+ :fridge_3_energy_star,
484
+ :freezer_type,
485
+ :freezer_size,
486
+ :freezer_defrost,
487
+ :freezer_age,
488
+ :freezer_2_type,
489
+ :freezer_2_size,
490
+ :freezer_2_defrost,
491
+ :freezer_2_age,
492
+ :dishwasher_age,
493
+ :dishwasher_energy_star,
494
+ :washer_type,
495
+ :washer_age,
496
+ :washer_energy_star,
497
+ :dryer_fuel,
498
+ :dryer_age,
499
+ :tv_size,
500
+ :tv_type,
501
+ :tv_theater,
502
+ :tv_2_size,
503
+ :tv_2_type,
504
+ :tv_2_theater,
505
+ :tv_3_size,
506
+ :tv_3_type,
507
+ :tv_3_theater,
508
+ :computer_type,
509
+ :computer_monitor,
510
+ :computer_2_type,
511
+ :computer_2_monitor,
512
+ :computer_3_type,
513
+ :computer_3_monitor,
514
+ :well_pump,
515
+ :engine_block_heater,
516
+ :heat_attic_portion,
517
+ :heat_basement_portion,
518
+ :heat_garage,
519
+ :heat_temp_day,
520
+ :heat_temp_day_units,
521
+ :heat_temp_night,
522
+ :heat_temp_night_units,
523
+ :heat_temp_away,
524
+ :heat_temp_away_units,
525
+ :heat_auto_adjust_day,
526
+ :heat_auto_adjust_night,
527
+ :cool_attic_portion,
528
+ :cool_basement_portion,
529
+ :cool_garage,
530
+ :cool_temp_day,
531
+ :cool_temp_day_units,
532
+ :cool_temp_night,
533
+ :cool_temp_night_units,
534
+ :cool_temp_away,
535
+ :cool_temp_away_units,
536
+ :cool_auto_adjust_day,
537
+ :cool_auto_adjust_night,
538
+ :cooler_central_use,
539
+ :cooler_ac_use,
540
+ :fan_use,
541
+ :humidifier_use,
542
+ :humidifier_use_units,
543
+ :dehumidifier_use,
544
+ :dehumidifier_use_units,
545
+ :oven_use,
546
+ :oven_use_units,
547
+ :microwave_use,
548
+ :microwave_defrost,
549
+ :fridge_2_use,
550
+ :fridge_2_use_units,
551
+ :fridge_3_use,
552
+ :fridge_3_use_units,
553
+ :dishwasher_use,
554
+ :dishwasher_use_units,
555
+ :washer_use,
556
+ :washer_use_units,
557
+ :washer_temp_wash,
558
+ :washer_temp_rinse,
559
+ :dryer_use,
560
+ :tv_weekday_use,
561
+ :tv_weekday_use_units,
562
+ :tv_weekend_use,
563
+ :tv_weekend_use_units,
564
+ :tv_2_weekday_use,
565
+ :tv_2_weekday_use_units,
566
+ :tv_2_weekend_use,
567
+ :tv_2_weekend_use_units,
568
+ :tv_3_weekday_use,
569
+ :tv_3_weekday_use_units,
570
+ :tv_3_weekend_use,
571
+ :tv_3_weekend_use_units,
572
+ :computer_use,
573
+ :computer_use_units,
574
+ :computer_idle,
575
+ :computer_2_use,
576
+ :computer_2_use_units,
577
+ :computer_2_idle,
578
+ :computer_3_use,
579
+ :computer_3_use_units,
580
+ :computer_3_idle,
581
+ :tool_charging,
582
+ :tool_vampires,
583
+ :electronic_charging,
584
+ :electronic_vampires,
585
+ :energy_audit_year,
586
+ :energy_audit_incent,
587
+ :energy_audit_incent_year,
588
+ :insulation_added_year,
589
+ :insulation_incent,
590
+ :insulation_incent_year,
591
+ :caulking_added_year,
592
+ :caulking_incent,
593
+ :caulking_incent_year,
594
+ :windows_replaced,
595
+ :windows_incent,
596
+ :windows_incent_year,
597
+ :heater_maintained,
598
+ :heater_replaced,
599
+ :heater_incent,
600
+ :heater_incent_year,
601
+ :cooler_central_maintained,
602
+ :cooler_central_replaced,
603
+ :cooler_central_incent,
604
+ :cooler_central_incent_year,
605
+ :cooler_ac_replaced,
606
+ :cooler_ac_incent,
607
+ :cooler_ac_incent_year,
608
+ :water_heater_blanket,
609
+ :water_heater_incent,
610
+ :water_heater_incent_year,
611
+ :lights_replaced,
612
+ :lights_incent,
613
+ :lights_incent_year,
614
+ :dishwasher_replaced,
615
+ :dishwasher_incent,
616
+ :dishwasher_incent_year,
617
+ :fridge_replaced,
618
+ :fridge_incent,
619
+ :fridge_incent_year,
620
+ :freezer_replaced,
621
+ :freezer_incent,
622
+ :freezer_incent_year,
623
+ :washer_replaced,
624
+ :washer_incent,
625
+ :washer_incent_year,
626
+ :renewable_energy,
627
+ :own_rent,
628
+ :member_2_age,
629
+ :member_3_age,
630
+ :member_4_age,
631
+ :member_5_age,
632
+ :member_6_age,
633
+ :member_7_age,
634
+ :member_8_age,
635
+ :member_9_age,
636
+ :member_10_age,
637
+ :member_11_age,
638
+ :member_12_age,
639
+ :member_13_age,
640
+ :member_14_age,
641
+ :public_housing_authority,
642
+ :low_rent,
643
+ :pays_electricity_heat,
644
+ :pays_electricity_water,
645
+ :pays_electricity_cooking,
646
+ :pays_electricity_cool,
647
+ :pays_electricity_lighting,
648
+ :pays_natural_gas_heat,
649
+ :pays_natural_gas_water,
650
+ :pays_natural_gas_cooking,
651
+ :pays_natural_gas_other,
652
+ :pays_fuel_oil,
653
+ :pays_propane
654
+ )
655
+ end