<jupyter_start><jupyter_text><jupyter_code>from google.colab import drive
drive.mount('./gdrive')
!pip install kaggle
pip install dash==1.18.1
!pip install chart_studio
from google.colab import files
files.upload()
ls -1ha kaggle.json
!mkdir -p ~/.kaggle
!cp kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json<jupyter_output><empty_output><jupyter_text>새 섹션<jupyter_code>!kaggle datasets download -d kimjihoo/coronavirusdataset
!ls
!unzip coronavirusdataset.zip
import io
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno
import statsmodels.api as sm
import statsmodels.formula.api as smf
import math
import chart_studio
import plotly.graph_objects as go
import plotly.express as px
import dash
import dash_core_components as doc
import dash_html_components as html
from sklearn import datasets
from sklearn import svm
from sklearn import tree
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import MinMaxScaler
from plotly.offline import iplot, init_notebook_mode
Case=pd.read_csv("Case.csv")
Patient=pd.read_csv("PatientInfo.csv")
Policy=pd.read_csv("Policy.csv")           
SearchTrend=pd.read_csv("SearchTrend.csv")         
SeoulFloating=pd.read_csv("SeoulFloating.csv")       
Time=pd.read_csv("Time.csv")                
TimeAge=pd.read_csv("TimeAge.csv")             
TimeGender=pd.read_csv("TimeGender.csv")          
TimeProvince=pd.read_csv("TimeProvince.csv")        
TimeProvince=pd.read_csv("Weather.csv")  
Time.info()
Time['date']=pd.to_datetime(Time['date'])
Time.info()
msno.bar(Time)
Time.describe(include='all')
timegraph=pd.DataFrame(dict(time=Time['date'], value=Time['confirmed']))
g=sns.relplot(x="time", y="value", kind="line", data=timegraph)
g.fig.autofmt_xdate()
#B<k>를 상수로 두고 풀어보자.
index=list(range(0,len(Time['date'])))
N=51640000
first=1
confirmed=Time['confirmed']
i_value=[]
for i in index:
  i_value.append(confirmed[i]/N)
i_value=np.array(i_value)
i_initial=i_value[0]
ln_i_value=[]
for i in index:
  ln_i_value.append(math.log(i_value[i]/(1-i_value[i])))
ln_first_value=ln_i_value[0]
Beta=[]
Beta.append(0.0)
for i in range(1,len(i_value)):
  Beta.append((ln_i_value[i]-ln_first_value)/index[i])
print(Beta)
len(Beta)
Beta=np.array(Beta)
#1,2,3,4번까지 기울기는 0, 그 이후로 부터 기울기 증가.

#plt.scatter(index,confirmed,label="real")
#Beta의 min,max 찾아내기=> index 알아내기=> 라벨 붙여보기
plt.plot(index, Beta, c="r", label='reg')
plt.legend()
plt.xlabel("index")
plt.ylabel("B<K>")
plt.rcParams["figure.figsize"] = (4, 4)
fig2=go.Figure(data=go.Bar(name='confirmed',x=Time['date'], y=Time['confirmed']))
fig2.update_layout(title_text='confirmed')
fig2.show()
app=dash.Dash()
app.layout= html.Div([doc.Graph(figure=fig2)])

app.run_server(debug=True)
fig=go.Figure(data=go.Bar(x=Time['date'],y=Beta))
fig.update_layout(title_text='Beta')
fig.show()
#01-27 "주의=> 경계"격상
#01-31 지역사회 전파 확산 차단 계획
#02-04 후베이성 방문 모든 외국인의 입국 제한
#02-05 보건용 마스크  및 손소독제 매점매석 행위 금지 및 단속 시행
#02-19 대구 집단 감염 발생
#02-20 지역사회 전파 대응 지침 개정 시행
#02-23 감염병 위기 경보 '심각'단계로 격상
#02-24 유,초,중,고 신학기 개학 연기
#02-26 1차 국민안심병원 지정/ 마스크 수출 제한 조치 및 공적 판매처 출고 의무화
#02-27 어린이집 휴원(~3.8)
#03-01 코로나 19지역 확산 대응 치료체계 재구축 방안=> 확진환자 중증도 분류하여 시행
#03-04 자동차 이동형 선별 진료소 운영지침 마련
#03-15 대구, 경북, 경산, 청도 , 봉화 특별재난지역 선포
#03-22 15일간 강도 높은 사회적 거리두기 시행
#03-29 전세계 모든 나라 입국자 2주간 자가격리 실시
#04-06 코로나 19' 강화된 사회적 거리두기 지속' (~4.19)
#07-01 전자출입명부 고위험 시설 의무 적용
new_val=[]
for i in index:
  new_val.append(math.exp(Beta[i]*index[i]))
