// Generate data
clear
set seed 1
set obs 500
generate e = rnormal(0,10)
generate x = rnormal(0,2)
generate y = (-2*x + 2*(x*x) + e)
regress y c.x##c.x
matrix list e(b) // Find out names of coefficients
// Plot regression coefficients
coefplot, xline(0) ///
xtitle(" " "Regression coefficients and 95% CI's") ///
drop(_cons) scheme(s1mono) ///
coeflabels(x = "x" c.x#c.x = "x{char 178}") ///
ciopts(recast(rcap)) ///
headings(x = "U-shaped effect of x") ///
name(coeffs, replace)
// Calculate bend
local bend = round(-_b[x]/(2*_b[c.x#c.x]), .01)
display "b1 = " round(_b[x], .01) _newline ///
"b2 = " round(_b[c.x#c.x], .01) _newline ///
"-b1/(2*b2) = " `bend'
predict yhat // Generate predicted values
// Plot results
twoway (line yhat x, sort(x)) ///
(scatter y x) ///
, legend(off) ///
xline(`bend') ///
ytitle("y") ///
xtitle("x") ///
name(scatter, replace) ///
title("Inflection point at `bend'")