1

我下载了位于此处的 X12 季节性调整程序:http ://www.census.gov/srd/www/x12a/x12downv03_pc.html

我按照设置进行了正确设置。当我选择要输入的文件时,我有四个要导入的文件扩展名选项,它们是“.spc”“.mta”“.dta”和“.”。

问题是我在 excel 中有数据,并且我已经通过搜索引擎进行了广泛的搜索,但我无法找到一种方法将 excel 中的数据转换为其中一种格式,因此我可以对我的数据进行季节性调整。谢谢

添加:在转换为 dta 文件后(由于下面留下的评论,使用 R),看起来该程序也让您将其转换为 .spc 文件。任何人都知道如何做到这一点?谢谢

4

3 回答 3

4

我的第一反应是:(1)以简单的方式从 excel 中导出数据,例如 csv。(2) 将该数据导入 R (3) 使用 R 库“foreign”以 .dta 格式导出数据。

因此,文件“test.csv”包含:

V1,V2
1,2
3,4
5,6

您可以执行以下操作来生成“test.dta”:

library(foreign)
testdata <- read.csv("test.csv")
write.dta(testdata,"test.dta")

瞧,.dta 格式的数据。这对你所拥有的有用吗?

于 2011-08-11T23:12:16.303 回答
4

我只使用过 X12 的命令行版本,但听起来您可能使用的是 windows 界面?如果是这样,以下可能不完全准确,但应该足够接近(我希望!)。

您引用的 .dta 和 .mta 文件只是包含要处理的规范文件或数据文件的文本列表的元文件;特别是 X12 使用的 .dta 文件不是像 Nathan 的基于 R 的答案产生的那样的 Stata 数据格式文件。最好不要使用元文件,直到您足够舒适地使用该软件来调整单个时间序列。

您可以以制表符分隔的变量格式(年月/季度值)导出数据,不带标题并将其用作数据文件。您还可以使用由空格、制表符或换行符分隔的简单数据值列表,然后告诉 X12ARIMA 该系列的开始日期和结束日期在 .spc 文件中。

.spc 文件不包含输入数据,它是一个规范文件,告诉 X12 在哪里可以找到数据文件以及您希望如何处理这些数据——您必须自己编写它们或在 Win X 中创建它们- 12.

理想情况下,您应该为每个要调整的时间序列编写一个单独的 .spc 文件;虽然您可以编写一个 .spc 文件来调用 X12 的许多自动选择和识别过程,但将过程视为黑匣子通常不是一个好主意,并且通常需要在 .spc 中进行一些手动干预才能获得良好的质量调整(如果涉及季节性休息,则必不可少)。我发现从适合您的计算环境的相当通用的骨架 .spc 文件开始很有帮助,然后从那里根据每个系列的需要对其进行调整。

如果您真的想使用单个 .spc 文件来调整多个系列,那么您可以提供一个 .dta 文件中的数据文件列表和一个指示 X12ARIMA 如何调整它们的单个 .spc 文件,但请注意确保这是适合您的数据!

该站点上的“开始在您的 PC 上使用 X-12-ARIMA 输入文件”文档可能是开始阅读的好地方,但您可能最终不得不查阅完整的参考文档(特别是第 3 章和第 7 章) ) 也是如此。

编辑后记:

英国国家统计局在此处 (archive.org) 在线提供了使用 X12ARIMA 进行季节性调整的指南草案 值得一看。这比人口普查局的文件更容易处理。

于 2011-08-16T16:16:22.680 回答
0

瑞安,

这并不优雅,但它可能对你有用。在此示例中,我尝试复制人口普查文档中示例 3.2 中的规范文件。

将数据连接成一个文本字符串,然后在 SAVE AS 命令下使用 MS-DOS (TXT) 格式保存该单个文本字符串。要制作文本字符串,首先在列标题上方插入两个单元格,然后在第二个单元格中键入以下文本。

系列{标题=

接下来,在列标题中的文本前后插入双引号,如下所示:

《家电卖场月度零售额》

在最后一个数据行的正下方,插入列出模型规格的文本行,如下所示:

)
start= 1972.jul}    
transform{function = log}
regression{variables=td}
indentify[diff=(0,1) sdiff=(0,1)}

因此,您应该具有以下内容:

<blank row>
series{title=
"Monthly Retail Sales of Household Appliance Stores"
530
529
...
592
590
start= 1972.jul}
transform{function = log}
regression{variables=td}
indentify{diff=(0,1) sdiff=(0,1)}

对于接下来的说明,我假设文本 *series{title= * 出现在单元格 A2 中并且单元格 B1 为空。在单元格 B2 中,插入以下内容:

=连接(B1,A2,“”)

然后将此公式复制到该列的每个单元格中,以将 A 列中的所有文本连接到 B 列末尾的单个单元格中。最后,使用 PASTE SPECIAL/VALUE 将最终单元格复制到新电子表格的单元格 A1,并保存此电子表格使用另存为:*TXT(MS-DOS),但将扩展名更改为“.spc”。

祝你好运(从我读到的人口普查文件的一点点来看——你会需要它)。

于 2011-08-12T21:02:18.563 回答