全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3111 3
2020-11-05
各位前辈好~本人新人刚开始研究stata
导师给了一个任务,第一步要输出40组数据的ADF检验和协整检验的结果,Y是一个时间序列,分别和40组X做协整检验,我大概会写循环进行检验,但是实在是不知道该如何把结果统一输出到一张EXCEL上,百度了半天感觉也没有人系统性的回答这个问题。实在是没办法了呜呜呜

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

扫码加我 拉你入群

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

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

全部回复
2020-11-6 10:28:09
球不要沉下去呀!!!!
二维码

扫码加我 拉你入群

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

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

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学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群