当前位置:   article > 正文

stata实战班:数据处理进阶(2)_怎么在stata生成等差数列

怎么在stata生成等差数列

数据处理进阶

##以下代码为stata程序

*------------------------
*-2.1 创建变量的更多技巧 
*------------------------

  *     ==本节目录==
		  
  *     2.1.1 _n 和 _N
  *         2.1.1.1  _n 与 _N
  *         2.1.1.2  _n 与 _N 的应用
  *     2.1.2  -egen- 命令  
  *         2.1.2.1 egen 与 gen 的区别
  *         2.1.2.2  产生等差数列: seq() 函数
  *         2.1.2.3  填充数据:fill() 函数
  *         2.1.2.4  产生组内均值和中位数
  *         2.1.2.5  跨变量的比较和统计
  *         2.1.2.6  变量的标准化
  *         2.1.2.7  变量的平滑化(Moving Average)
  *         2.1.2.8  更多的 egen() 函数 
  
		  
		  
*                  =本节命令=  
* =====================================================
*    _n, _N, tsset, egen, display, list, tabulate
*    xi, fvset fvvarlist, recode, recode(), irecode()
*    cond(), inlist(), inrenge(), egenmore, 
* =====================================================


*___________________
*-2.1.1  _n 和 _N

  *-2.1.1.1  _n 和 _N 的含义
     
    *-定义: 
      * _n "样本序号变量",是一个变量,内容为 1,2,3,...,n
      * _N "样本数指标",   是一个单值,内容为 样本数

    *-说明:
      * _n 是一个永远存在,但却不能 list 出来的特殊变量
      * _n 的取值会随样本排序的变化而变化
      
      sysuse nlsw88.dta, clear
      list age wage in 1/10      // 最左边的1,2,...就是 _n 中的内容
      list _n                    // 错误

      sort hours
      gen nid_1 = _n             // 第一个 _n 的内容 
      list nid_1 hours race in  1/10 
      sort wage
      gen nid_2 = _n             // 第二个 _n 的内容         
      list nid_1 nid_2 hours race in 1/10

      dis _N                     // _N 是一个单值
      scalar obs = _N
      quietly  sum wage    //help quietly
      dis r(mean)*_N
      dis r(mean)*obs

	  
  *-2.1.1.2  _n 和 _N 的应用
  
      sysuse sp500.dta, clear
      sort open
      sum open
      dis r(max)
      gen o_max   = open[_N]             // 最大值
      gen o_diff  = open[_n] - open[_N]  // 与最大值的差
      gen b_diff = open[_N] - open[1]    // range
      list open o_max o_diff b_diff in 1/20
      
      *-差分
        sort date
        gen d_open = open[_n] - open[_n-1]
        
      *-对数差分
        gen dln_open = ln(open[_n]) - ln(open[_n-1])
        
      *-移动平均
        gen mv3_open = (open[_n-1] + open[_n] + open[_n+1]) / 3
        list open o_max o_diff dln_open mv3_open in 1/10

      *-滞后项、前推项、差分
        tsset date  /*声明数据为时间序列*/
        gen open_lag  = L.open
        gen open_lag2 = L2.open
        gen open_forward  = F.open
        gen open_diff  = D.open
        gen open_diff2 = D2.open
        list open* in 1/10    // 只要有关于open的变量全部出来
        reg close L(1/3).(close open)   // 回归 ***这行代码很重要
        
      *-增长率
        qui tsset date    /*声明数据为时间序列*/   //qui help quietly
        gen r1 = D.close/L.close
        gen lnclose = ln(close)
        gen r2 = D.lnclose        // 第二种计算方法
        list date r1 r2 in 1/10
        
      *-分组进行
        sysuse nlsw88.dta, clear
        bysort industry: gen gid = _n    //bysort分类
        list gid industry in 1/50, sepby(industry)  //sepby分布显示 美观
		
		
		
	*______________________
*-2.1.2  -egen- 命令

  * extended generate 的缩写
    help egen  //区别 gen 和 egen 两函数

  *-2.1.2.1 egen 与 gen 的区别
  
    *-基本差异
	  sysuse sp500, clear
      gen  sum_close0 = sum(close)  // 累加
      egen sum_close1 = sum(close)  // 总体加总
      list close sum_close0 sum_close1 in 1/10
	  
    *-对于缺漏值的处理也有差异
      clear
      input v1  v2
            1   5
            2   .
            .   3
            2   4
            4   . 
            .   6
      end
      gen mean       = (v1+v2)/2
      egen mean_egen = rmean(v1 v2)
      list


  *-2.1.2.2  产生等差数列: seq() 函数
    clear
	set obs 100
    egen x1 = seq(), from(-1)  //生成一个等差数列 从-1开始 默认等差是1
      list x1 in 1/10
    egen year1 = seq(), from(2000) to(1900)
      list year1 in 1/20
    egen code = seq(), from(1) block(5)  //block(5)以五个一块显示出来
      list code in 1/20
      list code year in 1/20


  *-2.1.2.3  填充数据:fill() 函数
  
    egen r2 = fill(2 4)      // 间隔 2  的递增数列
    egen r3 = fill(6 3)      // 间隔 -3 的递减数列
    egen r4 = fill(1990 1991 1992 1990 1991 1992) // 分块重复数列**
     list r2-r4 in 1/20


   
  *-2.1.2.4  跨变量的比较和统计
    
    sysuse sp500.dta, clear
	
    egen avg_price = rmean(open close)
      list open avg_price close in 1/10
      
	  replace open = int(open)
      replace close= int(close)
	egen diff = diff(open close)
      sort diff
      list open diff close in 1/10
     

  *-2.1.2.5  变量的标准化
  
    *-定义:x_s = (x - x_m) / x_sd
      *-x_s 的均值将为 0; 标准差将为 1
      *-线性转换,并不改变变量间的相对大小
	  
	sysuse sp500.dta, clear  
    egen s_change1 = std(change)
    egen s_change2 = std(change), mean(20) std(3)
    sum change s_change*

    do A2_egen_std.do
	
   ///该文件下代码指令
   
      twoway (histogram change,   color(blue))    ///
          (histogram s_change1,color(red ))    ///
          (histogram s_change2,color(green)),  ///
    legend(label(1 "原始数据(-0.54,15.8)") lab(2 "标准化数据(0,1)") lab(3 "(20,3)"))

	

     *-2.1.2.6  更多的 egen() 函数 
   
     help egenmore     // 外部命令 
	 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/534602
推荐阅读
相关标签
  

闽ICP备14008679号