これは、自殺カウントデータの季節的影響をテストする適切な方法ですか?


24

私は、米国の州の自殺による死亡に関連する17年(1995年から2011年)の死亡証明書データを持っています。確認しましたが、使用した方法の明確な感覚や結果に対する自信が得られません。

そのため、データセット内の特定の月に自殺が多かれ少なかれ発生する可能性があるかどうかを判断できるかどうかを確認しました。私の分析はすべてRで行われます。

データに含まれる自殺者の総数は13,909人です。

自殺が最も少ない年を見ると、309/365日(85%)に発生します。自殺が最も多い年を見ると、それらは339/365日(93%)に発生しています。

したがって、毎年自殺のないかなりの日数があります。ただし、17年間すべてで集計すると、2月29日を含む1年の毎日に自殺があります(平均が38の場合は5人のみ)。

ここに画像の説明を入力してください

1年の各日に自殺者の数を単純に合計しても、明確な季節性を示すものではありません(私の目には)。

月ごとのレベルで集計すると、月あたりの平均自殺者の範囲は次のとおりです。

(m = 65、sd = 7.4、m = 72、sd = 11.1)

私の最初のアプローチは、すべての年の月ごとにデータセットを集計し、月ごとの自殺数に系統的な分散がないという帰無仮説の予想確率を計算した後、カイ二乗検定を行うことでした。日数を考慮して(そしてうるう年の2月を調整して)各月の確率を計算しました。

カイ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

下の画像は、1か月あたりの合計数を示しています。水平の赤い線は、それぞれ2月、30日月、31日月の期待値に配置されています。カイ2乗検定と一致して、予想カウントの95%信頼区間外にある月はありません。 ここに画像の説明を入力してください

時系列データの調査を開始するまで、私は終わったと思いました。多くの人が想像するstlように、statsパッケージの関数を使用したノンパラメトリック季節分解法から始めました。

時系列データを作成するには、集約された月次データから始めました。

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)

ここに画像の説明を入力してください

この時点で心配したのは、季節的な要素と傾向の両方があるように思えるからです。多くのインターネット調査の後、私は、特に季節ARIMAモデルを適用するために、オンラインテキスト「予測:原則と実践」に記載されているRob HyndmanとGeorge Athanasopoulosの指示に従うことにしました。

を使用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

最後に、フィットからの残差を調べました。これを正しく理解すれば、すべての値がしきい値の範囲内にあるため、ホワイトノイズのように動作し、モデルはかなり妥当です。本文で説明されているように、0.05をはるかに超えるp値を持つportmanteauテストを実行しましたが、パラメーターが正しいかどうかはわかりません。

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

アリマモデリングに関する章をもう一度読み、読んでいると、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)までの数値シーケンスです。

以下のコメントに注意し、自殺と季節のモデリングに関連する2つのことについて考えました。まず、私の質問に関して、月は季節の変化をマークするための単なるプロキシであり、特定の月が他の月と異なるかどうかには興味がありません(もちろん興味深い質問ですが、それは私が着手したものではありません調査)。したがって、すべての月の最初の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

2つ目は、月をシーズンのプロキシとして使用することの問題です。おそらく、季節のより良い指標は、地域が受け取る日照時間の数でしょう。このデータは、日光がかなり変化している北部の州からのものです。以下は、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

誰かがこれをいじくりたいと思う場合に備えて、私は夏時間を投稿しています。これはうるう年ではないため、うるう年の分を入力する場合は、データを推定または取得します。

state.daylight.2002.csv

