楼主: psblackie
3018 3

[时间序列问题] 如何批量输出ADF检验和协整检验的结果 [推广有奖]

  • 0关注
  • 1粉丝

高中生

97%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
1.2939
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
102 点
帖子
8
精华
0
在线时间
64 小时
注册时间
2018-10-8
最后登录
2021-9-13

楼主
psblackie 在职认证  学生认证  发表于 2020-11-5 23:26:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位前辈好~本人新人刚开始研究stata
导师给了一个任务,第一步要输出40组数据的ADF检验和协整检验的结果,Y是一个时间序列,分别和40组X做协整检验,我大概会写循环进行检验,但是实在是不知道该如何把结果统一输出到一张EXCEL上,百度了半天感觉也没有人系统性的回答这个问题。实在是没办法了呜呜呜

希望可以有大佬来教教我~不胜感激!!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ADF检验 协整检验 ADF F检验 Stata

未来加油!

沙发
psblackie 在职认证  学生认证  发表于 2020-11-6 10:28:09
球不要沉下去呀!!!!

藤椅
yuraoji6 发表于 2023-7-30 10:43:26
请问问题解决了吗?可以球球解答一下嘛?

板凳
赵安豆 发表于 2024-12-9 17:43:11
在Stata中,批量执行ADF单位根检验(Augmented Dickey-Fuller test)和协整检验(例如Johansen协整检验),并将结果输出到Excel文件通常需要以下几个步骤:

### 1. 创建存储结果的变量或宏

首先,你需要创建一些变量或者宏来存储你想要从每次运行ADF测试和协整测试中得到的结果。比如ADF p值、协整阶数等。

### 2. 编写循环执行检验并保存结果

使用`forvalues` 或者 `foreach` 命令来循环遍历你的40组X变量,对每一对(Y, X)进行ADF测试和协整测试,并存储结果。比如:

```stata
clear all

// 初始化数据结构或宏用于存储结果
preserve
use yourdataset // 使用你的数据集

local p_values_adf ""
local cointegration_ranks ""

foreach var of varlist x1-x40 {
    tempname adf_pvalue coint_rank
   
    // 执行ADF测试并保存p值
    adfuller y `var', lags(aic) regress
    local adf_pvalue = r(p)
   
    // 将结果添加到宏中
    local p_values_adf "`p_values_adf'`adf_pvalue'"
   
    // 执行协整测试(比如Johansen)
    vec y `var', trend(constant) coint(1) lags(aic)
    test coint_rank==0 // 测试没有协整关系的假设
    local coint_rank = r(p)<.05 ? 1 : 0
   
    // 将结果添加到宏中
    local cointegration_ranks "`cointegration_ranks'`coint_rank'"
}

// 复原数据集状态(可选)
restore

```

### 3. 输出结果到Excel文件

使用Stata的`savemerge`, `merge` 或者直接用命令行工具如`putexcel`将结果导出至Excel。例如,如果你已经存储了所有的p值和协整秩在宏中:

```stata
* 需要先安装putexcel:ssc install putexcel

// 清除工作环境中的旧数据以避免混淆
clear all

// 载入你的原始数据集(或使用之前的数据)
use yourdataset

// 将保存结果的宏转化为变量
generate adf_pvalue = .
generate coint_rank = .

local i = 1
foreach var of varlist x1-x40 {
    replace adf_pvalue = word("`p_values_adf'", `i') in `i'
    replace coint_rank = word("`cointegration_ranks'", `i') in `i'
   
    local ++i
}

// 输出结果到Excel文件中
putexcel set "output.xlsx", modify
putexcel (`=A1`) into A1, sheet("Results") text
putexcel ("ADF_p_values") into B1, sheet("Results")
putexcel ("Cointegration_Ranks") into C1, sheet("Results")

foreach var of varlist x1-x40 {
    local index = wordcount("`varlist'")-(`i'-1)
   
    putexcel (`index`) into A`i', sheet("Results")
    putexcel (r(Var`var') adf_pvalue) into B`i', sheet("Results")
    putexcel (r(Var`var') coint_rank) into C`i', sheet("Results")
   
    local ++i
}
```

请注意,上面的代码示例是一个简化版,并且可能需要根据你具体的变量名和数据结构进行调整。特别是`savemerge`, `merge` 和 `putexcel` 的使用,具体命令参数可能会有所不同。

希望这个指南能帮助你开始你的任务!如果在实施中遇到任何问题,请随时提问。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 09:52