Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Estimate firm’s expected credit rating using multiple discriminant analysis (MDA)

    Hi all,

    For my research thesis I am trying to estimate a firm’s expected credit rating using multiple discriminant analysis (MDA) in Stata.

    There doesn't seem to be many examples which I can follow. I have been reading through the Stata multivariate statistics reference manual but I'm still unclear as to how to best approach this.

    Can any with experience in multiple discriminant analysis (MDA) in Stata (or alternatives) help?

    A few details;

    The following ordered probit model to estimate a firm’s expected credit rating,

    Click image for larger version

Name:	equation.png
Views:	3
Size:	2.4 KB
ID:	1341435
    • RATING is an ordinal variable taking on values from 1 to 16, representing Standard & Poor’s long-term credit ratings (from AAA to B-);
    • Xit is a vector of control variables which are important determinants of expected credit ratings. I’m using firm size, profitability, operating risk, growth/investment opportunities, asset tangibility, and market valuation;
    • The proxy for expected credit ratings is constructed using the rating category with the highest fitted probability;
    • The equation is estimated cross-sectionally by year to avoid potential lookahead bias.
    • The expected rating proxy results in a distribution of deviations of actual credit ratings from expected credit ratings;
    • it regards panel data from fiscal year 1995 till 2015..
    Which commands can I best use to resolve the above mentioned problem?

    Looking forward to your opinions

  • #2
    MDA and ordered logit/ordered probit are not exactly the same. It looks like you want oprobit or ologit - the dv is ordered but not ratio. The rhs variables are "causing" the rating.

    The remainder of the questions are not clear. You can certainly use a by statement to do oprobit or ologit by year or you can set up a loop over years.

    e.g.,: Forvalues y=1995/2015 {
    ologit Rating x1 x2 if year==`y'
    estimates store output`y'
    }

    When you loop over years, you can save the results (estimates store ) and then use outreg2 or some such routine to make your tables.

    I don't know what you are doing with "proxy for expected credit rating" - you will be able to do all kinds of predictions using predict and margins after oprobit or ologit. Look in the documentation - for many routines the Stata documentation includes a section on the routine, and then a section on specific things you can do post estimation. e.g., ologit postestimation.



    Comment


    • #3
      Hi Phil,

      Thanks a lot for your input!

      So, if I understand it correctly by using 'estimates store' STATA will estimate a 'Rating' based on dependent variables x1 and x2 for each 'y' year and display it in a seperate column named 'output'?

      When I apply this to my sample STATA results for 'output' comes back as all zeros. Do you have an idea what I might be doing wrong?

      Comment


      • #4
        Hi Phil,

        I'm using a probit model to estimate long term credit ratings and incountering difficulty getting an estimated credit rating in my output.

        I've attached my code below.

        Problems I'm having are;
        - Why does th model only recognize the number of the variable sdlticrs (#1 #2.. ..#6) and not the ratings themselves (1 2 3 … 16)?;
        - Why is the model only recognizing 8 ratings while there are 16?;
        - In my output the code adds estimator columns (column AU till FB). I’m not sure how to interpret these. I want it to generate 1 column with 1 expected credit rating for each sic2id.

        Hopefully you can help me with these issues.

        Looking forward to your reply.

        Code:
        sum sic2id
        scalar max2=r(max)
        local k=max2
        set more off
        forvalues i=1(1)`k'{
        qui oprobit sdlticrs sizebysale profit rd sga i.rdind tang mtb if sic2id==`i'
            eststo oprobit
                foreach o in #1 #2 #3 #4 #5 #6 {
                    qui margins, pr (outcome(`o')) post 
                    eststo, title(Outcome `o')
                    estimates restore oprobit
                }
            eststo drop oprobit
            esttab using probit.csv, se nostar mtitles nonumbers nobase title(Predicted long term credit rating `i') append obslast
        di `i' " / " `k'
        }

        Comment

        Working...
        X