在Stata12工作时,我需要绘制5个直方图,每个矩阵对应一个矩阵MAT
,其中:
mata: MAT = uniform(1000, 5)
我理解一种可能性是使用mm_histogram()
来获得直方图的每个区间的中心,宽度和密度。对于第一列,我们有:
mata: HIST_DAT = mm_histogram(MAT[.,1])
但后来我不知道如何绘制数据(在Stata或Mata中)。
非常感谢您的任何建议。
修改: 问题也出现在Statalist archive
答案 0 :(得分:3)
有一个简单的答案:将矩阵列复制到Stata变量并使用histogram
。其他任何东西都只是迂回或近似。
很难看出这个问题的核心是什么,但如果兴趣是绘制随机数的直方图,那么在Stata中将它们创建为变量要容易得多:
. set obs 500
. gen y = runiform()
. histogram y
答案 1 :(得分:1)
为了完整起见,绘制相对于MAT
列的直方图的代码是:
clear all
set obs 1000
mata:
// Mata matrix of results
MAT = uniform(500, 5)
// generates Stata variables from within Mata
Stata_vars = st_addvar("float", ("V1", "V2", "V3", "V4", "V5"))
// stores MAT columns in the first 500 obs. of the Stata variables
st_store((1::rows(MAT)), Stata_vars, MAT)
end
然后我们只需输入:
hist(V1)
用于V1
或任何其他V2-V5
新创建的Stata变量。