用stata内置数据集进行说明:
. sysuse auto, clear. regress price mpg foreign
表格中的p值只保留到三位小数,所以看上去是0,实际上不是严格等于0
. ereturn list
这个命令可以输出更加完整的结果,其中就有系数矩阵e(b)、协方差矩阵e(V)、残差自由度e(df_r),后面会用到。
t统计量
t统计量的通用公式为: t=(估计量-假想值) / 估计量的标准误 零假设的β值一般都是0,所以t可以直接等于估计量 / 该估计量的标准误
这里以foreign变量为例:
. display _b[foreign]1767.2922. display _se[foreign]700.15797. display
_b[foreign]/_se[foreign]2.5241336
这个值比上面表格里面的值更精确,此外因为标准误本质还是一个标准差(大于0),所以系数列和t列正负相同。
如果求多个变量的t统计量,则需要借助mata,它是stata中进行矩阵运算的一个工具。求多个β的标准误具体算法涉及到矩阵的相关知识点,在陈强计量教材的p89的公式5.50有介绍,即向量
β_hat的协方差矩阵的主对角元素开根号。
在stata命令窗口直接输入mata表示进入mata模块,end表示退出。
st_matrix表示导入矩阵
第一行最后的英文单引号'表示转置,注意:有时候从其他网页或文件直接复制粘贴过来的可能是中文单引号,所以报错
第三行就是协方差矩阵的主对角元素的平方根
第四行:矩阵元素之间的运算需要加上冒号
p值
p值计算公式为:p = 2 ∗ (1 − T(df,|t|)),其中T( )是自由度为df的t分布对应的累计分布函数。仍以foreign变量为例:
. local t = _b[foreign]/_se[foreign]. di 2*ttail(e(df_r),abs(`t')).01383634
第一行表示定义一个局部变量,只能在下文被使用一次(相对应的是全局变量)
第二行:abs( )求绝对值,e(df_r)调用自由度,ttail()求t分布的尾部概率,也就是上面公式的1 − T(df,|t|)
,注意:第二行调用局部变量t时,t左右两边有两个符号,分别是键盘左上方的波浪线下面的符号,和英文的单引号。
多个变量的p值计算如下: