Coefplot: несколько моделей с несколькими коэффициентами каждая на одном графике
Я хотел бы отобразить коэффициенты (с их доверительными интервалами) двух регрессий друг под другом. Используя Бен Янна приятно coefplot
(ssc install coefplot
), Я могу создать график с одним подграфом только там, где включены все коэффициенты из всех моделей, но мне не удается упорядочить коэффициенты по модели, а не по коэффициенту.
В качестве альтернативы я могу создать график с несколькими подграфами по коэффициенту, который мне не нужен: должен быть только один подграф и общая шкала для коэффициентов.
Вот минимальный пример, иллюстрирующий мои потребности и то, что я только что описал:
sysuse auto.dta, clear
reg price mpg rep78
eststo model1
reg price mpg rep78 weight
eststo model2
*what do I have: 2 models with 2 coefficients each (plus constant)
*what do I want: 1 graph with 2 models beneath one another,
*2 coefficients per model, 1 colour and legend entry per coefficient (not model!)
*common scale
*what is easy to get:
coefplot model1 model2, ///1 graph with all coefficients and models,
keep(mpg rep78) //but order is by coefficient, not by model
//how to add model names as ylabels?
*or 1 graph with 2 subgraphs by coefficient:
coefplot model1 || model2, ///
keep(mpg rep78) bycoefs
Может ли кто-нибудь помочь мне в получении графика, который я хочу оптимально использовать coefplot
?
Как видно из примечаний в примере, идеальное решение будет включать одну запись цвета и условных обозначений для каждого коэффициента (не для модели) и ylabels с использованием названий моделей, но это вторично.
Я уже попробовал пару coefplot
варианты, но мне кажется, что большинство из них для нескольких уравнений из одной модели, а не для коэффициентов из разных моделей.
1 ответ
Я не уверен, как обращаться с названиями моделей, но для первой части вашего вопроса мне кажется, что вы могли бы просто сделать что-то вроде:
sysuse auto.dta, clear
reg price mpg rep78
eststo m1
reg price mpg rep78 weight
eststo m2
coefplot (m1) || (m2), ///
drop(_cons) byopts(row(2)) keep(mpg rep78)
Или я неправильно понимаю, что вы хотите?