美文网首页我的学习时光
Day1 stata基础代码

Day1 stata基础代码

作者: 米妮枕边情书 | 来源:发表于2022-10-28 20:54 被阅读0次
        *代码块                                                        
    clear    //删除当前内存中的数据集
    cd F:\stata相关\stata学习笔记     //指定路径
    log using filename
    sysuse auto.dta  
    describe     
    summarize,sep(3)
    
        *help search hsearch                    
    *serch用关键词来进行检索,从官方的帮助文件FAQS、例子SJ和STB中获得信息
        search ols
    *findit 较广泛的关键词搜索命令,不仅仅局限于关键词
        findit weak instr
    *hsearch提供更详细的搜索,不局限于关键词。
        *但是需要使用全词进行搜索,搜到的信息更多
        hsearch weak instrument
        
        *认识stata命令
    *[]表示可以进行选择的限定符,
    *打印体的单词需要输入到stata中(注意单词拼写),
    *斜体的单词可以被用户替代
    *例:[prefix:]command[varlist][=exp][if][in][weight]
        *[using filename][option]
    
       *summarize命令
    summarize
    sum    //可以使用缩写
    summarize mpg price weight,separator(1)  //sep表在输出结果中每几行画一条线
    
        *regress命令
    help regress
    * regress depvar [indepvars] [if] [in] [weight] [, options]
    regress mpg  //只包含被解释变量,即只对截距项进行回归
    reg mpg price weight
        *weight的系数-0.0058175表示当汽车的重量每增加1000磅时,经济油耗
        *每加仑英里下降了5.8
        
    *限定到foreign变量中的每个值(共22个)进行回归,且汽车重量小于
        *4000磅,使用vce(robust)可以得到异方差-稳健标准误   
    by foreign:reg mpg price weight if weight<4000,vce(robust)
    
    *使用quietly前缀可以压缩无关的输出结果
    quietly reg mpg price weight 
    
      *因子变量
    tab rep78   //发现rep78有五个不同的值,即它是一个分类变量
    sum rep78
    sum i.rep78   //注意区分本行和上一行的区别
    sum ib2.rep78  //省略第二个类别
    sum ibn.rep78   
    sum ib(last).rep78
    sum rep78,allbaselevels  //包含所有类别,同sum rep78
    
    *使用#算子可以创建两个(或更多)分类变量之间的一组完整的交互项
    sum i.rep78#i.foreign,allbaselevels
    *用##创建因子交互项
    sum i.rep78##i.foreign
    sum i.rep78 i.foreign i.rep78#i.foreign  //与上一行等价
    sum i.rep78#c.weight    //weight是连续变量,前面用C.
    
    *因子变量与连续变量的交互回归
    reg mpg price c.weight c.weight#c.weight,noheader   //noheader,只显示回归结果
    reg mpg price c.weight##c.weight,noheader
    reg mpg c.price##c.weight,noheader 
    
        *缩写词、大小写的敏感性和通配符
    *stata中变量名最长可以达到32个字符
    *stata 区分大小写
    *通配符 "*" 星号
    sum t*
    
        *算术、关系和逻辑算子
    display -2*(9/(8+2-7))^2
    dis 2/10
    * >大于   <小于   ==等于   !=不等于   >=大于等于  <=小于等于  ~=不等于
    * |或、 & 且、 !非
    reg mpg price weight if weight <= 4000 & price <=10000
    
        *报错后可以直接点报错编码查看原因,也可以在交互模式下输入
          search rc111 (111指报错编号)
    
        *查看当前路径、指定路径
    pwd          //查看
    cd C:\Users\DELL\Documents     //指定
    
        *log日志--保存所有运行命令及其输出结果(stata运行过程的再现)
    *开始,在运行代码前就要启动log 
    //log using filename (注意存放位置)
    //文件-日志-开始-选择日志文件类型 (smcl是stata格式的日志文件,可读性强)
    *结束
    //log close 
    
        *stata do文件的注释
    * 以*开始的这一行stata不会去运行
    // 一般用来放在命令之后进行说明(在同一行较好)
    /* 用于多行注释,增强可读性,
        就是将需要注释的内容放到/**/之间*/
    * 换行 用/// 一般用在命令比较长的时候,///可以跨行执行
    
        * 查看stata当前系统设置的细节
    query 
    creturn list
    *set matsize 300 //改变变量个数最大值
    
        * 标量-存储单个数字或者单个字符串
    scalar a=2*3
    scalar b="2 times 3 = "
    display b a 
    
        *矩阵
    matrix define A=(1,2,3\4,5,6\7,8,9)  //3*3的矩阵
    matrix list A  
    scalar c1=A[3,3]   //矩阵中特定元素的提取,第三行第三列
    scalar c2=A[2,2]
    display c1
    display c2
    
        *使用来自stata命令之后所获得的结果--r类
    //分析数据但不估计参数的是r类命令,所有r类命令都保存在r()中
    summarize mpg
    return list    //r(sum_w)表示权重之和
    
    quietly sum mpg
    scalar range = r(max)-r(min)
    display "Sample range = " range
    
    scalar mpgmean=r(mean)  //将变量的均值储存为一个标量进行使用
    dis mpgmean 
    
        *使用从e类命令regress所得的结果
    //估计类命令都是e类命令,如regress命令。其结果都储存在e中,输入ereturn list可以查看
    regress mpg weight price 
    ereturn list
    //e(mss) =  1595.932492798133 模型平方和,e(rss) =  847.5269666613266残差平方和
    //R2=e(mss)/(e(mss)+e(rss))
    scalar r2=e(mss)/(e(mss)+e(rss))
    display "R square = " r2
    
    matrix best=e(b)
    scalar bprice = best[1,1]
    dis bprice 
    matrix Vest = e(V)
    scalar Vprice = Vest[1,1]
    dis Vprice
    scalar tprice = bprice/sqrt(Vprice)
    dis sqrt(Vprice)
    display "t statistics for H0 : b_price = 0 is " tprice 
    
        *宏 -- 全局宏、局部宏
    /*用一串字符串来代表另一串字符串 比如可以用Xlist来代替 price weight等自变量,
    用global代表全局宏,可以在整个do文件中进行使用;local代表局部宏,可以在指定
    段落进行使用。*/
    global xlist price weight
    reg mpg $xlist ,noheader      
    reg mpg $xlist              
    reg mpg $xlist ,vce(r)
    
    *local
    local x " price weight "
    reg mpg `x'              //与上一行一起执行
    local a " 2+2 "
    dis `a'
    
        *循环命令
    //foreach、forvalue、 while
    /* foreach 命令在一个列表中的不同项之间构造循环,列表可以是一个变量名称,
    也可以是数字列表;forvalue命令在数字的连续值之间构造循环;while循环持续到
    用户指定的一个条件不能被满足为止。*/
    *generate -- 生成一个新的变量
    *runiform() --从均匀分布中进行抽样
    *set seed -- 生成随机数后将种子设置成特定的值
    clear
    set obs 100
    set seed 10101
    gen x1var = runiform()
    gen x2var = runiform()
    gen x3var = runiform()
    gen x4var = runiform()
    gen sum = x1var + x2var +x3var +x4var
    sum sum 
        //将以上步骤用循环来实现 
    *foreach -- 一个列表中的不同项目之间循环构建
    drop sum 
    gen sum=.
    replace sum=0
    foreach var of varlist x1var x2var x3var x4var{
        quietly replace sum=sum+`var'
    }
    sum sum 
    
    *forvalue--可以在连续的值之间进行循环迭代
    drop sum 
    gen sum=.
    quietly replace sum = 0 
    forvalue i=1/4{
        quietly replace sum = sum + x`i'var
    }   //i=1/4 增量是1,forvalue 1=1(2)11 的增量为2.
    sum sum 
    
    *合并前两个步骤
    clear 
    set obs 100
    set seed 10101
    forvalue i=1/4 {
        gen x`i'var=runiform()
    }
    gen sum = 0
    foreach var of varlist x1var x2var x3var x4var{
        quietly replace sum=sum+`var'
    }
    sum sum 
    
    * while - 持续到某一条件不能被满足时
    quietly replace sum = 0
    local i 1
    while `i'<=4{
        quietly replace sum =sum+x`i'var
        local i = `i'+1
    }
    sum sum 
    
    *循环的练习1
    clear
    forvalues x = 1/4{
        if mod(`x',2){
            dis "`x' is odd"
        }
        else {
            dis "`x' is even "
        }
    }   
    
    //mod 计算被整除后的余数
    clear
    scalar x=mod(10,2)
    dis x
    scalar x=mod(22,7)
    dis x 
    
    *使用continue完成练习1
    forvalues i=1(1)10{
        if mod(`i',2){
            dis "`i' is odd"
            continue
        else{
            dis "`x' is even"
        }
        }
    }
    

    相关文章

      网友评论

        本文标题:Day1 stata基础代码

        本文链接:https://www.haomeiwen.com/subject/csdctdtx.html