Changes

Jump to navigation Jump to search
675 bytes added ,  13:47, 21 September 2020
no edit summary
{{Project|Has project output=Tool|Has sponsor=McNair ProjectsCenter
|Has title=Matching LBOs (Julia)
|Has owner=James Chen,
|Has keywords=Tool
|Has project status=ActiveComplete
}}
[[Leveraged Buyout Innovation (Academic Paper)]]
[[Leveraged Buyout Innovation (Academic Paper)]]
==Instructions for running matching code==
===Inputs and Outputs===
*Input: tab delimited file "E:/McNair/Projects/LBO/Clean/STATApredictLBOclean.txt"
**Positive integers identify pairs matched, negative integers identify matched non-LBOs in years other than the match, -0.1 identifies LBOs that failed to match to any non-LBOs under constraints provided
===Running Code===
*Open Julia command line in administrator mode
*Change directory to E:\McNair\Projects\LBO\New matching\
cd("E:/McNair/Projects/LBO/New\ matching")
 
*Run script LBOmatchscript.jl
include("LBOmatchscript.jl")
 
==Options==
*Run There are a few options that can be customized in the script LBOmatchscriptbefore running. Getting the code into a more user-friendly form is a WIP. In fact, some parts might be difficult, if not impossible, to write in a more accessible way.jl
===Options===
There are a few things that can be customized in the script. Getting this into a more user-friendly form is a WIP. In fact, some parts might be difficult, ===Specify input file (if not impossible, to write in a more accessible way.using different file than default)===
If matching using different file, modifyline Line 12: df = readtable("FilepathE:/McNair/Projects/LBO/Clean/STATApredictLBOclean.txt", separator = '\t');
(Not implemented yet: More user-friendly way to input restrictions)===Specify which observations are valid for matching. ===*For now, we filter out all firms that were never granted a single patent in the period 1970-2015*For firms that LBO, we also drop their observations in all other years from the list of candidates to match to other LBOs*See inline comments in code for detailed description of what matchfilter2, matchfilter4, etc. represent
Lines 38-48
#Splitting dataset into LBO and non-LBO firms
#Note that we also filter out all firms that were never granted a single patent in the period 1970-2015
LBOs = @from i in df begin
@where i.everlbo == 1 && (i.matchfilter4 == 1 ||i.matchfilter2b == 1) && i.lboentry == 1
@select i
@collect DataFrame
end
nonLBOs = @from i in df begin
@where i.everlbo == 0 && (i.matchfilter4 == 1 ||i.matchfilter2b == 1)
@select i
@collect DataFrame
end
===Specify propensity score type to use for matching===*Options are: logitp (panel logit), probitp (panel probit), or Cox proportional hazard (hr)*Alternatively, can use the above options, with regressions performed using winsorized values of regressors (trimmed at 1st and 99th percentiles): logitpw, probitpw, hrw
Options are: logitp (panel logit), probitp (panel probit), or Cox proportional hazard (hr)Alternatively, can use the above, with regressions performed using winsorized values of regressors (trimmed at 1st and 99th percentiles):logitpw, probitpw, hrwline Line 58: mscore = :logitpw;
===Specify whether matching priority should be deterministic or random. ===*If deterministic, priority goes to lower GVKEYline 61:randoption = 0;
Specify additional constraints on valid matches (modify code within function mcexpr as desired)Line 61:For example, default code forces matches to be within the same industry group, within the same decade, and with patent stocks within +/- 20% of LBO firm. randoption = 0;
lines 69-81: ===Specify additional constraints on valid matches (modify code within function mcexpr(ias desired)===*For example, default code forces matches to be within the same industry group, within the same decade, and with patent stocks within +/- 20% of LBO firm.
Lines 69-81:
function mcexpr(i)
#note that the below syntax is the simplest way to store a long string over multiple lines
#(i.e., appending additional characters per line)
#Also, note that order of operations forces us to put each condition in parentheses
 
mcriteria = "nonLBOs[:matchsubset] = (nonLBOs[:industrygroup3].== LBOs[$i,:industrygroup3])"
mcriteria = mcriteria * " .* (nonLBOs[:decade].==LBOs[$i,:decade])"
mcriteria = mcriteria * " .* (nonLBOs[:matchpair] .== 0 )"
return eval(parse(mcriteria))
end

Navigation menu