케이스: 일주일에 한 번씩 6개의 로또 번호가 당첨된다. Lotto.csv 데이터 파일에는 각 주마다 당첨된 여섯개의 번호 정보와 상품 정보가 담겨있다. 로또 번호는 1~45 사이의 번호로 이루어져 있으며 분석을 통해 한 번호가 당첨되기까지에는 총 몇번의 라운드를 거쳐야 하는지 알아볼 것이다.
1. Lotto.csv 데이터를 불러와준다.
lotto = read.csv("Lotto.csv", header = T)
head(lotto)
Output:
2. 사용하고 싶은 칼럼만 가져와서 새로운 변수에 저장해준다. X1~X6까지의 column만 가져와준다.
- cbind = column을 한개씩 가져와 다시 새로운 데이터 프레임을 만들어주는 함수
WN = cbind(lotto$X1, lotto$X2, lotto$X3, lotto$X4, lotto$X5, lotto$X6)
head(WN)
Output: 각 숫자가 (column) 6번의 라운드(row)동안 몇번이나 출몰했는지 알려주는 테이블이 생겼다.
3. Relative frequency를 계산해준다. table(WN)에 존재하는 모든 데이터 값들을 row의 개수, 즉 로또 번호가 발표되는 라운드 횟수로 나누어준다.
- nrow = 데이터프레임의 row의 개수를 구해주는 함수
RF = table(WN) / nrow(WN)
RF # relative frequency of each numbers
1에서부터 45가지의 수 각각에 해당되는 relative frequency가 계산이 되었다.
4. Bar plot 그려보기
barplot(RF) # barplot of relative frequencey
abline(h = 6/45, col = 2) # y = a+bx # if we only use h = ? it becomes horizontal line
- abline: (h = horiontal line, col = color code)
- abline은 디폴트로 y = a+bx 함수로 설정이 되어있다.
각 숫자들에 해당하는 relative frequency를 보여주는 그래프이다. 빨간 선을 통해 theoretical probability도 그려보았다.