기본 콘텐츠로 건너뛰기

[ML] 결정트리(Decision Tree) 모델

심리지수

심리지수

소비자 심리지수(Consumer Sentiment Index)
한국은행에서 실시하는 소비동향조사를 기초로 현재생활형편CSI, 생활형편전망CSI, 가계수입전망CSI, 소비지출전망CSI, 현재경기판단 CSI, 향후경기판단 CSI 등 6개 주요개별지수의 평균값과 표준편차를 이용하여 합성해 만든 종합지수로서 소비자들이 경기상황을 어떻게 받아들이는지를 종합적으로 나타내줍니다. 소비자심리지수는 지수자체의 증감 뿐만 아니라 기준치(100)을 대한 변동이 중요합니다. 100이상이면 앞을 생활형편이나 경기, 수입 등이 좋아질 것으로 보는 사람들이 많다는 의미이고, 미만이면 그 반대를 나타냅니다.
제조업업황실적BSI
경기동향에 대한 기업가들의 판단 및 예측과 계획의 변화 추이를 관찰하여 지수화한 지표로 기업들의 응답결고들에 대한 평균값을 0(매우악화)~200(매우호조)의 범위로 환산. 100이면 전분기 대비 변화없음, 100이상이면 전분기 대비 호전, 작으면 악화를 의미

가계는 소득이 올라가면 소비를 늘릴 것이고 이는 기업실적을 올리는 역할을 할 것입니다. 또한 기업은 실적의 상승은 고용을 증가시킬 것이고 따라서 가계의 소득은 더욱 늘어날 것이다. 바로 경제의 선순환과정이 일어나는 모습입니다.

다음 자료는 한국은행경제통계시스템에서 취합한 것입니다.

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams["font.family"]="nanumgothic"
mpl.rcParams["font.weight"]="bold"
mpl.rcParams["font.size"]=11
data=pd.read_excel("경기지수.xlsx", sheet_name="data", index_col=0)
data.head(3)
연도 소비심리 행순환변동치 순환변동치 기심리 조BSI DP디플레이터 OSPI
2015.00 102.8 100.6 100.0 93.6 67 100.000 1961.31 1172.0
2016.00 93.9 101.1 100.1 94.0 72 101.986 2026.46 1208.5
2017.00 111.5 101.7 100.8 101.7 81 104.253 2467.49 1071.4

위 자료에서 2021년도부터는 월별자료이므로 그 이전과 scale에서 차이를 보입니다. 그러므로 다음 그림에서 x 축을 '연도'를 '순서'로 대신합니다.

plt.figure(figsize=(15, 5), dpi=150)
for i in range(4):
    plt.plot(range(data.shape[0]), data.iloc[:,i], label=data.columns[i])
plt.legend(bbox_to_anchor=(1,1))
plt.xlabel('순서')
plt.ylabel('지수')
plt.show()

다음은 위 4개의 지표를 표준화하고 상관계수를 계산해 봅니다.

from sklearn.preprocessing import StandardScaler
scaler=StandardScaler().fit(data)
dataN=scaler.transform(data)
dataN[:3]
array([[-0.01171208, -0.3003423 , -0.68668731, -1.391439  , -2.15378718,
        -2.15608278, -2.09264415, -0.30579498],
       [-1.90693953,  0.27723905, -0.55952299, -1.32259848, -1.61934868,
        -1.28036844, -1.89043352,  0.50389068],
       [ 1.84092599,  0.97033666,  0.33062722,  0.00258152, -0.65735936,
        -0.2807489 , -0.52157773, -2.53742177]])
dataNpd=pd.DataFrame(dataN, columns=data.columns)
dataNpd.head(2)
소비심리 동행순환변동치 선행순환변동치 경기심리 제조BSI GDP디플레이터 KOSPI 환율
0 -0.011712 -0.300342 -0.686687 -1.391439 -2.153787 -2.156083 -2.092644 -0.305795
1 -1.906940 0.277239 -0.559523 -1.322598 -1.619349 -1.280368 -1.890434 0.503891
#소비심리, 동행, 선행, 경기심리에 대한 상관성
np.around(dataNpd.corr(), 3)
소비심리 동행순환변동치 선행순환변동치 경기심리 제조BSI GDP디플레이터 KOSPI 환율
소비심리 1.000 0.372 0.446 0.781 0.443 0.209 0.261 0.211
동행순환변동치 0.372 1.000 -0.194 0.363 0.011 0.572 -0.143 0.369
선행순환변동치 0.446 -0.194 1.000 0.586 0.729 -0.126 0.569 0.239
경기심리 0.781 0.363 0.586 1.000 0.790 0.406 0.554 0.609
제조BSI 0.443 0.011 0.729 0.790 1.000 0.393 0.863 0.433
GDP디플레이터 0.209 0.572 -0.126 0.406 0.393 1.000 0.435 0.282
KOSPI 0.261 -0.143 0.569 0.554 0.863 0.435 1.000 0.206
환율 0.211 0.369 0.239 0.609 0.433 0.282 0.206 1.000

댓글

이 블로그의 인기 게시물

[Linear Algebra] 유사변환(Similarity transformation)

유사변환(Similarity transformation) n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation) 이라고 합니다. $$\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B $$ 식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다. \begin{align}\tag{식 2} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align} 식 2의 행렬식은 식 3과 같이 정리됩니다. \begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \textsf{det}(I)\end{aligned}\end{align} 유사행렬의 특성 유사행렬인 두 정방행렬 A와 B는 'A ~ B' 와 같

[matplotlib] 히스토그램(Histogram)

히스토그램(Histogram) 히스토그램은 확률분포의 그래픽적인 표현이며 막대그래프의 종류입니다. 이 그래프가 확률분포와 관계가 있으므로 통계적 요소를 나타내기 위해 많이 사용됩니다. plt.hist(X, bins=10)함수를 사용합니다. x=np.random.randn(1000) plt.hist(x, 10) plt.show() 위 그래프의 y축은 각 구간에 해당하는 갯수이다. 빈도수 대신 확률밀도를 나타내기 위해서는 위 함수의 매개변수 normed=True로 조정하여 나타낼 수 있다. 또한 매개변수 bins의 인수를 숫자로 전달할 수 있지만 리스트 객체로 지정할 수 있다. 막대그래프의 경우와 마찬가지로 각 막대의 폭은 매개변수 width에 의해 조정된다. y=np.linspace(min(x)-1, max(x)+1, 10) y array([-4.48810153, -3.54351935, -2.59893717, -1.65435499, -0.70977282, 0.23480936, 1.17939154, 2.12397372, 3.0685559 , 4.01313807]) plt.hist(x, y, normed=True) plt.show()

R 미분과 적분

내용 expression 미분 2차 미분 mosaic를 사용한 미분 적분 미분과 적분 R에서의 미분과 적분 함수는 expression()함수에 의해 생성된 표현식을 대상으로 합니다. expression expression(문자, 또는 식) 이 표현식의 평가는 eval() 함수에 의해 실행됩니다. > ex1<-expression(1+0:9) > ex1 expression(1 + 0:9) > eval(ex1) [1] 1 2 3 4 5 6 7 8 9 10 > ex2<-expression(u, 2, u+0:9) > ex2 expression(u, 2, u + 0:9) > ex2[1] expression(u) > ex2[2] expression(2) > ex2[3] expression(u + 0:9) > u<-0.9 > eval(ex2[3]) [1] 0.9 1.9 2.9 3.9 4.9 5.9 6.9 7.9 8.9 9.9 미분 D(표현식, 미분 변수) 함수로 미분을 실행합니다. 이 함수의 표현식은 expression() 함수로 생성된 객체이며 미분 변수는 다음 식의 분모의 변수를 의미합니다. $$\frac{d}{d \text{변수}}\text{표현식}$$ 이 함수는 어떤 함수의 미분의 결과를 표현식으로 반환합니다. > D(expression(2*x^3), "x") 2 * (3 * x^2) > eq<-expression(log(x)) > eq expression(log(x)) > D(eq, "x") 1/x > eq2<-expression(a/(1+b*exp(-d*x))); eq2 expression(a/(1 + b * exp(-d * x))) > D(eq2, "x") a * (b * (exp(-d * x) * d))/(1 + b