* Value-added modelling is a common approach to use to try to infer the "quality" or "value" of inputs.

* In education, these methods have become quite popular politically and academically.

* But in a sense using these methods in education is an abstraction.

* Let us first in order to grasp how value added methods were first developed think of a production example.

* Imagine that you are manufacturing tablet computers (iPad).

* On each step of the production process there is a different "value" that is added to the process as a result the particular inputs.

* In order to conceptualize this think of the product at each stage being worth a certain value that is then bought buy the next person in the manufacturing chain.

* However, you do not want to use the market to assemble the tablet computers.

* You want to assemble them in house.

* Therefore you want to figure out a way of inferring how much value each input has.

* To do this, imagine that run a series of non-market valuations after each stage of the production process to infer a current price.

* Then you take the change in that market price as a measure of the value of those inputs.

set seed 11

* Let's do this:

clear

set obs 10

* 10 different companies

gen comp_id = mod(_n-1,10)+1

label var comp_id "Company ID"

* Each of the companies has a different assembly line structure.

* Let's imagine that at each stage that company's structure ads a constant amount of value to all products.

gen comp_fe = runiform()

label var comp_fe "The fixed effect (specific to that company) added to each product each stage"

* Now let's imagine that each company produces 10 different products (over the sample time)

expand 10

sort comp_id

* Generate a list of product ids

gen prod_id = _n

label var prod_id "Product ID"

* Each product line has some inherent design component that makes it more or less valued at each progressive stage than other products.

gen prod_fe = rnormal()/2 + 1/4

label var prod_fe "Product Fixed Effect"

* Now imagine that there are 5 stages of production for each product

expand 5

bysort prod_id: gen prod_stage = _n

* You have different stages with the initial stage product idea.

* Stage 1 gather raw materials

* Stage 2 manufacture components

* Stage 3 assemble components (probably in China)

* Stage 4 ship product

* Stage 5 sell product at the retail locations

label var prod_stage "Production stage"

* Now imagine also that there are 100 contractors in tablet computer production market.

* These contractors get random contracts as to which product to work on.

* This is what we really want to know.

* How good are these contractors at "adding value" to the product.

* This is the trickiest part of the code so far.

* First we need to generate the contractors.

* Keep the data that we have generated so far:

preserve

* There are several ways of doing this.

* I will use the many:1 merge command to accomplish this task.

clear

* Imagine that our 100 contractors are subsidiaries of 5 different umbrella companies.

set obs 5

gen cont_company_id=_n

label var cont_company_id "Contracting company ID"

* Each of these companies has a different work ethic

gen cont_company_fe = rnormal()*.25

label var cont_company_fe "Contracting company effectiveness"

* Each of the contracting companies has 20 contractors they manage.

expand 20

gen cont_id = _n

label var cont_id "Contractor ID"

gen cont_fe = rnormal() + 1

label var cont_fe "Contractor effectiveness"

* Now we will save the contractor information to a temporary data file

save "contractor.dta", replace

restore

* Let us first assign contractor IDs randomly:

gen cont_id=int(runiform()*100+1)

* Now let's merger in the contractor data

merge m:1 cont_id using "contractor.dta"

drop _merge

* Let us think that whenever a different product is developed there is some unobserved component that adds or subtracts random value from a product line independent of all other inputs at each stage.

gen rand_effect = rnormal()

label var rand_effect "Random idiosyncratic production effect unique to each product at each stage"

* In other words the error component

* Finally, imagine that at each stage there is an "average" amount of value added at that stage.

* We will use another merge command to do this:

preserve

clear

set obs 5

gen prod_stage=_n

gen stage_fe = runiform()*2

label var stage_fe "Production stage fixed effect"

save "Stage.dta", replace

restore

merge m:1 prod_stage using "Stage.dta"

drop _merge

* Let us first add on a production stage zero representing the initial "value" of the product idea.

* This is a little tricky to do.

expand 2 if prod_stage == 1, generate(expand_indicator)

* I will expand the data for production stage 1 and indicate the created data with expand indicator.

replace prod_stage = 0 if expand_indicator==1

drop expand_indicator

* Now I want to make sure that stage 0 production is not done by any contractors so there is only the company effect and product effect.

foreach v in cont_id cont_company_id cont_company_fe cont_fe rand_effect stage_fe {

replace `v' = 0 if prod_stage == 0

}

*****

* Now let us start to generate the values of the products at each stage.

* This is a cumulative model ie. Value Added

* So in effect y=lambda*y[t-1] + XB + v

* To begin with we will generate the initial value of y.

gen value=abs(rnormal()) + prod_fe + comp_fe if stage==0

* First let us double check to make sure our data is sorted properly.

sort prod_id prod_stage

* This is the retention value of a product from each previous stage.

* If lambda is low then it means that once the product is processed it cannot be used in the previous production stage.

* If lambda is high then it means that the previous value is retained plus any value added of progressive stages.

gen lambda=.95

* Now let us generate the cumulative value added data.

replace value=lambda*value[_n-1] + prod_fe + comp_fe + cont_fe +cont_company_fe + stage_fe + rand_effect if stage>0

**** Simulation END

bysort prod_stage: sum value

* We can see that on average at each production stage there is an increasing value of the product.

* However, we can also see that the variance in values increases as the value increases.

* This is because of the cumulative variance effect of the various components combined with the high retention value of each previous stage (lambda).

* Now that we have data generated through a Value-added simulation we can start testing different value added estimators.

* That will be for a later post!

## No comments:

## Post a Comment