金融小白的积累本:stata矩阵计算初级操作的汇总(更新ing)

作者是金融工程学生,正在学习stata,主要课程任务是通过矩阵运算实现一些stata内置算法包,所以积累了一些矩阵运算的常规操作。
刚接触时最大的困难是不懂这个软件的语言习惯,所以用备忘录记下了自己曾经困惑的地方,一些操作很小白,本学期会持续更新~

写在前面的注意事项:
1、引用格式 `i’ $b
2、矩阵不显示为变量
3、直接输入Reg遇到缺省值时,会直接删除这一行。

  • 设置系统能容纳的矩阵大小(有时stata不能容纳已有的矩阵,无法运算)
    set matsize 11000
    诸如此类还有
    set seed 10101
    Set obs 1000

  • 创建矩阵:
    Mat A=[1,2,3\4,5,6] —————————中括号改成括号也一样
    mkmat X1 X2 X3, matrix(A)
    matrix x2=X’*X
    matrix define B=I(k/2) ————————创建k/2维的e矩阵

  • 显示矩阵:
    mat list A

  • 创建对角矩阵
    mat v=(1,2,3)
    mat D=diag(v)

  • 提取矩阵的对角元素为一列向量
    matrix diag=vecdiag(A)

  • 创建逆矩阵
    mat D= invsym(D) ————————可以重复创建矩阵,不像变量要replace

  • 矩阵转置
    A➡️A’

  • scalar和gen的区别
    scalar是定义一个标量,不是变量,在变量列表中没有显示。而gen定义的一个变量,在变量列表中有显示,但如果需要赋值,需要 set obs 1,这样在数据编辑器里面才能看到数值。

  • 所有行的数量
    scalar n=_N ————————data集的所有行数
    scalar m=rowsof(y) ————————某个矩阵的行数

  • 删除数据行
    drop in 1/n ————————————表示删除前n行
    drop in n 删除第n行

  • 柯列斯基分解
    matrix R = cholesky(S),则RR^T = S

  • 把文本转化为时间格式
    gen day=date(trddt,"YMD”)——————仅这样是转化为stata可辨识的数字
    format day %dCY-N-D—————————上面的加上这行是转化为时间格式的年月日

  • Dta文件导出为excel
    save price.dta, replace
    export excel using price

  • 删除重复行
    duplicates drop

  • 把红色数字(文本不识别)转化为数值格式
    destring GDP增速,force replace

  • 高版本stata不显示各变量的注释:
    unicode analyze.dta
    unicode encoding set “GB18030”
    unicode retranslate class6.dta, transutf8
    global

  • 一些计算函数
    exp()
    log()
    log10()
    sqrt() 平方根
    abs()

  • 哈达玛积
    就是m x n矩阵A = [aij]与矩阵B = [bij]的Hadamard积,记为A * B 。新矩阵元素定义为矩阵A、B对应元素的乘积(A * B)ij = aij*bij
    例如:matrix t=hadamard(b, seinv)

  • 画图
    Twoway scatter y x ——散点图
    Twoway line y x ——折线图
    twoway connected y x——带数据标记的折线图(点连起来的散点图)
    twoway dropline le year ——垂直线图
    twoway lowess le year ——lowess图(局部加权回归图,平滑价格曲线)
    twoway spike le year ——脉冲图(类似很多很细的条形图)

  • 提取矩阵中的某一列或某一行,或某几列几行的交叉区域
    X[1…2,3…4]即x的“第1行到第2行、第3列到第4列”(交集)的所有元素形成的矩阵。
    若"…“后面仍为”.",则其表示“(到)最后一行(列)”。

  • 两重forval循环
    forval i = 1/3 {
    forval j = 1/=i’-1’ { //循环中暂元的计算要加上“=”

你可能感兴趣的:(stata)