*! version 1.01 94/09/12 STB-26: snp6.1 program define kerntria version 3.0 *This program calculates a simple density estimator of a *series of values according to the Triangle weight function. *It is based on the equations described by Haerdle (1991) and *Scott (1992). This version considers only 50 equally spaced points *as suggested by Chambers, et al. (1983). *The interval has been adjusted too. capture confirm existence `1' capture confirm number `2' capture confirm new variable `3' `4' if _rc~=0 { di "syntax: kerntria varname halfwidth densivar midpoivar" exit} tempvar fkx count xo z kz sums h nuobs quietly { gen `nuobs'=_N gen `fkx'=0 gen `h'=`2' gen `count'=1 gen `xo'=0 gen `sums'=0 gen `z'=0 gen `kz'=0 tempvar maxval minval range inter midval summ `1' gen `maxval'=_result(6)+`h'+((_result(6)-_result(5))*0.1) gen `minval'=_result(5)-`h'-((_result(6)-_result(5))*0.1) gen `range'=`maxval'-`minval' gen `inter'=`range'/50 gen `midval'=sum(`inter')+`minval'+`inter'/2 noi di "WORKING WITH EACH VALUE. PLEASE BE PATIENT" set more 1 while `count'<=50 { noi di "Calculating fk(x) number = " `count' replace `xo'=`midval'[`count'] replace `z'=(`xo'-`1')/`h' replace `kz'=(1-abs(`z')) if abs(`z')<=1 replace `sums'= sum(`kz') replace `fkx'=(1/(`nuobs'*`h'))*`sums'[_N] if _n==`count' replace `kz'=0 replace `count'=`count'+1 } replace `fkx'=. if _n>50 replace `midval'=. if _n>50 rename `fkx' `3' rename `midval' `4' noi di "DONE. THANKS FOR YOUR PATIENCE" } end