这是测试自杀人数数据中季节性影响的适当方法吗?


24

我有17年(1995年至2011年)的死亡证明数据与美国某州的自杀死亡有关。关于自杀和自杀的个月数/季节,有很多神话,其中很多是自相矛盾的,我的文献中经过审查,我对所使用的方法或结果的把握并不清楚。

因此,我着手确定是否可以确定我的数据集中在任何给定月份内自杀的可能性或高或低。我所有的分析都在R中完成。

数据中的自杀总数为13,909。

如果您以自杀次数最少的年份为例,它们发生在309/365天(85%)。如果您查看自杀次数最多的年份,则发生在339/365天(93%)。

因此,每年都有相当多的日子没有自杀。但是,如果将这17年的总和汇总起来,那么一年中的每一天(包括2月29日)都会有自杀事件(尽管平均值为38时只有5次)。

在此处输入图片说明

(在我看来)仅将一年中每一天的自杀总数加起来并不表示明显的季节性。

按月汇总,每月平均自杀范围为:

(m = 65,sd = 7.4,至m = 72,sd = 11.1)

我的第一种方法是按年份汇总所有年份的数据集,并在计算出原假设的预期概率后得出卡氏检验,即按月计算的自杀人数没有系统差异。我考虑了天数(并针对taking年调整了2月),计算了每个月的概率。

卡方结果表明按月没有明显变化:

# So does the sample match  expected values?
chisq.test(monthDat$suicideCounts, p=monthlyProb)
# Yes, X-squared = 12.7048, df = 11, p-value = 0.3131

下图显示了每月的总数。水平红线分别位于2月,30天和31天月份的期望值。与卡方检验一致,对于预期计数,没有一个月份在95%置信区间之外。 在此处输入图片说明

我以为我已经做完了,直到我开始研究时间序列数据。正如我想象的那样,我首先使用stlstats包中的函数进行非参数的季节性分解方法。

为了创建时间序列数据,我从汇总的每月数据开始:

suicideByMonthTs <- ts(suicideByMonth$monthlySuicideCount, start=c(1995, 1), end=c(2011, 12), frequency=12) 

# Plot the monthly suicide count, note the trend, but seasonality?
plot(suicideByMonthTs, xlab="Year",
  ylab="Annual  monthly  suicides")

在此处输入图片说明

     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1995  62  47  55  74  71  70  67  69  61  76  68  68
1996  64  69  68  53  72  73  62  63  64  72  55  61
1997  71  61  64  63  60  64  67  50  48  49  59  72
1998  67  54  72  69  78  45  59  53  48  65  64  44
1999  69  64  65  58  73  83  70  73  58  75  71  58
2000  60  54  67  59  54  69  62  60  58  61  68  56
2001  67  60  54  57  51  61  67  63  55  70  54  55
2002  65  68  65  72  79  72  64  70  59  66  63  66
2003  69  50  59  67  73  77  64  66  71  68  59  69
2004  68  61  66  62  69  84  73  62  71  64  59  70
2005  67  53  76  65  77  68  65  60  68  71  60  79
2006  65  54  65  68  69  68  81  64  69  71  67  67
2007  77  63  61  78  73  69  92  68  72  61  65  77
2008  67  73  81  73  66  63  96  71  75  74  81  63
2009  80  68  76  65  82  69  74  88  80  86  78  76
2010  80  77  82  80  77  70  81  89  91  82  71  73
2011  93  64  87  75 101  89  87  78 106  84  64  71

然后进行stl()分解

# Seasonal decomposition
suicideByMonthFit <- stl(suicideByMonthTs, s.window="periodic")
plot(suicideByMonthFit)

在此处输入图片说明

在这一点上,我开始感到担忧,因为在我看来,既有季节性因素又有趋势。经过大量的互联网研究,我决定遵循Rob Hyndman和George Athanasopoulos在其在线文本“预测:原理与实践”中的指示,特别是应用季节性ARIMA模型。

我使用adf.test()kpss.test()评估了平稳性,并得出了矛盾的结果。他们都拒绝了原假设(注意到他们检验了相反的假设)。

adfResults <- adf.test(suicideByMonthTs, alternative = "stationary") # The p < .05 value 
adfResults

    Augmented Dickey-Fuller Test

data:  suicideByMonthTs
Dickey-Fuller = -4.5033, Lag order = 5, p-value = 0.01
alternative hypothesis: stationary

kpssResults <- kpss.test(suicideByMonthTs)
kpssResults

    KPSS Test for Level Stationarity

data:  suicideByMonthTs
KPSS Level = 2.9954, Truncation lag parameter = 3, p-value = 0.01

然后,我使用书中的算法来查看是否可以确定趋势和季节都需要完成的差异量。我以nd = 1结束,ns = 0。

然后auto.arima,我运行,选择了一个既具有趋势又具有季节性成分以及“漂移”类型常数的模型。

# Extract the best model, it takes time as I've turned off the shortcuts (results differ with it on)
bestFit <- auto.arima(suicideByMonthTs, stepwise=FALSE, approximation=FALSE)
plot(theForecast <- forecast(bestFit, h=12))
theForecast

在此处输入图片说明

> summary(bestFit)
Series: suicideByMonthFromMonthTs 
ARIMA(0,1,1)(1,0,1)[12] with drift         

Coefficients:
          ma1    sar1     sma1   drift
      -0.9299  0.8930  -0.7728  0.0921
s.e.   0.0278  0.1123   0.1621  0.0700

sigma^2 estimated as 64.95:  log likelihood=-709.55
AIC=1429.1   AICc=1429.4   BIC=1445.67

Training set error measures:
                    ME    RMSE     MAE       MPE     MAPE     MASE       ACF1
Training set 0.2753657 8.01942 6.32144 -1.045278 9.512259 0.707026 0.03813434

最后,我查看了拟合的残差,如果我理解正确,则由于所有值都在阈值限制内,因此它们表现得像白噪声,因此该模型相当合理。我按照文中所述进行了portmanteau测试,p值远高于0.05,但是我不确定参数是否正确。

Acf(residuals(bestFit))

在此处输入图片说明

Box.test(residuals(bestFit), lag=12, fitdf=4, type="Ljung")

    Box-Ljung test

data:  residuals(bestFit)
X-squared = 7.5201, df = 8, p-value = 0.4817

回到并再次阅读有关Arima建模的章节后,我现在意识到 auto.arima确实选择了对趋势和季节进行建模。我也意识到预测并不是我应该做的特定分析。我想知道是否应将特定月份(或更普遍的一年中的某个时间)标记为高风险月份。预测文献中的工具似乎是高度相关的,但对于我的问题而言可能并不是最好的。任何和所有的输入是非常感谢。

我正在发布指向包含每日计数的csv文件的链接。该文件如下所示:

head(suicideByDay)

        date year month day_of_month t count
1 1995-01-01 1995    01           01 1     2
2 1995-01-03 1995    01           03 2     1
3 1995-01-04 1995    01           04 3     3
4 1995-01-05 1995    01           05 4     2
5 1995-01-06 1995    01           06 5     3
6 1995-01-07 1995    01           07 6     2

daily_suicide_data.csv

计数是当天发生的自杀次数。“ t”是从1到表中的总天数的数字序列(5533)。

我注意到了以下评论,并思考了与自杀和季节建模有关的两件事。首先,关于我的问题,几个月只是代表季节变化的代理人,我对某个月是否与其他月不同不感兴趣(这当然是一个有趣的问题,但这不是我要提出的问题)调查)。因此,我认为仅使用所有月份的前28天来均衡月份就很有意义。当您这样做时,您的拟合度会稍差一些,我认为这是缺乏季节性的更多证据。在下面的输出中,第一个拟合是下面一个答案的复制品,其中使用月份及其真实天数,然后是数据集suicideByShortMonth其中从所有月份的前28天开始计算自杀人数。我对人们对这种调整是否是一个好主意,没有必要或有害的想法感兴趣?

> summary(seasonFit)

Call:
glm(formula = count ~ t + days_in_month + cos(2 * pi * t/12) + 
    sin(2 * pi * t/12), family = "poisson", data = suicideByMonth)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.4782  -0.7095  -0.0544   0.6471   3.2236  

Coefficients:
                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)         2.8662459  0.3382020   8.475  < 2e-16 ***
t                   0.0013711  0.0001444   9.493  < 2e-16 ***
days_in_month       0.0397990  0.0110877   3.589 0.000331 ***
cos(2 * pi * t/12) -0.0299170  0.0120295  -2.487 0.012884 *  
sin(2 * pi * t/12)  0.0026999  0.0123930   0.218 0.827541    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 302.67  on 203  degrees of freedom
Residual deviance: 190.37  on 199  degrees of freedom
AIC: 1434.9

Number of Fisher Scoring iterations: 4

> summary(shortSeasonFit)

Call:
glm(formula = shortMonthCount ~ t + cos(2 * pi * t/12) + sin(2 * 
    pi * t/12), family = "poisson", data = suicideByShortMonth)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.2414  -0.7588  -0.0710   0.7170   3.3074  

Coefficients:
                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)         4.0022084  0.0182211 219.647   <2e-16 ***
t                   0.0013738  0.0001501   9.153   <2e-16 ***
cos(2 * pi * t/12) -0.0281767  0.0124693  -2.260   0.0238 *  
sin(2 * pi * t/12)  0.0143912  0.0124712   1.154   0.2485    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 295.41  on 203  degrees of freedom
Residual deviance: 205.30  on 200  degrees of freedom
AIC: 1432

Number of Fisher Scoring iterations: 4

我进一步研究的第二件事是使用月作为季节代理。也许一个更好的季节指标是一个区域接收的日光小时数。此数据来自日光变化很大的北部州。下图是2002年以来的日光图表。

在此处输入图片说明

当我使用这些数据而不是一年中的月份时,效果仍然很大,但是效果非常非常小。残余偏差比上述模型大得多。如果白天是更好的季节模型,而拟合度不那么好,这是否更多地证明了季节性影响很小?

> summary(daylightFit)

Call:
glm(formula = aggregatedDailyCount ~ t + daylightMinutes, family = "poisson", 
    data = aggregatedDailyNoLeap)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.0003  -0.6684  -0.0407   0.5930   3.8269  

Coefficients:
                  Estimate Std. Error z value Pr(>|z|)    
(Intercept)      3.545e+00  4.759e-02  74.493   <2e-16 ***
t               -5.230e-05  8.216e-05  -0.637   0.5244    
daylightMinutes  1.418e-04  5.720e-05   2.479   0.0132 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 380.22  on 364  degrees of freedom
Residual deviance: 373.01  on 362  degrees of freedom
AIC: 2375

Number of Fisher Scoring iterations: 4

我要发布白天时间,以防有人想玩这个游戏。注意,这不是a年,因此,如果要输入the年的分钟数,则可以外推或检索数据。

state.daylight.2002.csv

[ 编辑以从已删除的答案中添加情节(希望rnso不介意我将已删除的答案中的情节移至此问题。svannoy,如果您根本不希望添加此情节,则可以还原它)

在此处输入图片说明


1
“我们的50个州中的一个”一词意味着所有读者都属于美国。显然,许多外星人也潜伏在这里。
尼克·考克斯

1
这是来自公共数据集吗?您能否提供每周甚至每天的数据?
猫王2015年

1
@Elvis-我发布了指向每日计数数据的链接。数据来自死亡证明,这些死亡证明是“公共记录”,但需要获取过程。但是,汇总计数数据没有。PS-我自己尝试了该链接,但该链接仍然有效,但是之前我没有以这种方式发布到公共Dropbox文件夹中,因此请让我知道该链接是否无效。
svannoy 2015年

1
由于您的数据是计数,我希望方差与均值相关。通常的时间序列模型不能解决这个问题(但是,您可以尝试说一个转换,例如Freeman-Tukey),或者您可以查看为计数数据设计的时间序列模型。(如果您不这样做,则可能不会成为一个大问题,因为该数字的范围仅是两倍左右。)
Glen_b -Resstate Monica

1
ÿŤμŤVarÿŤ=μŤ

Answers:


13

泊松回归怎么样?

我创建了一个数据框,其中包含您的数据,以及t时间索引(以月为单位)和变量monthdays(每月的天数)。

T <- read.table("suicide.txt", header=TRUE)
U <- data.frame( year = as.numeric(rep(rownames(T),each=12)), 
         month = rep(colnames(T),nrow(T)), 
         t = seq(0, length = nrow(T)*ncol(T)), 
         suicides = as.vector(t(T)))
U$monthdays <- c(31,28,31,30,31,30,31,31,30,31,30,31)
U$monthdays[ !(U$year %% 4) & U$month == "Feb" ] <- 29

所以看起来像这样:

> head(U,14)
   year month  t suicides monthdays
1  1995   Jan  0       62        31
2  1995   Feb  1       47        28
3  1995   Mar  2       55        31
4  1995   Apr  3       74        30
5  1995   May  4       71        31
6  1995   Jun  5       70        30
7  1995   Jul  6       67        31
8  1995   Aug  7       69        31
9  1995   Sep  8       61        30
10 1995   Oct  9       76        31
11 1995   Nov 10       68        30
12 1995   Dec 11       68        31
13 1996   Jan 12       64        31
14 1996   Feb 13       69        29

现在,让我们将一个具有时间效应的模型与一个天数效应与一个添加了月效应的模型进行比较:

> a0 <- glm( suicides ~ t + monthdays, family="poisson", data = U )
> a1 <- glm( suicides ~ t + monthdays + month, family="poisson", data = U )

这是“小”模型的摘要:

> summary(a0)

Call:
glm(formula = suicides ~ t + monthdays, family = "poisson", data = U)

Deviance Residuals:
    Min       1Q   Median       3Q      Max
-2.7163  -0.6865  -0.1161   0.6363   3.2104

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.8060135  0.3259116   8.610  < 2e-16 ***
t           0.0013650  0.0001443   9.461  < 2e-16 ***
monthdays   0.0418509  0.0106874   3.916 9.01e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 302.67  on 203  degrees of freedom
Residual deviance: 196.64  on 201  degrees of freedom
AIC: 1437.2

Number of Fisher Scoring iterations: 4

您可以看到这两个变量在很大程度上具有边际效应。现在看一下更大的模型:

> summary(a1)

Call:
glm(formula = suicides ~ t + monthdays + month, family = "poisson",
    data = U)

Deviance Residuals:
     Min        1Q    Median        3Q       Max
-2.56164  -0.72363  -0.05581   0.58897   3.09423

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept)  1.4559200  2.1586699   0.674    0.500
t            0.0013810  0.0001446   9.550   <2e-16 ***
monthdays    0.0869293  0.0719304   1.209    0.227
monthAug    -0.0845759  0.0832327  -1.016    0.310
monthDec    -0.1094669  0.0833577  -1.313    0.189
monthFeb     0.0657800  0.1331944   0.494    0.621
monthJan    -0.0372652  0.0830087  -0.449    0.653
monthJul    -0.0125179  0.0828694  -0.151    0.880
monthJun     0.0452746  0.0414287   1.093    0.274
monthMar    -0.0638177  0.0831378  -0.768    0.443
monthMay    -0.0146418  0.0828840  -0.177    0.860
monthNov    -0.0381897  0.0422365  -0.904    0.366
monthOct    -0.0463416  0.0830329  -0.558    0.577
monthSep     0.0070567  0.0417829   0.169    0.866
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 302.67  on 203  degrees of freedom
Residual deviance: 182.72  on 190  degrees of freedom
AIC: 1445.3

Number of Fisher Scoring iterations: 4

好吧,monthdays效果当然消失了。估计只有感谢leap年!!将其保留在模型中(并考虑leap年)可以使用剩余偏差来比较两个模型。

> anova(a0, a1, test="Chisq")
Analysis of Deviance Table

Model 1: suicides ~ t + monthdays
Model 2: suicides ~ t + monthdays + month
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1       201     196.65
2       190     182.72 11   13.928    0.237

cos2πŤ122πŤ12

> a2 <- glm( suicides ~ t + monthdays + cos(2*pi*t/12) + sin(2*pi*t/12),
             family="poisson", data = U )
> summary(a2)

Call:
glm(formula = suicides ~ t + monthdays + cos(2 * pi * t/12) +
    sin(2 * pi * t/12), family = "poisson", data = U)

Deviance Residuals:
    Min       1Q   Median       3Q      Max
-2.4782  -0.7095  -0.0544   0.6471   3.2236

Coefficients:
                     Estimate Std. Error z value Pr(>|z|)
(Intercept)         2.8676170  0.3381954   8.479  < 2e-16 ***
t                   0.0013711  0.0001444   9.493  < 2e-16 ***
monthdays           0.0397990  0.0110877   3.589 0.000331 ***
cos(2 * pi * t/12) -0.0245589  0.0122658  -2.002 0.045261 *
sin(2 * pi * t/12)  0.0172967  0.0121591   1.423 0.154874
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 302.67  on 203  degrees of freedom
Residual deviance: 190.37  on 199  degrees of freedom
AIC: 1434.9

Number of Fisher Scoring iterations: 4

现在将其与null模型进行比较:

> anova(a0, a2, test="Chisq")
Analysis of Deviance Table

Model 1: suicides ~ t + monthdays
Model 2: suicides ~ t + monthdays + cos(2 * pi * t/12) + sin(2 * pi *
    t/12)
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1       201     196.65                   
2       199     190.38  2   6.2698   0.0435 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

因此,可以肯定地说这暗示了季节性的影响。


2
p

2
我完全同意,这就是我的暗示:)“可以肯定地说这表明有效果”;而不是“有效果”!我认为有趣的是这种三角变换,它很自然,我不明白为什么它不经常出现。但这只是一个起点……引导,评估模型……还有很多事情要做。
猫王2015年

1
没有问题!那时我很糟糕,我无法发现这个笑话。:)
usεr11852恢复单胞菌说,

2
+1。泊松遇到了傅立叶。。。我认为经济学家和其他一些经济学家强调了指标变量,因为季节性可能很棘手,但是三角方法通常会有所帮助。
尼克·考克斯

2
确实。我撰写的教程评论可通过stata-journal.com/article.html?article=st0116
Nick Cox

8

卡方检验是对问题进行初步了解的一种好方法。

stl分解可以是误导作为工具来测试用于季节性的存在。即使将白噪声(无结构的随机信号)作为输入传递,此过程也设法返回稳定的季节性模式。尝试例如:

plot(stl(ts(rnorm(144), frequency=12), s.window="periodic"))

查看自动ARIMA模型选择过程选择的订单也有些冒险,因为季节性ARIMA模型并不总是涉及季节性(有关详细信息,请参阅此讨论)。在这种情况下,所选模型会产生季节性周期,@ RichardHardy的评论是合理的,但是,需要进一步的了解才能得出自杀是由季节性模式驱动的结论。

下面,基于对您发布的每月系列的分析,我总结了一些结果。这是根据基本结构时间序列模型估算的季节性成分:

require(stsm)
m <- stsm.model(model = "llm+seas", y = x)
fit <- stsmFit(m, stsm.method = "maxlik.td.scoring")
plot(tsSmooth(fit)$states[,2], ylab = "")
mtext(text = "seasonal component", side = 3, adj = 0, font = 2)

估计季节成分

使用具有默认选项的软件TRAMO-SEATS提取了相似的组件。我们可以看到,估计的季节性模式在整个时间范围内都是不稳定的,因此,不支持在抽样期间跨月自杀人数的周期性模式的假设。运行带有默认选项的X-13ARIMA-SEATS软件,季节性综合测试得出的结论是不存在可识别的季节性。

编辑(请参见 下面的答案和我的评论以获取可识别的季节性定义)。

考虑到您的数据的性质,值得对基于时间序列方法的分析添加计数数据模型(例如,泊松模型)并测试该模型中季节性的重要性。将标签计数数据添加到您的问题中可能会导致在此方向上获得更多视图和潜在答案。


