Hi all!
I have the following dilemma. I would like to create variables such that:
in this step,
I would like to perform for sales and stdunits (I replace `k' just with sales but this remains valid for stdunits too):
and for "price
(hence price instead of tasso_crescita_`k'_prod, no variable recalls_sales in the reg with price and mean_gr_rate_atc2_`k' defined as mean(price), by(idatc2 Year) for price and mean(tasso_crescita_`k'_prod), by(idatc2 Year)) for sales and stdunits).
I am running a loop through local expl "sales stdunits price". To discriminate the "price" and "sales, stdunits" regressions I am using "cond()" to define variables, but it does not seem to work (I am doing something wrong). Specifically:
Am I doing something wrong? (Specifically in the steps of variables definition, e.g.
or
)
Thank you very much!
Federico
I have the following dilemma. I would like to create variables such that:
- if a local takes on a certain name (i.e. price) the variable is created, otherwise it is not.
- if a local takes on a certain name (i.e. price) the variable takes on a value otherwise another one.
Code:
local expl "sales stdunits price"
Code:
xtdata tasso_crescita_`k'_prod log_sales_lag `rec'_lag1 `rec'_lag2 `rec'_lag3 dumYear_2005 dumYear_2006 dumYear_2007 dumYear_2008 dumYear_2009 dumYear_2010 dumYear_2011 dumYear_2012 dumYear_2013 dumYear_2014 dumYear_2015 mean_gr_rate_atc2 ageprodcat4 ageprodcat3 ageprodcat2 ageprodcat1 recalls_`k' newmolfirm newmolmarket, fe clear reg tasso_crescita_`k'_prod log_`k'_lag mean_gr_rate_atc2 `rec'_lag1 `rec'_lag2 `rec'_lag3 mean_gr_rate_atc2 recalls_`k' ageprodcat1 ageprodcat2 ageprodcat3 ageprodcat4 newmolfirm newmolmarket dumYear* estimates store reg_product_`rec'_`k'
Code:
xtdata tasso_crescita_sales_prod log_sales_lag `rec'_lag1 `rec'_lag2 `rec'_lag3 dumYear_2005 dumYear_2006 dumYear_2007 dumYear_2008 dumYear_2009 dumYear_2010 dumYear_2011 dumYear_2012 dumYear_2013 dumYear_2014 dumYear_2015 mean_gr_rate_atc2 ageprodcat4 ageprodcat3 ageprodcat2 ageprodcat1 recalls_sales newmolfirm newmolmarket, fe clear reg tasso_crescita_sales_prod log_sales_lag mean_gr_rate_atc2 `rec'_lag1 `rec'_lag2 `rec'_lag3 mean_gr_rate_atc2_sales recalls_sales ageprodcat1 ageprodcat2 ageprodcat3 ageprodcat4 newmolfirm newmolmarket dumYear* estimates store reg_product_`rec'_sales
Code:
xtdata price log_sales_lag `rec'_lag1 `rec'_lag2 `rec'_lag3 dumYear_2005 dumYear_2006 dumYear_2007 dumYear_2008 dumYear_2009 dumYear_2010 dumYear_2011 dumYear_2012 dumYear_2013 dumYear_2014 dumYear_2015 mean_gr_rate_atc2 ageprodcat4 ageprodcat3 ageprodcat2 ageprodcat1 newmolfirm newmolmarket, fe clear reg price log_sales_lag mean_gr_rate_atc2 `rec'_lag1 `rec'_lag2 `rec'_lag3 mean_gr_rate_atc2_price ageprodcat1 ageprodcat2 ageprodcat3 ageprodcat4 newmolfirm newmolmarket dumYear* estimates store reg_product_`rec'_sales
I am running a loop through local expl "sales stdunits price". To discriminate the "price" and "sales, stdunits" regressions I am using "cond()" to define variables, but it does not seem to work (I am doing something wrong). Specifically:
Code:
foreach rec of local recall { foreach k of local expl { *PRODUCT use "/Users/federiconutarelli/Desktop/PhD/Lavoro_Riccaboni/DATi_USA/Pharma_project_2019 /abnormal_values/DB_product_`rec'_aggregation_nomiss.dta", clear * STEP 3: generare AV_t = y_it - E(y_it): eststo clear xtset idpr Year rename (tot_sales) (sales) gen `k'_lag = L.tot_`k' egen tasso_crescita_`k'_prod = ln(`k' - `k'_lag) gen log_`k' = ln(`k') gen recalls_lagged = L.`rec' gen log_`k'_lagged = L.log_`k' egen recalls_`k' = cond(`k'=="price",., recalls_lagged*log_`k'_lagged) replace ageprod = ageprod + 1 gen ageprod_cat = . replace ageprod_cat = 1 if ageproduct <= 5 replace ageprod_cat = 2 if ageproduct >= 6 & ageproduct <= 10 replace ageprod_cat = 3 if ageproduct >= 11 & ageproduct <= 30 replace ageprod_cat = 4 if ageproduct >= 31 & ageproduct < . tab ageprod_cat*, gen(ageprodcat) *Creating average growth rate of sales in ATC2 market: egen mean_gr_price = mean(price), by(idatc2 Year) egen mean_gr_rateatc2_`k' = cond(`k'=="price",mean_gr_price, (mean(tasso_crescita_`k'_prod), by(idatc2 Year))) *save "/Users/federiconutarelli/Desktop/DB_product_`rec'_`k'_nomiss.dta", replace * ESTIMATES WITH RECALLS GENERALI: gen log_`k'_lag = L.log_`k' gen `rec'_lag1 = L.`rec' gen `rec'_lag2 = L2.`rec' gen `rec'_lag3 = L3.`rec' xi i.Year, pre(dum) * E(Y-it): local vart su ritiri, meanonly quietly forval j = 1/`r(max)' { local vart `vart' rescaled`j' } local keep `vart' ritiri tasso_crescita_`k'_prod idproduct dumYear_2005 dumYear_2006 dumYear_2007 dumYear_2008 dumYear_2009 dumYear_2010 dumYear_2011 dumYear_2012 dumYear_2013 dumYear_2014 dumYear_2015 log_`k'_lagged log_`k' `rec' `rec'_lag1 `rec'_lag2 `rec'_lag3 mean_gr_rate_atc2 recalls_`k' ageprodcat1 ageprodcat2 ageprodcat3 ageprodcat4 newmolfirm newmolmarket Year ds local vars `r(varlist)' local tokeep : list vars & keep keep `tokeep' *HERE I WOULD LIKE TO DISCRIMINATE BETWEEN "price" REGRESSION AND "sales stdunits" REGRESSIONS! local keep_no_rescaled tasso_crescita_`k'_prod idproduct dumYear_2005 dumYear_2006 dumYear_2007 dumYear_2008 dumYear_2009 dumYear_2010 dumYear_2011 dumYear_2012 dumYear_2013 dumYear_2014 dumYear_2015 log_`k'_lag log_`k' `rec'_lag1 `rec'_lag2 `rec'_lag3 mean_gr_rate_atc2 recalls_`k' ageprodcat1 ageprodcat2 ageprodcat3 ageprodcat4 newmolfirm newmolmarket Year * Keeping the observations that are not missing: foreach v of var `keep_no_rescaled' { drop if missing(`v') } gen id_unico = _n egen y_`k' = cond(`k'=="price",price,tasso_crescita_`k'_prod) save "/Users/federiconutarelli/Desktop/PhD/Lavoro_Riccaboni/DATi_USA/Pharma_project_2019 /abnormal_values/DB_product_`rec'_`k'_nomiss.dta", replace xtdata y_`k' log_sales_lag `rec'_lag1 `rec'_lag2 `rec'_lag3 dumYear_2005 dumYear_2006 dumYear_2007 dumYear_2008 dumYear_2009 dumYear_2010 dumYear_2011 dumYear_2012 dumYear_2013 dumYear_2014 dumYear_2015 mean_gr_rateatc2_`k' ageprodcat4 ageprodcat3 ageprodcat2 ageprodcat1 recalls_`k' newmolfirm newmolmarket, fe clear reg y`k' log_`k'_lag mean_gr_rate_atc2 `rec'_lag1 `rec'_lag2 `rec'_lag3 mean_gr_rateatc2_`k' recalls_`k' ageprodcat1 ageprodcat2 ageprodcat3 ageprodcat4 newmolfirm newmolmarket dumYear* estimates store reg_product_`rec'_`k' clear } }
Code:
egen mean_gr_price = mean(price), by(idatc2 Year) egen mean_gr_rateatc2_`k' = cond(`k'=="price",mean_gr_price, (mean(tasso_crescita_`k'_prod), by(idatc2 Year)))
Code:
egen recalls_`k' = cond(`k'=="price",., recalls_lagged*log_`k'_lagged)
Thank you very much!
Federico
Comment