Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从某些百分位数得到对数正态分布_R_Logging_Stata_Distribution_Normal Distribution - Fatal编程技术网

R 从某些百分位数得到对数正态分布

R 从某些百分位数得到对数正态分布,r,logging,stata,distribution,normal-distribution,R,Logging,Stata,Distribution,Normal Distribution,我想在Stata或R做点什么 我有工资分布的百分位数(百分位数10,25,50,75,90),我想估计一个对数正态分布来拟合它们。在Stata中,有一个命令lognfit,它将对数正态分布拟合到单位记录数据,但不拟合到百分位点 是否值得使用Stata的gmm命令,使用我的五个数据点来估计作为过度识别系统的对数正态分布的两个参数?这里是一个Stata解决方案 我把gmm的魅力留给了其他人。您还可以将记录的分位数回归到标准正态分布的相应分位数上。下面是嵌入在实验中的代码,以查看该方法的工作情况。我们

我想在Stata或R做点什么

我有工资分布的百分位数(百分位数10,25,50,75,90),我想估计一个对数正态分布来拟合它们。在Stata中,有一个命令
lognfit
,它将对数正态分布拟合到单位记录数据,但不拟合到百分位点


是否值得使用Stata的
gmm
命令,使用我的五个数据点来估计作为过度识别系统的对数正态分布的两个参数?

这里是一个Stata解决方案

我把
gmm
的魅力留给了其他人。您还可以将记录的分位数回归到标准正态分布的相应分位数上。下面是嵌入在实验中的代码,以查看该方法的工作情况。我们根据对数正态分布生成1000个样本,每个样本的大小为1000,对数正态分布的平均值为1,标准差为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

这里有一个Stata解决方案

我把
gmm
的魅力留给了其他人。您还可以将记录的分位数回归到标准正态分布的相应分位数上。下面是嵌入在实验中的代码,以查看该方法的工作情况。我们根据对数正态分布生成1000个样本,每个样本的大小为1000,对数正态分布的平均值为1,标准差为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

谢谢大家的回复

我尝试了两个程序。例如,在R中,我使用包
库(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)
这是第一次尝试使用GMM,当然我遗漏了一些东西


尼克·考克斯的回答很好。我将尝试用这种方法来拟合我的数据。

谢谢大家的回答

我尝试了两个程序。例如,在R中,我使用包
库(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)
这是第一次尝试使用GMM,当然我遗漏了一些东西

尼克·考克斯的回答很好。我将尝试用这种方法来拟合我的数据。

Answer.Answer.Answer.Answer。