楼主: gelengqi2
720 2

[一般统计问题] stata随机森林循环 把in视为变量了 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

50%

还不是VIP/贵宾

-

威望
0
论坛币
205 个
通用积分
0.0200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
143 点
帖子
2
精华
0
在线时间
15 小时
注册时间
2017-4-29
最后登录
2024-12-19

楼主
gelengqi2 发表于 2023-4-19 12:43:37 |AI写论文
5论坛币
在这一句中,系统好像把in视为变量了,怎么处理呀:rforest default_payment_next_month limit_bal sex education marriage_enum* age pay* bill* in 1/1500, type(class) iter(`i') numvars(1)

gen out_of_bag_error1= .
gen validation_error= .
gen iter1= .
local j=0
forvalues i=10(5)500{
    local j=`j'+1
    rforest default_payment_next_month limit_bal sex education marriage_enum* age pay* bill* in 1/1500, type(class) iter(`i') numvars(1)
    qui replace iter1=`i' in `j'
    qui replace out_of_bag_error1=`e(OOB_ERROR)' in `j'
    predict p in 1501/3000
    qui replace validation_error =`e(error_rate)' in `j'
    drop p
}

in not found
r(111);


关键词:Stata 随机森林 tata Validation Education stata

沙发
jincccc 发表于 2024-8-28 15:29:10
楼主这个问题解决了吗,我也遇到这个问题了

藤椅
赵安豆 发表于 2024-8-28 15:30:04
在Stata的`rforest`命令中,使用"in"关键词来指定样本或观测值的范围时,通常需要确保该关键词后面跟的是数字或表达式而非变量名。从你给出的代码来看,问题出在"in 1/1500"这一部分。

当你想在循环中动态地改变"in"后面的数值范围时,可以使用Stata的`inrange()`函数或者直接用表达式来指定样本观测值的范围。然而,在你的例子中,你似乎试图将"in"与一个变量或表达式结合使用,但格式不正确。

解决方法是,如果你希望动态地改变样本范围,你可以通过创建一个包含所需观测号的变量或使用表达式来实现。例如:

```stata
// 假设你有一个名为`sample_range`的变量,其中包含了需要考虑的观测值编号
// 并且你在循环中更新这个变量的内容

local j=0
forvalues i=10(5)500{
  local j=`j'+1
  
  // 使用`if`语句来指定样本范围,这里的假设是`sample_range`包含了相应的观测号列表
  rforest default_payment_next_month limit_bal sex education marriage_enum* age pay* bill*, type(class) iter(`i') if sample_range == `j' numvars(1)
  
  qui replace iter1=`i' in `j'
  qui replace out_of_bag_error1=e(OOB_ERROR) in `j'
  predict p ...
}
```

或者,如果你只是希望在每次循环中都使用固定范围的样本(例如从第1个到第1500个观测值),你不需要"动态"in关键词,直接省略它或使用适当的表达式:

```stata
local j=0
forvalues i=10(5)500{
  local j=`j'+1
  
  rforest default_payment_next_month limit_bal sex education marriage_enum* age pay* bill*, type(class) iter(`i') numvars(1)
  
  qui replace iter1=`i' in `j'
  qui replace out_of_bag_error1=e(OOB_ERROR) in `j'
  predict p ...
}
```

在这个修改后的版本中,我移除了"in"后面跟的范围指示(因为你没有动态改变样本范围),这样可以避免将"in"误解释为变量名。如果你确实需要在每次循环中改变样本范围,请确保你有正确的方法来标识这些观测值,并相应地调整代码中的条件语句或表达式。

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



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

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