EnergyInnovation / eps-us

Energy Policy Simulator - United States
GNU General Public License v3.0
22 stars 7 forks source link

Calculate changes in annual average distance traveled and by vehicle type, cargo type, AND engine type #6

Closed robbieorvis closed 4 years ago

robbieorvis commented 4 years ago

When estimating changes in annual distance traveled by vehicle type and subsequent changes in cargo distance transported, the current model calculation uses a weighted average travel cost across engine types within a vehicle and cargo type category. This results in changes to average distance traveled across all engine types, which can lead to some weird outcomes. For example, a policy that promotes EVs, like a subsidy, causes some increased emissions in early years because the change in emissions from the lower average cost of driving applied to all LDV passenger vehicles exceeds the emissions reductions from switching to EVs. To accurately capture this effect, the change in annual distance traveled should be calculated down to the engine type level.

jrissman commented 4 years ago

This was a little tricky, but I implemented this in commit c3d0145. However, even after tracking changes in the cost of driving down to the vehicle technology (engine type) level, we still see the effect where an EV subsidy can very slightly raise emissions in early years. I'll need to investigate more to try to identify the reason for this model behavior.

jrissman commented 4 years ago

Note also that as a side-effect of this change, it is now possible to calibrate trans/SoCDTtiNTY down to the vehicle technology level, which may improve accuracy. Rewritten, more detailed directions are now on the Transportation - Main sheet near this variable. (I didn't actually change the calibration data, only subscripted existing data by vehicle technology.)

jrissman commented 4 years ago

I've looked into this pretty carefully today. The effect we're talking about here is tiny and hence is subject to possible rounding errors or other minor issues, so it's not easy to tease out the real effect. But:

The reason for the increase in emissions is in the "Tracking Fleet Avg Fuel Economy" section of "Transportation - Main." An EV policy (I'm testing with a 30% EV mandate on passenger LDVs in 2050) causes fewer new gasoline passenger LDVs to be purchased in early years. 2021 is the first year where a difference shows up. Since there are fewer new gasoline passenger LDVs, the "Percentage of Vehicle Stock New This Year" is lower. New gasoline passenger LDVs have better fuel economy than the fleet average, as specified in "Percentage Difference in New Vehicle vs Fleet Avg Fuel Economy." When less of the fleet is new, the new technology filters in more slowly, so gasoline LDV fleet average fuel economy doesn't improve as fast.

So, "Fleet Avg Fuel Economy" for gasoline LDVs is supposed to be worse in the policy case here - that's not an error. This is because there are fewer new gasoline LDVs, so the average age of the fleet is older.

But why do emissions go up? One would expect that the poorer fleet average fuel economy for gasoline LDVs should be more than offset by there being fewer gasoline LDVs. I can't see anything we're doing in the model structure that would cause the smaller number of vehicles not to more-than-compensate for the change in fleet average fuel economy. It may be an input data issue. Remember that we simply project backward to get trans/BHNVFEAL BAU Historical New Vehicle Fuel Economy After Lifetime, and even the vehicle lifetimes and start year vehicle counts have some error in them. We're looking at an effect that's at least two orders of magnitude smaller than anything we usually pay attention to, and our input data themselves aren't perfected to this level of accuracy. It may not be possible to accurately model behavior on a microscale when the data are only accurate to a less granular level.

Given the fundamental limits of input data accuracy, I don't know that it is worth trying to mitigate this effect in the structure as it exists today.

If you need more accuracy, the recommended approach would be to move to a cohort survival-based vehicle tracking methodology, where we have a number of surviving vehicles of each vintage (produced in each model year, and in specific years prior to model start). In that case, we could calculate a fleet average fuel economy explicitly every year directly from the cohort data, which should avoid issues like this. (A vehicle vintage/cohort tracking system would also improve accuracy in other ways, such as allowing us to retire vehicles of each vintage at a variety of ages, following a vehicle survival curve, but it would impose more difficult input data requirements.)

I'm closing this issue, as the effect is so imperceptibly small that I don't think further work on it is warranted right now, and a vehicle vintage/cohort system would be a separate project and should be tracked under a separate GitHub issue, if we someday decide to move ahead with that.