[ 削除された回答からプロットを追加するために編集します(削除された回答のプロットをここまで質問に移動してもかまわないことを願っています。

ここに画像の説明を入力してください


1
「50州のうちの1つ」という言葉は、すべての読者が米国に属していることを意味します。明らかに多くのエイリアンもここに潜んでいます。
ニックコックス

1
それは公開データセットからですか?週ごと、または日ごとのデータを利用できるようにできますか?
エルビス

1
@Elvis-日次カウントデータへのリンクを投稿しました。データは「公開記録」である死亡証明書から取得されますが、取得にはプロセスが必要です。ただし、集計されたカウントデータは含まれません。PS-リンクを自分で試してみましたが、機能しましたが、この方法で公開のドロップボックスフォルダーに投稿したことがないため、リンクが機能しない場合はお知らせください。
-svannoy

1
データはカウントであるため、分散は平均に関連すると予想されます。通常の時系列モデルはそれを考慮していません(ただし、トランスフォーメーション、おそらくFreeman-Tukeyなどと言ってもよいでしょう)、またはカウントデータ用に設計された時系列モデルを見ることができます。(これを行わない場合、数は2倍程度の範囲であるため、大きな問題ではないかもしれません。)
Glen_b -Reinstate Monica

1
ytμtヴァールyt=μt

回答:


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

2つの変数が主に重大な限界効果を持っていることがわかります。次に、大きなモデルを見てください。

> 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効果は消えます。うるう年のおかげでのみ推定できます!! モデルに保持する(およびうるう年を考慮する)ことにより、2つのモデルを比較するために残差を使用できます。

> 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πt122πt12

> 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

次に、それをヌルモデルと比較します。

> 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
私は完全に同意します、それが私が暗示したものです:)「これは効果を示唆していると確かに言うことができます」; 「効果がある」ではありません!私が面白いと思うのは、この三角変換であり、非常に自然であり、なぜこれほど頻繁に見られないのか分かりません。しかし、これは出発点にすぎません...ブートストラップ、モデルの評価...やるべきことがたくさんあります。
エルビス

1
問題ありません!悪いのは、冗談を検出できなかったことです。:)
usεr11852は回復モニック言う

2
+1。ポアソンとフーリエの出会い....経済学者や他の一部の人々は、季節性が急上昇する可能性があるため、指標変数を強調していると思いますが、三角法のアプローチが役立つことがよくあります。
ニックコックス

2
確かに。私が書いたチュートリアルのレビューは、stata-journal.com / article.html?article
ニックコックス

8

カイ2乗検定は、質問に対する予備的な見解としては良いアプローチです。

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

2
χ2

@svannoy私の答えで使用された時系列法に基づく主な結論は、サンプルデータに明確な季節パターンがないことです。季節サイクルはデータの変動の一部を説明しますが、季節パターンは高度の不規則な変動によって不明瞭になっているため、信頼できる特定ができません(これは、質問に示されている選択したARIMAモデルのゲイン関数を表示して確認することもできます) 。
javlacalle

@oDDsKooL私はまた、土曜日/日曜日、曜日のカイ二乗検定を行っているビット予想を下回っており、月曜日/火曜日の真上です....
svannoy

6

私のコメントで述べたように、これは非常に興味深い問題です。季節性の検出は、統計的な演習だけではありません。合理的なアプローチは、次のような理論と専門家に相談することです。

  • 心理学者
  • 精神科医
  • 社会学者

この問題について、「なぜ」データ分析を補足する季節性があるのか​​を理解します。データについては、状態空間法の一種である非観測コンポーネントモデル(UCM)と呼ばれる優れた分解法を使用しました。Koopmanによるこの非常にアクセスしやすい記事も参照してください。私のアプローチは@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;

さまざまなコンポーネントと組み合わせを考慮して何度か繰り返した後、次の形式の簡潔なモデルで終了しました。

確率的レベル+決定論的な季節性+いくつかの外れ値があり、データには他の検出可能な特徴はありません。

ここに画像の説明を入力してください

以下は、さまざまなコンポーネントの有意性分析です。@Elvisおよび@Nick Coxに似た三角法(PROC UCMの季節性ステートメントのsin / cos)を使用したことに注意してください。UCMでダミーコーディングを使用することもできますが、両方のテストを行ったところ、同様の結果が得られました。SASで季節性をモデル化する2つの方法の違いについては、このドキュメントを参照してください。

ここに画像の説明を入力してください

上記のように、外れ値があります。2009年には2つのパルスと1つのレベルシフト(2009年以降、経済/住宅バブルが役割を果たしましたか??)は、さらに詳細な分析によって説明できます。使用の良い特徴Proc UCMは、優れたグラフィカル出力を提供することです。

