标签:matrix 附加 tle trace rod 定义 varname 结果 命令
一、生成矩阵
matrix 矩阵名 = (1,2,3 4,5,6)
变量转矩阵 mkmat
矩阵转变量 svmat
二
1 matrix list 矩阵名 [, noblank nohalf noheader nonames format(%fmt) title(string) nodotz] // 列示矩阵 2 * 更为细致地列示矩阵 3 #delimit ; 4 matrix Htest = ( 12.30, 2, .00044642 5 2.17, 1, .35332874 6 8.81, 3, .04022625 7 20.05, 6, .00106763 ) ; 8 #delimit cr 9 matrix rownames Htest = trunk length weight overall // 定义行名 10 matrix colnames Htest = chi2 df p // 定义列名 11 matlist Htest // 添加边框 12 matrix rename 原矩阵名 新矩阵名 // 矩阵更名 13 * 矩阵的行数和列数 14 matrix 矩阵名 = (1,2,3 4,5,6) 15 scalar ra = rowsof(矩阵名) 16 scalar ca = colsof(矩阵名) 17 dis in g "矩阵 矩阵名 的行数是: " in y ra 18 dis in g "矩阵 矩阵名 的列数是: " in y ca 19 matrix dir // 查找矩阵 20 matrix drop 矩阵名 // 删除矩阵 21 display matmissing(矩阵名) // 显示矩阵缺漏值个数 22 * 矩阵的行名和列名 23 matrix rownames 矩阵名 = 行名(空格分隔) // 行名 24 matrix colnames 矩阵名 = 列名(空格分隔) // 列名 25 * 矩阵的选择 26 matrix 新矩阵名 = 矩阵名[行索引,列索引] // 中间省略:.. 全部省略:.... 尾部省略:... 27 matrix 矩阵中想要修改的元素 = 修改值 // 如果想要修改区域,只需在等号左侧填入修改区域左上角的元素位置即可 28 * 矩阵的合并 29 matrix aa = [a1, a2] // 横向合并两个矩阵 30 matrix aaa = [a1 a2] // 纵向追加两个矩阵 31 * 常用矩阵的定义 32 matrix I = I(n) // 单位矩阵 33 matrix 矩阵名 = J(行数,列数,常数) 34 matrix r3 = matuniform(10,4) // 生成一个10*4的随机数矩阵,随机数区间为(0,1) 35 * 将一维矩阵转换成对角矩阵 36 mat u = J(5,1,-0.5) 37 mat du = diag(u) // 取出对角元素 38 * 将变量转换为矩阵 39 mkmat varlist [if] [in] [, matrix(matname) nomissing // 单变量:矩阵名默认为变量名,选项nomissing表示仅包含非缺漏值 40 * 将矩阵转化为变量 41 xsvmat 矩阵名, list(,) // 以变量方式列示矩阵的内容 42 * 用矩阵存储统计结果 43 makematrix [matrix_name], from(results_list) [production_options] [list_options]:["]command["] [varlist] ... [, options ] 44 * 矩阵运算 45 mgen exprlist , in(matname) out(matname) [ common(term) ] // in-进行操作的矩阵 out-新矩阵 exprlist:数学表达式 46 * 保存矩阵 47 matsave matrix [, replace saving dropall path(path) type(type) ] // 保存到dta中 48 mat2txt , matrix(matrixname) saving(filename) [ title(text) note(text) format(formatlist) replace append ] // 保存为txt格式 49 dataout <using filename> [, options] // word:转成rtf格式的word文档 excel:转成xml格式的excel文档
三
1 * 基本运算 2 matrix A = (1,23,4) 3 matrix B = (5,79,2) 4 matrix C = A+B // 加法 5 matrix B = A-B // 减法 6 matrix X = (1,12,58,04,5) 7 matrix C = 3*X*A‘*B // 乘法 8 matrix D = (X‘*X - A‘*A)/4 9 matrix D = A#D // 直乘 10 matrix E = hadamard(A,B) // Hadamard乘法 11 * 矩阵元素的数学变换 12 math B = function(A) // 可供调用的function: help math functions 13 mgen exprlist , in(matname) out(matname) [ common(term) ] // 分列变换:"v1=ln(c1)" 不可以写为 "v1 = ln(c1)" 14 * 矩阵与单值的运算 15 scalar c = 5 // 单值c 16 mat D = J(4,4,1) // 矩阵D 17 mat Dc = D*c // mat cD = c*D 矩阵与单值相乘 18 mat D_c = D/c // 矩阵与单值相除 19 * 矩阵的转置: 行列互换 20 matrix A = (-1, 2 3, 4 ) 21 mat At = A‘ // 转置运算优先于乘法运算 22 * 矩阵的逆矩阵 23 scalar detA = det(A) // 矩阵的行列式 24 dis issym(A) // 判断一个矩阵是否为对称矩阵 25 mat invA = inv(A) // 求矩阵的逆矩阵 26 * 矩阵的向量化 27 mat vA = vec(A) 28 mat dA = vecdiag(A) // 向量化方阵的对角元素 29 * 矩阵的对角值(trace) 30 matrix Atr = trace(A) // 方阵的对角元素之和
四
matrix accum A = varlist [if] [in] [weight] [, noconstant deviations means(M) absorb(varname)] // matrix accum 语法 matrix vecaccum a = varlist [if] [in] [weight] [, noconstant] // matrix vecaccum语法 *- 几个重要选项: * (1) noconstant 不在 X 矩阵中自动附加常数项; * (2) deviation 采用离差的形式 *-eg1- 线性模型的 OLS 估计 *-目的:求取 b = inv(X‘X)*X‘y * 其中,y = price, * X =(weight,mpg,Cons) sysuse auto, clear * 方法1:仅使用 matrix accum 命令 * 思路: 若 A = (y, X), 则 * * [ y‘y y‘X ] * mat accum (A) = S = (y, X)‘(y, X) = [ ] * [ X‘y X‘X ] matrix accum S = price weight mpg // y=price, X=[weight mpg] mat list S matrix XX = S[2..., 2...] matrix Xy = S[2..., 1] mat b = inv(XX)*Xy mat list b reg price weight mpg,nohead // 检验上述结果 * 方法2:结合使用 matrix accum 和 matrix vecaccum mat accum XX = weight mpg mat vecaccum yX = price weight mpg mat Xy = yX‘ mat b = inv(XX)*Xy mat list b reg price weight mpg, noheader // 检验上述结果 * -eg2- 获取变量的相关系数矩阵 sysuse auto, clear corr price weight mpg length * 加权交乘矩阵 -mat glsaccum- matrix glsaccum A = varlist [if] [in] [weight], group(groupvar) glsmat(W|stringvar) row(rowvar) [noconstant] // 基本语法 *-mat glsaccum 的定义:mat glsaccum(X) = S = X‘BX * 其中,B 为权重矩阵,定义如下: * [ W_1 0 ... 0 ] * | 0 W_2 ... 0 | * B = | . . . . | W_k(k=1,2,...,K) 表示第 k 组观察值的权重矩阵,是一个方阵 * | . . . . | * [ 0 0 ... W_k ] * 若 X 也根据组别定义,则可表示为: * [ X_1 ] * | X_2 | * X = | . | * | . | * [ X_k ] * 由此可以更为细致的了解到 glsaccum 的定义方式:X‘BX = X1‘W1X1 + X2‘W2X2 + ... + X_k‘*W_k*X_k *- 应用举例:White(1980) 异方差稳健性标准误的计算 * * Var(b) = inv(X‘X)*(X‘WX)*inv(X‘X) // White(1980)稳健性方差-协方差矩阵 * * 其中, * * [ e1^2 0 ... 0 ] * | 0 e2^2 ... 0 | * W = | . . . . | * | . . . . | * [ 0 0 ... eN^2 ] NXN 矩阵 * * ei 表示第 i 个观察值对应的残差 * * 问题的关键:求得 (X‘WX) 矩阵即可,可采用 -mat glsaccum- 命令 sysuse auto, clear *-1 获得OLS估计值 mat accum XX = weight mpg mat vecaccum yX = price weight mpg mat Xy = yX‘ mat b = inv(XX)*Xy mat list b *-2 求取残差之平方向量:e2 mkmat price, mat(y) gen cons = 1 mkmat wei len mpg cons, mat(X) // 注意附加常数项 mat e = y - X*b // 残差向量
标签:matrix 附加 tle trace rod 定义 varname 结果 命令
原文地址:https://www.cnblogs.com/IAMSTARBOY/p/12608994.html