感谢@javiacalle,我将调查您建议的方法。我能否问一下您发布的图表的结论,是振幅随年份的增长而增加的事实,这是您发表评论的依据,“我们可以看到估计的季节性模式在一段时间内不稳定”,或者包括更细微的观察,即每个峰的形状略有不同?我假设是前者,但我们知道假设将我们引向何方。
svannoy 2015年

2
χ2

@svannoy根据我在回答中使用的时间序列方法得出的主要结论是,样本数据中没有明显的季节性模式。尽管季节周期解释了数据的部分可变性,但由于高度不规则的波动将季节模式遮盖住,因此无法可靠地确定季节模式(也可以通过显示问题中所选ARIMA模型的增益函数进行检查) 。
javlacalle 2015年

@oDDsKooL我也做了一周的一天,卡方检验,周六/周日低于预期,周一位/周二只是上面....
svannoy

6

如我的评论所述,这是一个非常有趣的问题。检测季节性并非仅是一项统计工作。合理的方法是咨询理论和专家,例如:

  • 心理学家
  • 精神科医生
  • 社会学家

对这个问题的理解是“为什么”会有季节性来补充数据分析。关于数据,我使用了一种出色的分解方法,称为状态空间方法的一种形式,称为未观察到的组件模型(UCM)。另请参阅库普曼的这篇非常容易理解的文章。我的方法类似于@Javlacalle。它不仅提供了分解时间序列数据的工具,而且还通过显着性测试客观地评估了季节性的存在与否。我不是对非实验数据进行重要性测试的忠实拥护者,但是我不知道您可以通过其他任何程序来检验关于时序数据存在/不存在季节性的假设。

许多人忽略但一个很想了解的非常重要的功能是季节性的类型:

  1. 随机-随机变化且难以预测
  2. 确定性-不变,完全可预测。您可以使用虚拟或三角函数(sin / cos等)进行建模

对于较长的时间序列数据(例如您的数据),季节性可能会随时间变化。同样,UCM是我知道的唯一可以检测到这些随机/确定性季节性的方法。UCM可以将您的问题分解为以下“组件”:

Time Series Data = level + Slope + Seasonality + Cycle + Causal + Error(Noise).

您还可以测试水平,斜率,周期是确定性的还是随机的。请注意level + slope = trend。下面,我将使用UCM对您的数据进行一些分析。我使用SAS进行分析。

data input;
format date mmddyy10.;
date = intnx( 'month', '1jan1995'd, _n_-1 );
      input deaths@@;
datalines;
62    47  55  74  71  70  67  69  61  76  68  68
64    69  68  53  72  73  62  63  64  72  55  61
71    61  64  63  60  64  67  50  48  49  59  72
67    54  72  69  78  45  59  53  48  65  64  44
69    64  65  58  73  83  70  73  58  75  71  58
60    54  67  59  54  69  62  60  58  61  68  56
67    60  54  57  51  61  67  63  55  70  54  55
65    68  65  72  79  72  64  70  59  66  63  66
69    50  59  67  73  77  64  66  71  68  59  69
68    61  66  62  69  84  73  62  71  64  59  70
67    53  76  65  77  68  65  60  68  71  60  79
65    54  65  68  69  68  81  64  69  71  67  67
77    63  61  78  73  69  92  68  72  61  65  77
67    73  81  73  66  63  96  71  75  74  81  63
80    68  76  65  82  69  74  88  80  86  78  76
80    77  82  80  77  70  81  89  91  82  71  73
93    64  87  75  101 89  87  78  106 84  64  71
;
run;

ods graphics on;
 proc ucm data = input plots=all; 
      id date interval = month; 
      model deaths ; 
      irregular ; 
      level checkbreak; 
      season length = 12 type=trig var = 0 noest; * Note I have used trigonometry to model seasonality;
   run;

   ods graphics off;

在考虑了不同的组件和组合的几次迭代之后,我得到了以下形式的简约模型:

存在随机水平+确定性季节性+一些异常值,并且数据没有其他可检测的特征。

在此处输入图片说明

以下是各个组成部分的重要性分析。请注意,我使用了三角函数(即PROC UCM中的季节性声明中的sin / cos),类似于@Elvis和@Nick Cox。您也可以在UCM中使用伪编码,当我进行测试时,两者都给出了相似的结果。有关在SAS中模拟季节性的两种方法之间的差异,请参阅此文档

