1.
全局暂元global;暂元local;
在问问题之前我看过 help macro ; help matrix,
global assigns strings to specified global macro names (mnames). local
assigns strings to local macro names (lclnames). Both double quotes ("
and ") and compound double quotes (`" and "') are allowed; see quotes.
If the string has embedded quotes, compound double quotes are needed.
还是有些疑问:
这二者怎么区别?
观察您的课件视频,似乎可以这样理解:
global xx "tobin cflow"
local gFC "g_FC"
global可以定义很多变量;local只能定义一个。
而global cflow_diff0 = D0[1,2] // cflow 的真实系数差异
说明global还可定义矩阵里的一个元素。
我只是这样经验地去理解,想得到您的验证。
A: 中国银行总行的行长和广东分行的行长都叫行长,前者在各个分行中下的命令都有用,但后者只在广东省内有用。
global 相当于前者,local 相当于后者。二者都可以放很多东西,比如变量名称,数字,文字,矩阵的元素(其实就是一个常数),差别仅在于作用范围不同。
我在初级视频 A5_prog 中对此问题进行了非常细致的讲解,建议你再看看视频。
2.
我看了 help display
_asis
_skip(#)
_column(#)
_newline[(#)]
_continue
_dup(#)
_request(macname)
_char(#)
,
,,
而且我还看了例子,没有dis_c,只有dis_col的例子
7. di _col(10) "myvar[1] = " myvar[1] _skip(10) "myvar[2] = " myvar[2]
_c = _cotinue (对吗?)
_continue suppresses automatic newline at end of display command
这段英文怎么理解?
A: 不断行。也就是说后续的文字接着上一行的末尾呈现。就好像你在 word 里写东西从来不打回车一样。
您解释的常数矩阵的基本知识我知道,我问的是
常数矩阵中的点和dis _c ".",即每估计一轮打点,这两个点会干扰吗?毕竟655行和658行很近。
A: 不会互相干扰。dis _c "." 中的点只在这一行起作用。矩阵定义中的点也只影响矩阵中的元素。比如,你家里放一台电脑,办公室放一台同样的电脑,这两个电脑会互相影响吗?
3.
A: diff 和 diff0 分别表示 BS 得到的系数差异和真是差异。j 表示第 j 个变量。模型中包含多个解释变量,我们需要依次检验每个变量的组间系数差异。
j 表示第 j 个变量。我理解 j 表示第 j 个观测值,因为第678行
qui count if (diff`j'>=`diff0_`j'')&(diff`j'!= .)
数一下BS 得到的系数差异大于真实差异的观测值的个数。
第二种理解:就是您说的,j 表示第 j 个变量
diff`j'>=`diff0_`j''
表示BS组第 j 个变量(如cflow)与真实组对应的第 j 个变量(如cflow)进行比较,数出这个变量 j 中的大于真实的观测值的个数。
A: 第二种理解对。
A: help local。local 称为暂元,只在某个循环中才起作用。就好像山东省的省长和广东省的省长在当地都叫省长,但并不会导致混淆,因为都是在特定的省份内称呼的。
这个您解释得很通俗,我想这也正是暂元的“暂”字的含义。
只是“local 称为暂元,只在某个循环中才起作用。” 暂元真的只在某个循环中才起作用吗?没有别的用途?
A: 只是说了一种情况,其他的一些应用都在 Stata 初级 A5_prog 中有详细讲解。
4.
星号的作用我明白,我的意思是
注释您习惯放在同一行,用//隔开,如661行
bysort year: gen gg = group(3) // 将样本随机等分为三组
又或者675行
mat P = J(2,2,.) /*记录系数真实差异和实证P值的矩阵*/
当您用星号时,意思是备选方案,可以把星号去掉,改为另一种情况得到另一种结果,如第638、639行
*local gFC "qsize" // 采用公司规模分组,年度 FC 状态可变
*local gFC "gsize" // 采用公司规模分组,年度 FC 状态不可变
所以,我理解去掉星号,即去掉第674行的星号,那会得到一个什么结果?
A: 注释语句有三种标注方式: /* */, *, //。
视频里我会经常用 * 提供多种备选方案,因为它最简洁。
我在初级视频中也讲解过三者的区别。
help svmat 我看过,
svmat takes a matrix and stores its columns as new variables. It is the
reverse of the mkmat command, which creates a matrix from existing
variables.
我的问题是
第670行 mat D[`j',1] = diff 和第673行 svmat D, names(diff)
这两个矩阵D是同一个矩阵吗?
A: 是同一个矩阵。前面在定义矩阵中的元素,后面那一句把矩阵 D 转成了变量。
我现在才明白
第670行 mat D[`j',1] = diff 和第672行mat list D
两个D矩阵不同,
第670行 mat D[`j',1] = diff 只有一列;而第672行mat list D却有12列,
这就解释了
diff1指后一个矩阵的第一列变成的向量(Tobin);diff2指后一个矩阵的第二列变成的向量(Cflow)。
上次问问题时,我把D矩阵当成前一个矩阵,只有一列,怎么会变成2列的向量diff1、diff2呢
A: mat D[`j', 1] = diff 的含义是,在矩阵 D 的第 j 行第 1 列处插入一个行向量 diff,diff 可以是 1*1 矩阵,也可以是 1*10 矩阵,没有关系。就好像你把光标放到一个 Excel 表格的第 1 行第 1 列处,可以贴入任何形状的长条矩阵。[`j', 1] 只是用来标明插入的位置而已。
这些内容在 Stata 初级视频 A3_matrix 中有详细讲解。
|