Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで系列データとラグ間の自己相関を計算するプログラムを作成する方法

はじめに

この記事では、pandasのSeries(系列)データに対して自己相関を計算するPythonプログラムを紹介します。ラグ(lag)の数を指定することで、任意のずらし幅における自己相関係数も求められます。

例として、次のような系列データがあると仮定します。ラグ2を指定した場合の自己相関の結果は以下の通りです。

Series is:
0    2.0
1    10.0
2    3.0
3    4.0
4    9.0
5    10.0
6    2.0
7    NaN
8    3.0
dtype: float64
series correlation:
    -0.4711538461538461
series correlation with lags:
    -0.2933396642805515

解決手順

この問題を解くには、以下の手順に従います。

  • まず、Seriesオブジェクトを定義します。

  • 次に、以下のメソッドを使って系列の自己相関を求めます。

series.autocorr()
  • ラグ2を指定した自己相関は、次のように計算できます。

series.autocorr(lag=2)

コード例

より理解を深めるために、以下のコードを見てみましょう。

import pandas as pd
import numpy as np
series = pd.Series([2, 10, 3, 4, 9, 10, 2, np.nan, 3])
print("Series is:\n", series)
print("series correlation:\n",series.autocorr())
print("series correlation with lags:\n",series.autocorr(lag=2))

出力結果

Series is:
0    2.0
1    10.0
2    3.0
3    4.0
4    9.0
5    10.0
6    2.0
7    NaN
8    3.0
dtype: float64
series correlation:
    -0.4711538461538461
series correlation with lags:
    -0.2933396642805515

補足説明

pandasのautocorr()メソッドは、デフォルトでラグ1(隣接する要素同士)の相関を計算します。lag引数に整数を渡すことで、指定したずらし幅での自己相関係数を取得できます。なお、データにNaNが含まれている場合も、自動的に除外して計算されるため、欠損値処理を事前に行う必要はありません。自己相関は時系列解析において、周期性やトレンドの把握に役立つ重要な指標です。

  1. 【Python】フィボナッチ数列におけるkのn番目の倍数の位置を求める方法

    この記事では、「フィボナッチ数列の中に現れるある数の倍数」をテーマに、Pythonでの解法をサンプルコードとともにわかりやすく解説します。 問題の概要 整数 k と n が与えられたとき、フィボナッチ数列の中で k の n 番目の倍数が何番目の項として現れるかを求めます。 例えば「k = 4 の 5 番目の倍数」なら、フィボナッチ数列を順にたどりながら 4 の倍数になっている項を探し、そのうち 5 番目に該当する項の位置を出力します。 解法のポイント フィボナッチ数列を k で割った余りには周期性があるため、k の倍数となる項は等間隔で出現します。最初に k の倍数になった項の位置を i

  2. Pythonで数値の合計ビット数をカウントするプログラムの作成方法

    まず数値を入力し、bin()関数を使ってその数値を2進数に変換します。次に出力される文字列の先頭2文字「0b」を削除し、最後に2進数文字列の長さを計算することで、合計ビット数を求めることができます。 実行例 入力:200 出力:8 解説 200の2進数表現は 11001000 です(8桁=8ビット) アルゴリズム ステップ1:数値を入力する。 ステップ2:bin()関数を使用して、数値を2進数に変換する。 ステップ3:bin()関数は出力文字列の先頭に「0b」という接頭辞を付加するため、 出力された2進数文字列から最初の2文字「0b」を削除する。 ステップ4:2進