R에서 설명하는 density
먼저 R에서 설명하는 density 함수는 아래와 같다.
The (S3) generic function density computes kernel density estimates. (Its default method does so with the given kernel and bandwidth for univariate observations.)
kernel density estimates?
density는 확률밀도를 의미한다.(물리적 밀도, 질량/부피로 오해하지 말자)
확률밀도라는 단어가 익숙하지 않다면 확률밀도함수(pdf,probabilty density function을 공부해보자. 맨아래에 참고할만한 블로그를 링크해두었다.)
kernel density estimation은 확률밀도를 추정하는 방법 중 하나이다.(이 정도만 알고 일단 넘어가자.) 정말 중요한 것은 density를 이해하는 것이다.
density 활용 예시
density함수를 적용하면 특정 값이 자료 내에서 몇 퍼센트의 확률로 나타나는지 알 수 있다. 예시를 참고해서 감을 잡아보자.
예시)
CR = read.table("CreditScore.txt", header=TRUE)
CS.D=density(CR$Score)
먼저 txt를 읽어서 data frame 형태로 저장된 CR은 아래와 같은 형태이다.
CreditScore.txt는 신용점수를 모아둔 모의자료이다.
entries? obs!
여기서 54,532 entries라고 쓰여있는데 entry는 케임브릿지 사전에 아래와 같이 정의되어있다. 참고하자.
str함수로 보면 observations의 수도 54,532이다.
{obs = observations=관측치}를 entries 로 혼용하는 것으로 보인다.
아무튼 다시 돌아가서,
density 이해하기
이 자료는 신용점수에 대한 자료이므로 각 사람들은 저마다 다른 신용점수를 갖고 있고 어떠한 점수는 중복될것이다
전체 사람들(5만명이라 가정하고) 중에 신용점수(값)가 700점을 갖는 사람이 5천명이 있다면 700점일 확률은 10%다.
이것(10%)이 700점이 갖는 density이다.
CS.D=density(CR$Score)
CR 이라는 data frame 중 Score column의 density를 CS.D에 저장했다.
CS.D는 리스트 자료구조로 저장되는데 아래와 같다.
density인데 예상했던 확률이 바로 보이지 않고 x, y 가 먼저 보인다.
x에는 신용점수가 저장된 것이고(214, 216 ….),
y에는 각 신용점수에 대한 확률이 저장된 것이다.
예를 들어, 신용점수가 214일 확률은 2.63e-08이다.
이 x, y를 이용하여 plot(확률밀도함수의 plot)을 그린 것이 아래와 같다.
density 함수 plot 그리기
plot(density(CR$Score))
정리하자면,
density 함수는 어떤 자료(예를 들어 data frame)의 확률밀도를 구해준다.
확률밀도는 자료내에서 관측치 하나를 뽑았을 때, 특정 값이 나타날 확률이다.
추가로 이 확률밀도를 특정 구간(x1~x2)에서 적분하면(전부 다 더하면) 특정 구간(x1 ~ x2)값이 나타날 확률을 구할 수 있다.
참고