以下は、季節性とトレンドと季節性を組み合わせたプロットです。残されたものはすべてノイズです。

ここに画像の説明を入力してください ここに画像の説明を入力してください

p値および有意性テストを使用する場合のより重要な診断テストは、残差がパターンなしで正規分布しいるかどうかを確認することです。その他。

ここに画像の説明を入力してください

結論:UCMと有意性テストを使用したデータ分析に基づいて、データには季節性があるようであり、5月/ 6月/ 7月の夏の月の死亡数が多く、12月と2月の冬の月が最も少ない。

その他の考慮事項:季節変動の大きさの実際的な重要性も考慮してください。反事実的な議論を否定するには、ドメインの専門家に相談して、仮説をさらに補完し、検証してください。

これがこの問題を解決する唯一のアプローチであると言っているわけではありません。私がUCMで気に入っている機能は、すべての時系列機能を明示的にモデル化できることと、非常に視覚的であることです。


この回答と興味深いコメントをありがとう。私は...私は心の中でそれを維持しようとするでしょう、それは非常に興味深いと思われる、UCMを知らない
エルビス

(+1)興味深い分析。重大な決定論的な季節パターンの存在を結論付けることについてはまだ慎重ですが、あなたの結果はこの可能性をより詳しく調べることを求めています。季節安定性に関するCanovaおよびHansenのテストは役立つ可能性があります。たとえば、ここで説明します
javlacalle

gretlπ/6

1
+1。多くの興味深いコメント。心理学者、精神科医、社会学者のリストに、気象学者/気候学者を追加できます。そのような人は、降雨と気温のサイクルが同じ2年ではないことを付け加えたいと思うでしょう。私は、冬のより多くの不況(より短い日長など)で大雑把に推測していましたが、いくつかのデータを与えられた推測のためにそんなに。
ニックコックス

@forecasterに感謝します。これは私の学習に多くを追加します。私は心理学者で、公衆衛生学の学位を持っています。リストに疫学者を追加します。冒頭で述べたように、季節的な傾向と自殺について多くの神話(理論化)があります。季節的な傾向については、どの方向でも強い議論をすることができますので、定量的な分析が必要です。公衆衛生の観点から、鋭い不連続性が見つかった場合、介入をターゲットにできます。私はこのデータにはそれを見ていません。自殺理論の観点からは、小さな傾向を確認するだけでも理論の発展に役立つ可能性があります。
svannoy

1

最初の視覚的推定には、次のグラフを使用できます。黄土曲線とその95%信頼区間を使用して月次データをプロットすると、6月にピークを迎える中年の上昇があるようです。他の要因により、データの分布が広くなる可能性があるため、この未加工のデータレスプロットで季節的な傾向が隠されている可能性があります。データポイントにジッターが発生しています。

ここに画像の説明を入力してください

編集:次のプロットは、前月の数からのケース数の変化のレス曲線と信頼区間を示しています。

ここに画像の説明を入力してください

これはまた、年の前半の月の間、症例の数が増加し続けている一方で、年の後半に減少していることを示しています。これはまた、年の半ばにピークを示しています。ただし、信頼区間は広く、1年を通して0、つまり変化なしであり、統計的有意性の欠如を示しています。

月の数の差は、過去3か月の値の平均と比較できます。

ここに画像の説明を入力してください

これは、5月の数の明確な増加と10月の減少を示しています。


(-1)この質問に対する質の高い回答はすでに3つあります。あなたの答えは、投稿された質問に答えませコメントとして投稿することもできます。このデータを分析する方法についての回答は提供しません。
ティム

以前にここにコメントを投稿しました(質問の下を参照)が、コメントに数字を投稿することはできません。
rnso

私はここで社説を理解していますが、@ rnsoが潜在的な季節成分をうまく示した素晴らしいグラフを提供してくれたと言うでしょう。
svannoy

私はそれを理解し、同意しますが、これはまだ答えではなく、コメントまたは改善です。@rnsoは、コメントを介して、そのようなプロットを調べたり、含めることができると提案したかもしれません。
ティム

@ Glen_b、@ Tim:役に立つかもしれないコメントを追加できないプロットを追加しました。
rnso
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.