기본 콘텐츠로 건너뛰기

라벨이 histogram인 게시물 표시

[matplotlib]quiver()함수

Statistics related graph code

The following graphs are the codes for the figures included in Chapter 4 of the e-book Statistics with Python . import numpy as np import pandas as pd from scipy import stats from sklearn.preprocessing import StandardScaler import yfinance as yf import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") # fig 421 st=pd.Timestamp(2022,12, 1) et=pd.Timestamp(2023, 4, 1) da=yf.download("^DJI", st, et) pop=(da['Close']-da['Open'])/da['Open']*100 pop.columns=['change'] pop.index=pd.DatetimeIndex(pop.index.date) xBar=np.array([]) for i in range(20): x=pop.sample(5, replace=False, random_state=i) xBar=np.append(xBar, x.mean()) xBar2=np.array([]) for i in range(100): x=pop.sample(5, replace=False, random_state=i) xBar2=np.append(xBar2, x.mean()) plt.figure(figsize=(7, 3)) plt.subplot(1,2,1) plt.hist(xBar, 10, rwidth=0.8, color="blue", label="n=20") plt.axvline(-0.18, 0, 0.9, color=...

[data analysis] 커널밀도추정(kernel density estimator)

커널밀도추정(kernel desity estimation) 내용 밀도추정(Density estimation) Histogram Kernel Density Estimation python을 적용한 kde의 계산 밀도추정(Density estimation) 확률, 통계에서 밀도(density)는 확률(probability)를 나타냅니다. 그러므로 밀도 추정은 관찰된 데이터에서 관찰치의 확률을 추정하는 것으로 밀도 함수의 추정치를 구성하는 것입니다. 즉, 다음 식과 같이 일정한 구간에 포함된 포인트의 개수(빈도수)나 면적등을 계산하는 것으로 관찰치의 밀도를 추정할 수 있습니다. $$\tag{식 1}P(a \lt x \lt b)=\int^b_a f(d) \,dx \quad \forall a\lt b$$ 식 1과 같이 추정치를 계산하기 위해서는 밀도함수인 f(x)를 알아야 합니다. 정규분포와 같이 기존의 분포함수를 가정하여 사용할 수 있습니다. 이러한 분포에 적용하기 위해서는 평균과 분산과 같이 모수를 가정할 수 있어야 합니다. 이러한 분석을 모수적 분석(parametic analysis)이라합니다. 반면에 모수를 가정할 수 없는 경우를 비모수 분석(nonparametic analysis)라고 하며 이 경우 커널 밀도 함수를 적용합니다. 특정한 밀도 함수의 가정없이 데이터의 분포에서 특정한 관찰치의 밀도를 계산하는 고전적이지만 자주 사용하는 방법으로 히스토그램이 있습니다. Histogram 빈도 히스토그램 형태로 데이터를 그룹화하는 것은 다양한 추정 절차의 기초에 내재되어 있는 고전적 방법론입니다. 유용한 시각적 정보를 제공하여 데이터 표현 장치로 사용되었지만 밀도 추정 방법으로서 비모수 통계에서 근본적인 역할을 했습니다. 기본적으로 히스토그램은 빈 높이로 정의되는 계단 함수로, 빈 높이란 각 빈에 포함된 관측치의 비율을 빈 너비로 나눈 값과 같습니다. 분포 함수 $F_x$로부터 랜덤변수 $X_1, \cdots, X_n$를...

[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()

변동(Variation)

변동(Variation) 변동(variation) 또는 스프레드(spread) 는 데이터들의 퍼짐 정도를 나타내는 것으로서 자료의 특성을 설명하는 기본 정보 입니다. 평균 등의 위치정보와 함께 변동을 사용하여 자료의 분포를 설명할 수 있습니다. 예를 들어 다음 자료는 다양한 금융자료를 호출할 수 있는 파이썬 라이브러리 FinanceDataReader 를의 DataReader() 함수를 사용하여 지정한 기간의 코스피 주가를 호출한 것입니다. 이 데이터는 연속형이므로 목록형으로 전환하기 위해 pd.cut() 함수를 사용합니다. 이 함수는 구간을 지정하여 각 인스턴스에 대한 목록화된 결과를 첫번째, 두번째로 각 구간의 경계점을 반환합니다. 또한 np.histogram() 을 사용하여 각 구간의 빈도수를 나타낼 수 있습니다. pd.cut(x, bins, right=True, labels=None, retbins=False, ...) 1차원 배열의 각 값을 지정한 구간(bins)에 대응하는 구간(계급)을 반환합니다. 연속형 변수를 범주형 변수로 변환할 경우 유용합니다. x : 1차원 배열 객체 bins: 계급(class) 구간의 갯수를 나타내는 정수 또는 명시적으로 구간을 구분하기 위한 리스트 객체 right = Ture → (a, b] · right = False → [a, b) label: 각 계급 구간에 대한 이름을 지정. 그러므로 bins의 수와 같아야 함 retbins: bins을 정수로 전달 할 경우 각 계급(class)의 구간을 반환 numpy.histogram(x, bins, density=False) x: numpy 객체로서 2차원 이상의 객체일 경우 1차원으로 자동 변환 bins: 데이터를 그룹화하기 위한 클래스의 수 또는 각 그룹의 상한값과 하한값으로 구성한 객체 density: True일 경우, 빈도 대신 밀도가 반환 \begin{align}\text{density}&=\frac{\t...