个人Stata学习笔记,代码源文件来自陈强老师教材。由于markdown文件上传丢失格式,部分公式显示可能存在一定问题,不过会typora语法的应该可以很容易看明白。另外也附上了一些截图

为直观理解总体回归函数(PRF)与样本回归函数的关系(SRF),使用蒙特卡罗法进行模拟。所谓“蒙特卡罗法”(Monte Carlo Methods,MC),是通过计算机模拟,从总体抽取大量随机样本的计算方法。

1.预备知识:

若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)

2.举例:

考虑如下数据生成过程(DGP)或总体回归模型:

r语言 蒙特卡洛t检验正态分布 spss做蒙特卡洛模拟_机器学习


解释变量x_i ~ N(3, 2^2 ),扰动项\epsilon_i ~ N(0, 3^2 ),样本容量为n=30。 从N(3, 2^2 )随机抽取30 个解释变量xi的观测值,并从N(0, 3^2 )随机抽取30 个扰动项\epsilon _i的观测值。 根据总体回归模型(4.39)计算相应的被解释变量yi。 把yi对xi进行回归,得到样本回归函数(SRF),并与总体回归函数(PRF)进行比较。

由于样本容量仅为 30,故存在一定的抽样误差。斜率的真实值为 2,而样本估计值为2.36;截距项的真实值为1,而样本估计值为-1.64,符号相反(但不显著)。

如使用不同的随机数种子再次抽样,将得到不同的SRF;而PRF始终不变

r语言 蒙特卡洛t检验正态分布 spss做蒙特卡洛模拟_r语言 蒙特卡洛t检验正态分布_02

3.代码

clear 
#删除内存中已有数据
set obs 30
# (确定随机抽样的样本容量为30)
#数理统计里的"obs"是observation的缩写。observation指的是观测值或实测值,与其对应的是统计模型(例如线性模型)的预测值(predicted value)。
 set seed 10101
#(指定随机抽样的“种子”为10101;命令“set seed 10101”用来确定随机数的初始值(称为“种子”,可任意设置,此处设为10101),以便再次模拟时得到完全一样的结果。`
gen x = rnormal(3,4)
#(得到服从N(3, 2^2 )分布的随机样本,记为x);在分析的过程中,有些变量并没有在数据中提供,需要我们用原始数据或者回归的结果构造。常用的命令是 “gen” 和 “egen” 。
# rnormal命令如下
gen e = rnormal(0,9)
#(得到服从N(0, 3^2 )分布的随机样本,记为e)
gen y = 1 + 2*x + e
#(计算被解释变量y)
reg y x
#(把y 对x 进行OLS 回归)
#ols 全称ordinary least squares(普通最小二乘法),是回归分析(regression analysis)最根本的一个形式,对模型条件要求最少,也就是使散点图上的所有观测值到回归直线距离的平方和最小。
twoway function PRF=1+2*x,range(-5 15) ||scatter y x || lfit y x,lpattern(dash)
# 把总体回归函数、散点图与样本回归函数画在一起;选择项“range(-5 15)”用于指定画图的横轴范围介于-5 与15 之间;默认为0 与1 之间,即range(0 1)
#选择项“lpattern(dash)”表示画虚线,默认画实线
#实线为总体回归函数(PRF);而虚线为样本回归线(SRF),即被解释变量的拟合值。SRF 似乎比较接近于PRF

4.debug过程

输入twoway function PRF=1+2*x,range(-5 15) ||scatter y x || lfit y x,lpattern(dash)

返回错误代码198,并显示option 15 not allowed

查阅错误代码文件,可能存在范围无效、无效文件名、无效名称、选项不允许等错误

r语言 蒙特卡洛t检验正态分布 spss做蒙特卡洛模拟_回归_03

去除range(-5,15)后

发现返回错误代码111,查询错误代码,错误类型为没有正确定义变量,返回检查发现大小写出错

r语言 蒙特卡洛t检验正态分布 spss做蒙特卡洛模拟_机器学习_04

修改,重试运行,运行成功

r语言 蒙特卡洛t检验正态分布 spss做蒙特卡洛模拟_机器学习_05

对照百度查阅资料,可能给定范围不合适

尝试多次代换范围,发现仍然无法成功运行,回过头继续检查源代码,发现,范围给定格式错误

正确形式应当为(-5 15);我们错误的添加了一个,

修改完毕后,成功运行

r语言 蒙特卡洛t检验正态分布 spss做蒙特卡洛模拟_回归_06

4.附件

rnormal(m,s)

Domain m: c(mindouble)to c(maxdouble)

Domain s: 0 to c(maxdouble)

Range: c(mindouble)to c(maxdouble)

Description: returns normal(m,s)(Gaussian)random variates,where m is the mean and s is the standard deviation.(返回正态(m, s)(高斯)随机变量,其中m是平均值, s是标准差)