Day1 stata基础代码

    *代码块                                                        
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基础代码)