質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

457閲覧

DatetimeIndexにfreqに“D”を付与したい。

biginner999

総合スコア11

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/02/10 08:07

実現したいこと

statsmodelsのライブラリにSeriesデータを読み込ませて結果を出力させたい。
そのためには、DatetimeIndexにfreqが与えられていないと変な警告メッセージがでるようだ。

前提

python:3.9.7
pandas:1.3.4
statsmodels:0.12.2

statsmodelsのライブラリにSeriesデータを読み込ませて結果を出力させたいのですが、
Seriesデータを読み込ませると変な警告メッセージが出る。

発生している問題・エラーメッセージ

エラーメッセージ
C:\Users******\Anaconda3\lib\site-packages\statsmodels\tsa\base\tsa_model.py:581: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.
warnings.warn('A date index has been provided, but it has no'

該当のソースコード

sr_data = pd.Series(df["PX_LAST"], index = df.index )
mod_data = sm.tsa.MarkovRegression(sr_data, k_regimes=2)
res_data = mod_data.fit()

試したこと(その1)

sr_data = pd.Series(df["PX_LAST"], index = pd.DatetimeIndex(df.index).to_period("D") )
mod_data = sm.tsa.MarkovRegression(sr_data, k_regimes=2)
res_data = mod_data.fit()

以下のエラー
C:\Users*\Anaconda3\lib\site-packages\scipy\special_logsumexp.py:118: RuntimeWarning: invalid value encountered in log
out = np.log(s)
C:\Users*
\Anaconda3\lib\site-packages\statsmodels\tsa\regime_switching\markov_regression.py:188: RuntimeWarning: invalid value encountered in true_divide
-0.5 * resid2 / variance - 0.5 * np.log(2 * np.pi * variance))
C:\Users*
*\Anaconda3\lib\site-packages\statsmodels\tsa\regime_switching\markov_regression.py:188: RuntimeWarning: invalid value encountered in log
-0.5 * resid
2 / variance - 0.5 * np.log(2 * np.pi * variance))
C:\Users*\Anaconda3\lib\site-packages\statsmodels\tsa\regime_switching\markov_switching.py:162: RuntimeWarning: invalid value encountered in log
initial_probabilities = np.log(initial_probabilities)
C:\Users*
\Anaconda3\lib\site-packages\statsmodels\tsa\regime_switching\markov_switching.py:163: RuntimeWarning: invalid value encountered in log
regime_transition = np.log(np.maximum(regime_transition, 1e-20))
C:\Users******\Anaconda3\lib\site-packages\statsmodels\base\model.py:566: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
warnings.warn("Maximum Likelihood optimization failed to "

Seriesの中身をチェックした結果
Dates
1995-12-05 NaN
1995-12-06 NaN
1995-12-07 NaN
1995-12-11 NaN
1995-12-12 NaN
..
2023-02-03 NaN
2023-02-06 NaN
2023-02-07 NaN
2023-02-08 NaN
2023-02-09 NaN
Freq: D, Name: PX_LAST, Length: 7015, dtype: float64

試したこと(その2)

sr_data = pd.Series(data = df["PX_LAST"], index = df.index, freq = "D")

エラーメッセージ

TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_5028/2741688803.py in <module>
----> 1 sr_iv_data = pd.Series(data = df["PX_LAST"], index = df.index, freq = "D")

TypeError: init() got an unexpected keyword argument 'freq'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bsdfan

2023/02/10 08:59

freqをセットしたいなら、 sr_data = df["PX_LAST"].asfreq('D') でできそうですが、今回のエラーに対してこれでいいのかはわかりません。
biginner999

2023/02/13 00:17

bsdfan様  私の回答が遅れて申し訳ありません。  いただいた方法でfrequencyの付与ができることを確認いたしました。  しかしながら、私の分析対象が金融市場データであり、"D"を付与するあらゆる可能な方法で土日がN/A となるようです。結果として、ライブラリ内の最尤推定が機能しなくなるようです。  従いまして、私の質問は「対処不能」が正解となりそうです。お騒がせして大変申し訳ありませんでした。
guest

回答1

0

自己解決

上記に記述した通り、私の質問は「対処不能」が正解と思われますので。回答依頼をcloseさせていただきます。

投稿2023/02/13 00:18

biginner999

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問