我试图通过从 3 个其他变量(即 A、B 和 C)创建变量 D 来计算 z 分数。我试图将 D 生成为:D= (AB)/C 但由于某种原因,当我这样做时,它产生非常大的数字。当我只做 (AB) 时,它没有得到我手工计算时应该有的结果,而不是 -2,我是 -105.66。
变量 A 是 'long' 而变量 B 是 'float',我不确定这是否是原因?我的状态语法是:
gen zscore= (height-avheight)/meansd
不工作。
我试图通过从 3 个其他变量(即 A、B 和 C)创建变量 D 来计算 z 分数。我试图将 D 生成为:D= (AB)/C 但由于某种原因,当我这样做时,它产生非常大的数字。当我只做 (AB) 时,它没有得到我手工计算时应该有的结果,而不是 -2,我是 -105.66。
变量 A 是 'long' 而变量 B 是 'float',我不确定这是否是原因?我的状态语法是:
gen zscore= (height-avheight)/meansd
不工作。
您混淆了标量和变量。这是一个解决方案(砍掉前四行并替换x
为height
以使计算适合您的代码):
// example data
clear
set obs 50
gen x = runiform()
// summarize
qui su x
// store scalars
sca de mu = r(mean)
sca de sd = r(sd)
// z-score
gen zx = (x - mu) / sd
su zx
x
它的 z 分数zx
是具有许多值的变量,而mu
和sd
是常数。您可以使用标量或宏在 Stata 中编码常量。
我不确定你想得到什么,但我会使用来自 Stata 的自动数据来解释。这是Stata中的基本内容。假设我想测试 price=3
sysuse auto
sum price
#return list which is optional command
scalar myz=(3-r(mean))/r(sd) #r(mean) and r(sd) gives the mean and sd of price, if that is given you can simply enter the value for that
dis myz
-2.0892576
因此,这里的 z 值为 -2.09。