For loop 价值标准

For loop 价值标准,for-loop,stata,For Loop,Stata,这是我的代码: drop _all set obs 50 forvalues k = 1/2 { gen b`k' = . } forvalues i=1/1000 { gen u = rnormal() gen d = rnormal() forvalues j = 1/2 { quietly replace b`j' = mean(u) in `i' quietly replace b`j' = mean(d) in `i' } drop u d } forvalue

这是我的代码:

drop _all
set obs 50

forvalues k = 1/2 {
gen b`k' = .
}

forvalues i=1/1000 {
gen u = rnormal()
gen d = rnormal()


forvalues j = 1/2 {
quietly replace b`j' =  mean(u)  in `i' 
quietly replace b`j' =  mean(d)  in `i' 

}
drop u d
}

forvalues l = 1/6 {
su b`l'
}
hist b1
如果我将obs设置为50,它将不起作用。错误是

Obs。数量超出范围

如果我将obs设置为>1000,则工作正常


有什么问题吗?

像您这样发布代码非常好,而且在堆栈溢出中大部分时间都需要。但是一个口头的,附带的解释,没有坏处;恰恰相反,它可能非常有用

你所说的错误把我吓坏了。运行该代码时收到的第一个错误是

未知函数均值() r(133)

因此,一个好的做法是,在Stata在结果窗口中显示输入和输出时,发布准确的输入和输出,并引用已安装的用户编写命令的来源(如果有)

我猜你是在做模拟练习。具体来说,你需要两个随机变量的平均值,每个随机变量有50个观测值,你需要计算这些平均值1000次。最后,您的结果包含两个变量(
b1
b2
),每个变量有1000个观察值。每次观察都是平均值。您可能感兴趣的命令是
postfile
。您需要查看手册:[P]postfile,其中的帮助非常全面

clear all
set more off

set seed 2368056

*----- compute means -----

tempname memhold
tempfile results

postfile `memhold' b1 b2 using `results'
quietly forvalues i = 1/1000 {

    set obs 50

    gen u = rnormal()
    gen d = rnormal()

    summarize u, meanonly
    scalar mu = r(mean)

    summarize d, meanonly
    scalar md = r(mean)

    post `memhold' (mu) (md)

    drop _all
}

postclose `memhold'

*----- check final results -----

use `results', clear
list
命令
summary
将以存储结果的形式提供方法(请参见
帮助存储结果
)。 还请注意,
set obs 50
将变量
u
d
的观察次数设置为50。但是循环的数量(1000)是控制最终结果大小的因素
post
将收集不同数据集中的计算平均值。完成后,可以使用
use
加载结果文件


请参阅:

@Roberto Ferrer发现了代码中的几个问题。这里还有一些

在这个循环中

forvalues j = 1/2 {
    quietly replace b`j' =  mean(u)  in `i' 
    quietly replace b`j' =  mean(d)  in `i' 
}
forvalues l = 1/6 {
    su b`l'
}
第一条语句是徒劳的,因为第二条语句覆盖了刚刚完成的内容。猜猜看,你想要的根本不是一个循环,而是

   su u, meanonly 
   quietly replace b1 = r(mean) in `i' 
   su d, meanonly  
   quietly replace b2 = r(mean) in `i' 
在这个循环中

forvalues j = 1/2 {
    quietly replace b`j' =  mean(u)  in `i' 
    quietly replace b`j' =  mean(d)  in `i' 
}
forvalues l = 1/6 {
    su b`l'
}

要求Stata对变量进行总结是没有意义的<代码>b6,因为它们不存在