i_formula=[]
for i in index:
  i_formula.append(i_initial*new_val[i]/((1-i_initial)+(i_initial*new_val[i])))
#print(i_formula)
i_formula=np.array(i_formula)
predict_confirm=(i_formula*N)
#print(predict_confirm)



# Beta가 고정된 값이 아닐 경우
plt.scatter(index,confirmed,label="real")
plt.plot(index, predict_confirm, c="r", label='reg')
plt.legend()
plt.xlabel("index")
plt.ylabel("confirmed")
#axes = plt.axes()
#axes.set_xlim([0,100])
#axes.set_ylim(0,10000)
plt.show()

#Beta를 고정된 값이 아닐 때 i값
plt.plot(index, i_value, c="r", label='reg')
mean_Beta=np.mean(Beta)
print(mean_Beta-0.06)
new_val=[]
for i in index:
  new_val.append(math.exp((mean_Beta-0.06)*index[i]))
i_formula=[]
for i in index:
  i_formula.append(i_initial*new_val[i]/((1-i_initial)+(i_initial*new_val[i])))
#print(i_formula)
i_formula=np.array(i_formula)
predict_confirm=(i_formula*N)
#print(predict_confirm)

# Beta가 mean_beta로 고정
plt.scatter(index,confirmed,label="real")
plt.plot(index, predict_confirm, c="r", label='reg')
plt.legend()
plt.xlabel("index")
plt.ylabel("confirmed")
#axes = plt.axes()
#axes.set_xlim([0,100])
#axes.set_ylim(0,10000)
plt.show()

#mean_Beta는 0.116임
new_val=[]
for i in index:
  new_val.append(math.exp((0.15)*index[i]))
i_formula=[]
for i in index:
  i_formula.append(i_initial*new_val[i]/((1-i_initial)+(i_initial*new_val[i])))
#print(i_formula)
i_formula=np.array(i_formula)
predict_confirm=(i_formula*N)
#print(predict_confirm)

# Beta가 mean_beta로 고정
#plt.scatter(index,confirmed,label="real")
plt.plot(index, predict_confirm, c="r", label='reg')
plt.legend()
plt.xlabel("index")
plt.ylabel("confirmed")
#axes = plt.axes()
#axes.set_xlim([0,100])
#axes.set_ylim(0,10000)
plt.show()

#로지스틱모형이 나오려면 Beta값이 최소 0.15인것으로 추정

new_val=[]
for i in index:
  new_val.append(math.exp((0.6)*index[i]))
i_formula=[]
for i in index:
  i_formula.append(i_initial*new_val[i]/((1-i_initial)+(i_initial*new_val[i])))
#print(i_formula)
i_formula=np.array(i_formula)
predict_confirm=(i_formula*N)
#print(predict_confirm)

# Beta가 mean_beta로 고정
#plt.scatter(index,confirmed,label="real")
plt.plot(index, predict_confirm, c="r", label='reg')
plt.legend()
plt.xlabel("index")
plt.ylabel("confirmed")
#axes = plt.axes()
#axes.set_xlim([0,100])
#axes.set_ylim(0,10000)
plt.show()

#Beta가 클수록 초기에 기울기가 확 올라감
#Beta가 0.05정도이면 실제 값과 비슷하나 로지스틱모형과는 차별점이 있음
#Beta가 최소 0.15정도는 되야 로지스틱 모형이 나오나, 예측된 confirmed와 실제 confirmed사이에 큰 괴리가 있음
#Beta값이 고정되지 않았을 때가 실제 예측값과 가장 비슷하나 그렇다면 상수라고 가정한 Beta의 정의에서 어긋남. 

(1-i_initial)/i_initial<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup