首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以使用foreach循环来生成R2数据并将其存储为新列,同时删除当前变量

可以使用foreach循环来生成R2数据并将其存储为新列,同时删除当前变量
EN

Stack Overflow用户
提问于 2021-11-13 21:21:27
回答 1查看 54关注 0票数 0

我正在尝试设计一个foreach循环,它将回归两个变量time (x)和y,但是通过删除每年的当前变量来检查删除当前时间(x变量)如何影响回归的Rsq。然后,我想将每个回归的R2存储在一个新列中,这样我就可以在删除该给定时间时找到哪个回归具有最高的R2。下面是我所拥有的:

代码语言:javascript
复制
foreach x in varlist year {
quietly regress y year
gen Rsq = e(r2)
}

我不习惯Stata语法,我发现它很难,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-11-14 02:25:35

从你的澄清来看,我认为这会达到你的目的。请注意,foreach x of varlist year {不会访问year的不同值。这要求Stata循环遍历仅包含yearvarlist;您需要的是levelsof命令。

代码语言:javascript
复制
// Create sample data 
clear all 
set seed 2021
set obs 5
gen year = _n + 2000 
expand 200
gen y = rnormal() + 3*year

// for loop 
levelsof year, local(years)
foreach yr of local years {
    disp "The year omitted is `yr'"
    reg y year if year != `yr'
    gen Rsq_omit_`yr' =  e(r2) 
}

如果希望值包含在一个变量中,其中R平方与省略的年份对齐,则可以执行以下操作:

代码语言:javascript
复制
gen Rsq = .
levelsof year, local(years)
foreach yr of local years {
    disp "The year omitted is `yr'"
    reg y year if year != `yr'
    replace Rsq = e(r2) if year == `yr'
}

. tabdisp year, c(Rsq)

----------------------
     year |        Rsq
----------+-----------
     2001 |  .91367307
     2002 |  .95367692
     2003 |  .95636972
     2004 |  .95240147
     2005 |  .92448613
----------------------
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69958353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档