在此处输入图片说明

如上所示,您有异常值:2009年出现了两个脉冲和一个水平移位(2009年之后经济/住房泡沫发挥了作用),这可以通过进一步的深入分析来解释。使用的一个很好的特点Proc UCM是它提供了出色的图形输出。

以下是季节性以及趋势和季节性的组合图。剩下的就是噪音

在此处输入图片说明 在此处输入图片说明

如果要使用p值和显着性检验,则更重要的诊断测试是检查残差是否没有模式且呈正态分布,这在使用UCM的上述模型中得到了满足,并且在残差诊断图中如acf / pacf所示和别的。

在此处输入图片说明

结论:根据使用UCM进行的数据分析和显着性检验,数据似乎具有季节性,我们看到5月/ 6月/ 7月的夏季死亡人数高,而12月和2月的冬季最低。

其他注意事项:还请考虑季节性变化幅度的实际意义。要否定反事实论点,请咨询领域专家以进一步补充和验证您的假设。

我绝不是说这是解决此问题的唯一方法。我喜欢UCM的功能是,它可以让您显式地建模所有时间序列功能,并且还具有很高的可视性。


感谢您的回答和有趣的评论。我不知道UCM,这看起来很有趣,我会尽量记住这一点……
Elvis 2015年

(+1)有趣的分析。对于确定是否存在明显的确定性季节性模式,我仍然会保持谨慎,但是您的结果要求仔细研究这种可能性。Canova和Hansen的季节性稳定性检验可能会有所帮助,例如,此处进行了说明。
javlacalle 2015年

gretlπ/6

1
+1。许多有趣和有用的评论。您可以在气象学家,精神病学家,社会学家的列表中添加气象学家/气候学家。这样的人想补充一点,在降雨和温度周期上没有两年是相同的。我本可以粗略地猜测冬天会出现更多的萧条(白天时间较短,等等),但是鉴于一些数据,我的猜测是如此之多。
尼克·考克斯

感谢@forecaster,这为我的学习增添了很多。我是一名拥有公共卫生学位的心理学家。我要将流行病学家添加到您的列表中。正如我在开始时提到的,关于季节性趋势和自杀有很多神话(又称理论)。人们可以在任何方向上对季节性趋势提出有力的论据,因此我们需要进行定量分析以(确认)。从公共卫生的角度来看,如果我们发现严重的不连续性,我们可以针对干预措施。我没有在此数据中看到。从自杀理论的角度来看,确认很小的趋势也可以为理论发展提供信息。
svannoy 2015年

1

对于初始视觉估计,可以使用以下图形。用黄土曲线及其95%置信区间绘制月度数据,看来年中的上升在6月达到峰值。其他因素也可能导致数据分布广泛,因此季节性趋势可能会在此原始数据黄土图中被掩盖。数据点已抖动。

在此处输入图片说明

编辑:下图显示了黄土曲线和置信区间,与上个月的数字相比,病例数的变化:

在此处输入图片说明

这也表明,在上半年的月份中,案件数量持续上升,而在下半年则有所下降。这也暗示了年中的高峰。但是,全年的置信区间很宽,跨越0,即没有变化,表明缺乏统计意义。

一个月的差额可以与前三个月的平均值进行比较:

在此处输入图片说明

这表明五月份的人数明显增加,十月份的人数下降。


(-1)这个问题已经有三个高质量的答案。你的回答也并不能回答贴出的问题-你可以将它张贴作为评论。您没有提供如何分析此数据的答案。
蒂姆

我之前曾在这里发表评论(请参阅问题下方),但是我无法在评论中发表评论。
rnso 2015年

尽管我在这里了解社论,但我会说@rnso提供了一个不错的图表,很好地说明了潜在的季节性因素,应该成为我原始帖子的一部分。
svannoy 2015年

我理解并同意,但这仍然不是答案,而是评论或改进。@rnso可能已通过评论向您建议您可以查看或包含此类情节。
蒂姆

@Glen_b,@ Tim:我添加了另一个可能有用的图,因此无法在注释中添加。
rnso
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.