2017-10-10 693 views
0

我試圖做一些事情在Stata或R.獲得對數正態分佈一些百分位數

我有一個工資分配(百分10,25,50,75,90)的百分位數,我想估計對數正態分佈分配以適應它們。在Stata中有一個命令lognfit,它適合單位記錄數據的對數正態分佈,但不適用於百分點。

是否值得使用Stata的gmm命令,使用我的5個數據點來估計對數正態分佈的兩個參數,作爲過度識別的系統?

+0

爲什麼你提到R時,這似乎是一個Stata問題? – lebelinoz

+0

R標記已恢復。 –

回答

0

這是一個Stata解決方案。

我給別人留下的景點gmm。你也可以在標準正態分佈的相應分位數上回歸記錄的分位數。這裏是嵌入到實驗中的代碼,以瞭解該方法的工作情況。我們從對數正態中產生了1000個樣本,每個樣本的大小爲1000,這是一個平均值爲1且SD 2取冪的正態分佈。這裏是rangestat,它可以完成所有的迴歸,每個樣本一個迴歸。

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

謝謝大家的回答我很欣賞,因爲我是這個論壇的新成員。 –

0

謝謝大家的響應。

我正在嘗試這兩個程序。在該R例如我用的是包library(rriskDistributions),特別是像

## 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) 

在Stata我基於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 

下面是使用GMM,當然第一次嘗試用GMM嘗試我錯過了一些東西。

尼克考克斯的答案很棒。我會嘗試用這種方法來適合我的數據。