一、宏观因素X对微观因素Y影响的Stata模拟
clear//清空当前工作区
set seed 123//设置随机数种子为123,以确保结果可重复
set obs 500//设置数据集大小为500行(观测值)
egen group_id = seq(), from(1) to(100) block(5)
//生成一个名为 “group_id” 的新变量,其中每个分组包含连续的五个观测值。总共有 100 组
gen X = rnormal()//生成一个名为 “X” 的新变量,其中每个观测值都是从标准正态分布中抽取的随机数
egen group_X = mean(X), by(group_id)
//对于每个分组计算 “X” 变量的均值,并将其存储在名为 “group_X” 的新变量中
replace X = group_X//将每个观测值替换为其所属分组的平均值(即实现了固定效应模型)
gen Y = 0.5 * X + rnormal(0, 0.5)
//根据公式 Y=0.5*X+.,在 “X” 变量和误差项中抽取随机数来生成一个名为 “Y” 的新变量。其中误差项服从均值为零、标准差为 0 .5 的正态分布
xtmixed Y X || group_id:, mle
//运行 xt 混合效应模型,其中因变量是 “Y”,自变量是 “X”,并且考虑到了由 “group_id” 定义的随机截距。使用最大似然方法进行参数估计
二、宏观因素X对微观因素Y影响的R模拟
library(lme4) ##加载 lme4 包。lme4 包提供了用于拟合线性混合效应模型的函数
set.seed(123) ##设置随机数生成器的种子为 123。这确保了代码的可重复性
n_groups = 10 ##创建一个变量 n_groups,表示分组的数量,共 10 个
n_observations = 50 ##创建一个变量 n_observations,表示每个组的观测值数量,共 50 个
group_id = rep(1:n_groups, each = n_observations) ##创建一个向量 group_id,其中包含从 1 到 groups 的整数,每个整数重复 n_observations 次。这表示每个组的观测值对应的组 ID
X = rnorm(n_groups) ##创建一个名为 X 的向量,其中包含 n_groups 个来自标准正态分布的随机数
X_rep = rep(X, each = n_observations) ##创建一个向量 X_rep,其中包含向量 X 中的每个元素重复 observations 次。这表示每个组的观测值对应的自变量值
Y = 0.5 * X_rep + rnorm(n_groups * n_observations, 0, 0.5) ##创建一个向量 Y,表示因变量值。Y 是 X_rep 的 0.5 倍,加上一个均值为 0,标准差为 0.5 的正态随机误差项
data = data.frame(group_id, X_rep, Y) ##创建一个名为 data 的数据框,包含 group_id(组 ID)、X_rep(自变量)和 Y(因变量)
model = lmer(Y ~ X_rep + (1 | group_id), data = data) ##使用 lmer 函数拟合一个线性混合效应模型。因变量是 Y,自变量是 X_rep,随机截距是根据 group_id 分组的。将拟合的模型存储
在变量 model 中
summary(model) ##显示 model 的摘要信息,包括固定效应和随机效应的估计值、模型拟合统计量等