无硬编码零假设的Stata单样本t检验

无硬编码零假设的Stata单样本t检验,stata,Stata,我是斯塔塔的新手,我在做一些事情时遇到了困难,我想这并不是一件不寻常的事情。我正在使用面板数据集(国家和时间)。每个观测值由一个国家、一年和一个变量组成,称之为x。数据按国家年份排序(即,与给定国家相对应的所有观测值都是连续的,并按年份排序) 每个国家都有对应于1960年至2013年(含)的54年数据。我希望通过以下方式运行t测试: by country: ttest x = x[54] if year != 2013 但我得到了一个错误(“不允许权重”),我不知道如何解释。我可以通过硬编码和

我是斯塔塔的新手,我在做一些事情时遇到了困难,我想这并不是一件不寻常的事情。我正在使用面板数据集(国家和时间)。每个观测值由一个国家、一年和一个变量组成,称之为x。数据按国家年份排序(即,与给定国家相对应的所有观测值都是连续的,并按年份排序)

每个国家都有对应于1960年至2013年(含)的54年数据。我希望通过以下方式运行t测试:

by country: ttest x = x[54] if year != 2013
但我得到了一个错误(“不允许权重”),我不知道如何解释。我可以通过硬编码和使用常用语法来实现

by country: ttest x = # if year != 2013
但我希望避免硬编码,因为有超过100个国家,我希望能够灵活地添加/删除国家(通常这只是糟糕的形式)

我的第一个想法是使用

levelsof country, local(levels)
foreach c of local levels {
    local y x if year == 2013
    ttest x = y if year != 2013
    // some code to store the value that I haven't figured out yet
}

但是不能使用“if”来声明本地宏。我很迷茫,希望你们能给予我帮助。谢谢大家!

如果不调整时间和空间依赖结构,学生的t测试就没有什么意义,除非你有理由将数据视为等同于来自同一分布的独立抽取。您可以进行测试,但标准误差和P值如果不是伪造的,也是可疑的。也就是说,你的时间序列测试面临一个问题;总体而言,您的测试面临另一个问题。要获得一个好的解释,请参阅Box、Hunter、Hunter、Statistics For Experiments的任一版本。约翰·威利

撇开这一点不谈,斯塔塔被
[]
所扼杀,这被误读为试图指定权重。我猜是这样

by country: ttest x = `=x[54]' if year != 2013  
对Stata来说,这是可以接受的语法,尽管统计数据仍然可疑。这里的细节是类似宏的语法

`=  ' 
其效果是,在将行传递到
ttest
之前,Stata将对给定的表达式求值。因此,结果(一个数值)将是
ttest
命令看到的结果

这在精神上与您想象的很自然地相似,尽管您的代码离合法和正确还有一段距离

更新此计算也可能有帮助:

egen mean = mean(x / (year != 2013)), by(country) 
egen sd = sd(x / (year != 2013), by(country) 
gen z = (x - mean) / sd if year == 2013 
list country x z if year == 2013 

嗯:你是说我的语法帮助你得到了结果,我警告过你,你是可疑的?关于你关于统计数据的观点:我同意这是可疑的。事实上,我并不是在估计作为观察样本基础的随机过程的参数。我只感兴趣的是评估前一个样本给出的最后一个观察结果有多不寻常(而不是有多不可能)——不管潜在分布是什么。在我看来,这个t-统计量是一个常数因子(取决于n),远离z-分数,z-分数是我用来评估这一点的常用工具。但我同意,观察结果是相关的,这不是测试过程特征的好方法是的,这正是我的意思:)谢谢你对目标的解释。显然,这是你的选择,但我认为(2013年的值-样本平均值)/样本SD更直接。否则,你就要承担做t检验的责任,还要解释说你知道这没有完全意义。是的,我同意。谢谢你的想法。肯定要恢复到z分数;直接这么做可能更容易。干杯