[시간 서열 분석] 우리는 일관의 양성 인원을 예측했다.[Python]
개요
실행 결과(정확한 데이터 없음)
코드 import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore') # 計算警告を非表示
plt.style.use('ggplot') # グラフのデザイン変更(お好みで利用)
plt.xkcd() # グラフのデザイン変更(お好みで利用、日本語は未対応)
import statsmodels.api as sm # version 0.8.0以上
# CSVファイル読み込み(事前にダウンロードしたCSVファイルを利用)
df = pd.read_csv("data/pcr_positive_daily.csv")
corona = pd.Series(df["PCR 検査陽性者数(単日)"].values,
index=pd.to_datetime(df["日付"]))
corona_train2 = corona["2020-01-16":"2020-11-28"]
# SRIMAモデル(テストデータ1年を除いてモデル作成)
sarimax_train = sm.tsa.SARIMAX(corona_train2,
order=(3, 1, 3),
seasonal_order=(0, 1, 1, 30),
enforce_stationarity = False,
enforce_invertibility = False
).fit()
sarimax_train2_pred = sarimax_train.predict("2020-11-28", "2020-12-31") # テストデータ1年分予測
plt.figure(figsize=(8, 4))
plt.plot(corona, label="actual")
plt.plot(sarimax_train2_pred, c="b", label="prediction", alpha=0.7)
plt.ylabel('PCR')
plt.xlabel('MONTH')
plt.legend(loc='best')
실행 결과(정확한 데이터 있음)
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore') # 計算警告を非表示
plt.style.use('ggplot') # グラフのデザイン変更(お好みで利用)
plt.xkcd() # グラフのデザイン変更(お好みで利用、日本語は未対応)
import statsmodels.api as sm # version 0.8.0以上
# CSVファイル読み込み(事前にダウンロードしたCSVファイルを利用)
df = pd.read_csv("data/pcr_positive_daily.csv")
corona = pd.Series(df["PCR 検査陽性者数(単日)"].values,
index=pd.to_datetime(df["日付"]))
corona_train2 = corona["2020-01-16":"2020-11-28"]
# SRIMAモデル(テストデータ1年を除いてモデル作成)
sarimax_train = sm.tsa.SARIMAX(corona_train2,
order=(3, 1, 3),
seasonal_order=(0, 1, 1, 30),
enforce_stationarity = False,
enforce_invertibility = False
).fit()
sarimax_train2_pred = sarimax_train.predict("2020-11-28", "2020-12-31") # テストデータ1年分予測
plt.figure(figsize=(8, 4))
plt.plot(corona, label="actual")
plt.plot(sarimax_train2_pred, c="b", label="prediction", alpha=0.7)
plt.ylabel('PCR')
plt.xlabel('MONTH')
plt.legend(loc='best')
코드 import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore') # 計算警告を非表示
plt.style.use('ggplot') # グラフのデザイン変更(お好みで利用)
plt.xkcd() # グラフのデザイン変更(お好みで利用、日本語は未対応)
import statsmodels.api as sm # version 0.8.0以上
# CSVファイル読み込み(事前にダウンロードしたCSVファイルを利用)
df = pd.read_csv("data/pcr_positive_daily.csv")
corona = pd.Series(df["PCR 検査陽性者数(単日)"].values,
index=pd.to_datetime(df["日付"]))
corona_train2 = corona["2020-01-16":"2020-10-30"]
corona_test2 = corona['2020-11-01':'2020-11-28']
# SRIMAモデル(テストデータ1年を除いてモデル作成)
sarimax_train = sm.tsa.SARIMAX(corona_train2,
order=(3, 1, 3),
seasonal_order=(0, 1, 1, 30),
enforce_stationarity = False,
enforce_invertibility = False
).fit()
sarimax_train2_pred = sarimax_train.predict("2020-10-30", "2020-11-28") # テストデータ1年分予測
plt.figure(figsize=(8, 4))
plt.plot(corona, label="actual")
plt.plot(sarimax_train2_pred, c="b", label="prediction", alpha=0.7)
plt.ylabel('PCR')
plt.xlabel('MONTH')
plt.legend(loc='best')
총결산
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore') # 計算警告を非表示
plt.style.use('ggplot') # グラフのデザイン変更(お好みで利用)
plt.xkcd() # グラフのデザイン変更(お好みで利用、日本語は未対応)
import statsmodels.api as sm # version 0.8.0以上
# CSVファイル読み込み(事前にダウンロードしたCSVファイルを利用)
df = pd.read_csv("data/pcr_positive_daily.csv")
corona = pd.Series(df["PCR 検査陽性者数(単日)"].values,
index=pd.to_datetime(df["日付"]))
corona_train2 = corona["2020-01-16":"2020-10-30"]
corona_test2 = corona['2020-11-01':'2020-11-28']
# SRIMAモデル(テストデータ1年を除いてモデル作成)
sarimax_train = sm.tsa.SARIMAX(corona_train2,
order=(3, 1, 3),
seasonal_order=(0, 1, 1, 30),
enforce_stationarity = False,
enforce_invertibility = False
).fit()
sarimax_train2_pred = sarimax_train.predict("2020-10-30", "2020-11-28") # テストデータ1年分予測
plt.figure(figsize=(8, 4))
plt.plot(corona, label="actual")
plt.plot(sarimax_train2_pred, c="b", label="prediction", alpha=0.7)
plt.ylabel('PCR')
plt.xlabel('MONTH')
plt.legend(loc='best')
참고 자료
Reference
이 문제에 관하여([시간 서열 분석] 우리는 일관의 양성 인원을 예측했다.[Python]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kuro_take/items/c2c523195c379f09a5d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)