2017-10-10 2 views
0

Ich versuche, etwas in Stata oder R. zu tunErste ein lognormal von einigen Perzentile

Ich habe Perzentile einer Lohnverteilung (Perzentile 10, 25, 50, 75, 90) und ich möchte eine lognormal schätzen Verteilung, um sie zu passen. In Stata gibt es einen Befehl lognfit, der logarithmisch zu Einheitsdaten, aber nicht zu Prozentpunkten passt.

Lohnt es sich, Statas gmm Befehl zu verwenden, meine fünf Datenpunkte zu verwenden, um die zwei Parameter des lognormal als ein überschätztes System zu schätzen?

+0

Warum erwähnen Sie R, wenn das eine Stata-Frage zu sein scheint? – lebelinoz

+0

R-Tag wiederhergestellt. –

Antwort

0

Hier ist eine Stata-Lösung.

Ich überlasse anderen die Attraktionen von gmm. Sie können die protokollierten Quantile auch in den entsprechenden Quantilen einer Standardnormalverteilung zurückentwickeln. Hier ist Code in einem Experiment eingebettet, um zu sehen, wie gut die Methode funktioniert. Wir erzeugen 1000 Abtastungen jeder Größe 1000 aus einer logarithmischen Norm, die eine Normale mit einer Potenz von 1 und SD 2 ist. Hier ist es rangestat, die alle Regressionen macht, eine für jede Probe.

clear 
set obs 1000000 
set seed 1066 
set scheme s1color 

gen y = exp(rnormal(1, 2)) 
egen sample = seq(), block(1000) 
collapse (p10) y10=y (p25) y25=y (p50) y50=y (p75) y75=y (p90) y90=y, by(sample) 

reshape long y, i(sample) j(p) 
gen pred = invnormal(p/100) 
gen log_y = log(y) 

* must install from SSC using: ssc install rangestat 
rangestat (reg) log_y pred, interval(sample 0 0) 

qnorm b_cons if p==10, name(G1) yli(1) ytitle("") subtitle(mean known to be 1) yla(, ang(h)) 
qnorm b_pred if p==10, name(G2) yli(2) ytitle("") subtitle(SD known to be 2) yla(, ang(h)) 

graph combine G1 G2 

enter image description here

+0

Vielen Dank für ihre Antworten, die ich schätze, da ich neu in diesem Forum bin. –

0

Vielen Dank für Ihre Antworten.

Ich habe mit beiden Programmen versucht. In R zum Beispiel war ich mit dem Paket library(rriskDistributions), speziell etwas wie

## example with only two quantiles 

    q <- stats::qlnorm(p = c(0.025, 0.975), meanlog = 4, sdlog = 0.8) 

    old.par <- graphics::par(mfrow = c(2, 3)) 
    get.lnorm.par(p = c(0.025, 0.975), q = q) 
    get.lnorm.par(p = c(0.025, 0.975), q = q, fit.weights = c(100, 1), 
    scaleX = c(0.1, 0.001)) 
    get.lnorm.par(p = c(0.025, 0.975), q = q, fit.weights = c(1, 100), 
    scaleX = c(0.1, 0.001)) 
    get.lnorm.par(p = c(0.025, 0.975), q = q, fit.weights = c(10, 1)) 
    get.lnorm.par(p = c(0.025, 0.975), q = q, fit.weights = c(1, 10)) 
    graphics::par(old.par) 

In Stata ich mit GMM bin versucht, basierend auf https://blog.stata.com/2015/12/03/understanding-the-generalized-method-of-moments-gmm-a-simple-example/

matrix I = I(1) 

    mat lis I 

    gmm ((y - exp({xb: percentile_10 percentile_20 percentile_25 
    percentile_30 percentile_50 percentile_60 percentile_75 
    percentile_90}))/exp({xb:})), instruments(percentile_10 
    percentile_20 percentile_25 percentile_30 percentile_50 percentile_60 
    percentile_75 percentile_90) twostep 

Hier ist ein erster Versuch GMM zu verwenden, natürlich Ich vermisse etwas.

Die Antwort von Nick Cox war großartig. Ich werde versuchen, meine Daten mit diesem Ansatz anzupassen.

Verwandte Themen