楼主: lclray3
11453 24

[编程问题求助] stata中如何能随机选择变量进行回归 [推广有奖]

  • 0关注
  • 0粉丝

讲师

25%

还不是VIP/贵宾

-

威望
0
论坛币
804 个
通用积分
6.0077
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
12560 点
帖子
228
精华
0
在线时间
205 小时
注册时间
2013-1-15
最后登录
2025-8-17

楼主
lclray3 发表于 2013-11-20 15:54:42 |AI写论文
10论坛币
由于可选的变量比较多(大概有20多个),模型设定只是用4到5个变量进行回归(OLS),所有的可选变量都在data editor中,如何随机选择4到5个变量进行回归?

最佳答案

bbs0805 查看完整内容

将被解释变量命名为y,20多个解释变量命名为x1 x2 .... x20,将数据集保存为data.dta,然后执行如下程序: clear set obs 20 gen n=_n sample 4,count sort n forvalue i=1/4 { local j=n[`i'] global xlist="$xlist x`j'" } use data.dta,clear reg y $xlist
关键词:Stata tata editor Data Edit 如何

本帖被以下文库推荐

沙发
bbs0805 发表于 2013-11-20 15:54:43
将被解释变量命名为y,20多个解释变量命名为x1 x2 .... x20,将数据集保存为data.dta,然后执行如下程序:

clear
set obs 20
gen n=_n
sample 4,count
sort n
forvalue i=1/4 {
    local j=n[`i']
    global xlist="$xlist x`j'"
}

use data.dta,clear
reg y $xlist


已有 4 人评分学术水平 热心指数 信用等级 收起 理由
日新少年 + 1 + 1 + 1 精彩帖子
Sunknownay + 2 + 2 + 2 热心帮助其他会员
lclray3 + 1 + 1 + 1 热心帮助其他会员
ywh19860616 + 1 + 1 + 1 非常好的方法,学习了,有没有方法能简单地.

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

藤椅
lclray3 发表于 2013-11-20 21:13:46
bbs0805 发表于 2013-11-20 15:54
将被解释变量命名为y,20多个解释变量命名为x1 x2 .... x20,将数据集保存为data.dta,然后执行如下程序:

...
我在运行的时候出现了错误,再麻烦你一下,帮我看一下这是什么错误。

error.png (3.9 KB)

error.png

板凳
bbs0805 发表于 2013-11-20 21:44:02
lclray3 发表于 2013-11-20 21:13
我在运行的时候出现了错误,再麻烦你一下,帮我看一下这是什么错误。
这不是程序原因,是你的变量名有问题,仔细检查变量名!若还无法解决,将你数据上传我看看
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 1 + 1 + 1 谢谢前辈的指点,知道如何实现啦

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
lclray3 发表于 2013-11-20 22:00:05
bbs0805 发表于 2013-11-20 21:44
这不是程序原因,是你的变量名有问题,仔细检查变量名!若还无法解决,将你数据上传我看看
谢谢,已解决。

地板
ywh19860616 发表于 2013-11-20 22:51:51
bbs0805 发表于 2013-11-20 15:54
将被解释变量命名为y,20多个解释变量命名为x1 x2 .... x20,将数据集保存为data.dta,然后执行如下程序:

...
您好,可以追问您一个问题吗。现在给出的程序是实现从N个变量中
随机抽取k个变量就行回归的。如果我想比较简单的实现所有变量的组合
进行回归,比如总共3个变量,我想选出所有2个变量的组合进行回归,
如x1,x2;x1,x3;x2,x3。
如果是字母的时候,比如A,B,C,那可用combin命令完全全部组合。
变量回归有无简单的方法?
一份耕耘,一份收获。

7
bbs0805 发表于 2013-11-21 08:09:18
原理与过程类似,稍作修改即可,但forvalue 语句要修改为:
foreach i in A B C {
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 1 + 1 + 1 谢谢

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

8
ywh19860616 发表于 2013-11-21 08:20:41
bbs0805 发表于 2013-11-21 08:09
原理与过程类似,稍作修改即可,但forvalue 语句要修改为:
foreach i in A B C {
谢谢您的解答
我想主要问题是有了变量x1,x2,x3怎么能先得到所有的组合,比如
x1,x2;x2,x3;x1,x3这样的,然后下一步再用循环y对三组分别进行
回归。您是的直接对x1,x2,x3进行循环,即foreach i in A B C {
不是太明白,能不能再说下具体的步骤。
一份耕耘,一份收获。

9
bbs0805 发表于 2013-11-21 08:27:35
ywh19860616 发表于 2013-11-21 08:20
谢谢您的解答
我想主要问题是有了变量x1,x2,x3怎么能先得到所有的组合,比如
x1,x2;x2,x3;x1,x3这样的, ...
如果是将数据1,2,3改成A ,B,C,循环语句是:
foreach i in A B C   {
    global xlist="$xlist x`i'"
}
use data.dta,clear
reg y $xlist


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 1 + 1 + 1 谢谢

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

10
ywh19860616 发表于 2013-11-21 08:43:49
bbs0805 发表于 2013-11-21 08:27
如果是将数据1,2,3改成A ,B,C,循环语句是:
foreach i in A B C   {
    global xlist="$xlist x`i' ...
  1. clear
  2. set obs 100
  3. gen y=uniform()
  4. forva i=1/3{
  5. gen x`i'=uniform()
  6. }
  7. save data1.dta,replace

  8. foreach i in x1 x2 x3   {
  9.     global xlist="$xlist `i'"
  10. }

  11. use data1.dta,clear
  12. reg y $xlist
复制代码
这样只能实现一组回归y=x1+x2+x3,而我想实现y分别对x1,x2;x1,x3;x2,x3的回归。
抱歉,还想没有懂得您说的要领。
一份耕耘,一份收获。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-6 09:45