Source code for utility_modules.firm_calibration

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
SETS THE FIRM LATENT VARIABLES TO MAINTAIN THE EX-ANTE FIRM STATE.
THE LATENT VALUE GIVES CHOICE 0 THE LOWEST COST STATE BY THE AMOUNT
OF maintain_offer_delta, maintain_nonoffer_delta, aintain_offerPT_delta 
"""
#PARAMETERS
import pandas as pd
[docs]class Firmcal(): def __init__(self,offer_threshold,noffoer_threshold,ptoffer_threshold,firm_choice): self.maintain_offer_delta=offer_threshold self.maintain_nonoffer_delta=noffoer_threshold self.maintain_offerPT_delta=ptoffer_threshold self.firm_choice=firm_choice #import firm_choice
[docs] def create_firm_latent(self): # FIND WHERE FIRM CHOICE IS NOT EX-ANTE. SAVE AS firms_needing_latent # SAVE JUST THE NECESSARY COLUMNS firms_needing_latent=self.firm_choice[ (self.firm_choice['chosen_choice']==1) &\ (self.firm_choice['fake_firm']==0 ) &\ (self.firm_choice['choice']!=0 )] firms_needing_latent=firms_needing_latent.loc[:,['firm_id','total_cost','offer','prev_offer']] # MERGE IN THE tot_util_exante INTO firms_needing_latent firms_exante_util=self.firm_choice[(self.firm_choice['fake_firm']==0 ) &\ (self.firm_choice['choice']==0 )].copy() firms_exante_util['exante_total_cost']=firms_exante_util['total_cost'] firms_exante_util=firms_exante_util.loc[:,['firm_id','exante_total_cost']] firms_needing_latent=pd.merge(firms_needing_latent,firms_exante_util,on='firm_id') #CALCULATE THE AMOUNT OF LATENT VALUES firms_needing_latent['delta']=self.maintain_nonoffer_delta firms_needing_latent.loc[firms_needing_latent['prev_offer']==True,'delta'] = self.maintain_offer_delta firms_needing_latent.loc[(firms_needing_latent['prev_offer']==True) &\ (firms_needing_latent['offer']==True),'delta'] = self.maintain_offerPT_delta firms_needing_latent['latent']=(1-firms_needing_latent['delta'])*firms_needing_latent['total_cost'] \ -firms_needing_latent['exante_total_cost'] # CREATE LATENT FILE WITH firm_id, choice, latent. FOR NOW, JUST HAVE LATENT # FOR THE DEFAULT CHOICE. AND EXPORT IT. firms_needing_latent=firms_needing_latent.loc[:,['firm_id','latent']] firm_latents=self.firm_choice[ (self.firm_choice['chosen_choice']==1) &\ (self.firm_choice['fake_firm']==0 ) ] firm_latents=firm_latents.loc[:,['firm_id']] firm_latents=pd.merge(firm_latents,firms_needing_latent,how='left',on='firm_id') firm_latents.latent.fillna(0,inplace=True) return firm_latents
# EXPORT TO INDIVIDUAL DATA FOLDER