楼主: 黃河泉
2852 44

[程序分享] sepscatter 之应用! [推广有奖]

学术权威

82%

还不是VIP/贵宾

-

威望
3
论坛币
23672 个
学术水平
2291 点
热心指数
2404 点
信用等级
1812 点
经验
154769 点
帖子
9938
精华
10
在线时间
3925 小时
注册时间
2016-7-9
最后登录
2019-5-20

黃河泉 在职认证  发表于 2018-12-6 09:00:59 |显示全部楼层
我昨天询问 Nick Cox (Editor of Stata Journal) 有关 -sepscatter- 指令可否加入配适线,感谢他的回复,已经增加此功能。
  1. // https://www.statalist.org/forums/forum/general-stata-discussion/general/3803-sepscatter-available-from-ssc
  2. *! 1.1.0 NJC 5 December 2018
  3. *! 1.0.2 NJC 9 May 2014
  4. *! 1.0.1 NJC 8 May 2014
  5. *! 1.0.0 NJC 29 April 2014
  6. program sepscatter
  7.     version 9

  8.     capture syntax anything [if] [in] [aweight fweight pweight] ///
  9.     , seperate(varname) [ * ]

  10.     if _rc == 0 {
  11.         noisily di _n "note: sep" as err "a" as  txt "rate() is correct spelling"

  12.         local 0 `anything' `if' `in' [`weight' `exp'] ///
  13.                 , separate(`seperate') `options'
  14.     }

  15.     syntax varlist(numeric min=2 max=2) [if] [in] ///
  16.     [aweight fweight pweight] , SEParate(varname) ///
  17.     [MYLAbel(varname) MYNUmeric(varname) MISSing addplot(str asis) *]

  18.     capture noisily {  
  19.    
  20.     quietly {
  21.         if "`mylabel'" != "" & "`mynumeric'" != "" {
  22.             di as err "choose mylabel() or mynumeric()"
  23.             exit 198
  24.         }

  25.         tokenize `varlist'
  26.         args y x

  27.         marksample touse
  28.         if "`missing'" == "" markout `touse' `separate', strok  
  29.         count if `touse'
  30.         if r(N) == 0 exit 2000

  31.         tempname stub
  32.         separate `y' if `touse', `missing' by(`separate') ///
  33.         gen(`stub') veryshortlabel
  34.         local Y `r(varlist)'
  35.         local nY : word count `Y'
  36.     }

  37.     local ytitle : var label `y'
  38.     if `"`ytitle'"' == "" local ytitle "`y'"

  39.     if "`mylabel'`mynumeric'" != "" {

  40.         if "`mynumeric'" != "" {
  41.             if "`: value label `mynumeric''" != "" {
  42.                 tempvar mylabel
  43.                 gen `mylabel' = `mynumeric'
  44.             }
  45.             else local mylabel `mynumeric'
  46.         }
  47.                
  48.         local mylabel : di _dup(`nY') "`mylabel' "
  49.         local mypos : di _dup(`nY') "0 "
  50.         local mynone : di _dup(`nY') "none "
  51.         local mylabel ///
  52.         ms(`mynone') mla(`mylabel') mlabpos(`mypos') legend(off)   
  53.     }

  54.     scatter `Y' `x' if `touse' [`weight' `exp'], ///
  55.         ytitle(`"`ytitle'"') ms(Oh plus X Th Sh Dh) `mylabel' ///
  56.         `options' || `addplot'
  57.     }

  58.     drop `Y'
  59. end

  60. sysuse auto, clear
  61. sepscatter mpg weight , sep(foreign) mc(red blue) addplot(qfit mpg weight if !foreign, lc(red) || qfit mpg weight if foreign, lc(blue)) legend(order(1 2))
复制代码
其图形为 sepscatter.png

关键词:word

已有 11 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
jzhyue + 5 + 4 + 4 + 4 精彩帖子
dxystata + 50 + 10 + 1 + 1 精彩帖子
aclyang + 20 精彩帖子
np84 + 100 精彩帖子
kychan + 5 + 5 + 5 精彩帖子
happy_287422301 + 100 鼓励积极发帖讨论
zhanghui0931 + 100 + 20 + 1 精彩帖子
1149621054clb + 5 + 5 + 5 + 5 精彩帖子
arthistory4 + 20 精彩帖子
Sunknownay + 3 精彩帖子

总评分: 经验 + 270  论坛币 + 160  学术水平 + 18  热心指数 + 24  信用等级 + 22   查看全部评分

本帖被以下文库推荐

stata SPSS
蓝色 发表于 2018-12-6 09:50:57 |显示全部楼层
不错,谢谢分享
回复

使用道具 举报

yuqr1986 学生认证  发表于 2018-12-6 18:36:33 |显示全部楼层
命令运行到最后没法运行,黄老师可否把ado分享下
回复

使用道具 举报

黃河泉 在职认证  发表于 2018-12-7 07:36:53 |显示全部楼层
yuqr1986 发表于 2018-12-6 18:36
命令运行到最后没法运行,黄老师可否把ado分享下
上面就是 ado 档。
回复

使用道具 举报

koupo 学生认证  发表于 2018-12-7 10:18:30 |显示全部楼层
不错不错,谢谢分享
回复

使用道具 举报

hudabeicun 学生认证  发表于 2018-12-7 10:22:23 |显示全部楼层
黃河泉 发表于 2018-12-7 07:36
上面就是 ado 档。
黄老师,在运行sepscatter mpg weight , sep(foreign) mc(red blue) addplot(qfit mpg weight if !foreign, lc(red) || qfit mpg weight if foreign, lc(blue)) legend(order(1 2))这一行命令时,出现了option addplot() not allowed这一错误?
回复

使用道具 举报

黃河泉 在职认证  发表于 2018-12-7 10:26:22 |显示全部楼层
hudabeicun 发表于 2018-12-7 10:22
黄老师,在运行sepscatter mpg weight , sep(foreign) mc(red blue) addplot(qfit mpg weight if !forei ...
因为 sepscatter 尚未更新 (不知什么时候),请利用上面整个档来画图。
回复

使用道具 举报

2865805767 发表于 2019-2-15 11:11:55 |显示全部楼层
黄老师,请教您个问题。我现在做的是类似于 :“30个国家  每个国家10个省份  GDP与 人口的散点图”,
我的命令是 :scatter GDP 人口,by(省份)
上面这么做,没有把国家分开。我想在by后面加 省份、国家两个控制变量。
scatter GDP 人口,by(国家,省份)   这样的命令跑不出来。
希望黄老师看到之后给予指导。谢谢
回复

使用道具 举报

2865805767 发表于 2019-2-15 11:13:40 |显示全部楼层
黄老师,我在线等您的回复。
回复

使用道具 举报

黃河泉 在职认证  发表于 2019-2-15 11:17:30 |显示全部楼层
2865805767 发表于 2019-2-15 11:11
黄老师,请教您个问题。我现在做的是类似于 :“30个国家  每个国家10个省份  GDP与 人口的散点图”,
我的 ...
你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
1.        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
2.        并请参考 http://www.jianshu.com/p/9870080fe769,  http://bbs.pinggu.org/thread-5048204-1-1.html, 与 http://bbs.pinggu.org/thread-5917273-1-1.html
已有 1 人评分经验 收起 理由
arthistory4 + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-5-20 07:23