확률 활용

2024. 10. 6. 23:13확률 통계/R 데이터 분석

확률의 개념

  • sample 함수를 활용한 랜덤 샘플링
  • replace=T: 반복 선택 가능
sample(1:20, 10) #1~20 까지의 숫자에서 10개를 랜덤 선택해줌
> sample(1:20, 10)
 [1] 20  1  6 16  9 17 15 12  8  3
sample(1:20, 10, replace=T)
> sample(1:20, 10, replace=T)
 [1]  6  5  6 18 17  2  8 20 12  8
  • 백터 형식으로 문자를 저장하여서 샘플링하는 것도 가능
sample(c("H","T"),10,replace=T)
> sample(c("H","T"),10,replace=T)
 [1] "T" "T" "H" "H" "T" "T" "H" "H" "H" "T"
  • 주사위 두개를 동시에 던지는 경우도 다음과 같이 저장 가능
x<-cbind(x1=sample(1:6,10,replace=T), x2=sample(1:6,10,replace=T))
x
> x
      x1 x2
 [1,]  5  6
 [2,]  3  6
 [3,]  4  6
 [4,]  4  3
 [5,]  5  1
 [6,]  1  5
 [7,]  5  6
 [8,]  1  6
 [9,]  4  1
[10,]  1  3

확률=상대 도수의 극한

  • 아래의 그래프를 본다면 시행 횟수가 커진다면 특정한 수에 수렴하게 된다는 것을 알 수 있음
par(mfrow=c(2,2))
for(i in c(100,1000,10000,100000)){#각각의 횟수를 반복
  x<-sample(1:6,i,replace=T)
  y<-table(x) #도수 분포표표 구하기
  barplot(y/i, ylim=c(0,0.5), xlab=paste("n=",i))
}

주사위 굴리기

생성 및 확률 계산

  • 동전을 네번 던졌을 때 앞면이 두 번 이상 나오는 경우
c1<-rep(c("H","T"),8)
c2<-rep(c("H","H","T","T"),4)
c3<-rep(c(rep("H",4),rep("T",4)),2)
c4<-c(rep("H",8),rep("T",8))
s<-data.frame(c1,c2,c3,c4,stringsAsFactors=T)

f<-function(x) sum(x=="H") #H의 개수 return
a<-subset(s,apply(s,1,f)>=2) 
nrow(a)/nrow(s) #H가 2개 이상 나올 확률
[1] 0.6875
  • a배열에는 다음과 같은 값들이 들어가게 된다.
   c1 c2 c3 c4
1   H  H  H  H
2   T  H  H  H
3   H  T  H  H
4   T  T  H  H
5   H  H  T  H
6   T  H  T  H
7   H  T  T  H
9   H  H  H  T
10  T  H  H  T
11  H  T  H  T
13  H  H  T  T
  • 총 13가지의 경우의 수가 존재한다는 것을 확인할 수 있다.

베이즈 정리

  • 불량품 하나가 발생하였을 때, 생산라인 A, B, C, D에서 생산되었을 확률은?
생산라인 A B C D
생산비율 20% 40% 30% 10%
불량율 0.04 0.02 0.01 0.05
  • 베이즈 정리를 적용하여서 코드를 만든다면 다음과 같다.

조건부 확률

a<-c(0.2,0.4,0.3,0.1)
b<-c(0.04,0.02,0.01,0.05)
t<-a*b #특정한 생산라인에 속하면서 불량품일 확률
p<-t/sum(t) #(특정 생산라인의 불량품)/(불량품일 확률)
p
  • 그래프를 작성하면 다음과 같다.
f<-function(a,b){
  t<-a*b
  p<-t/sum(t)
}

a<-c(0.2,0.4,0.3,0.1)
b<-c(0.04,0.02,0.01,0.05)
p<-f(a,b)

barplot(cbind(a,p),
        horiz=T,
        names.arg = c("사전확률","사후확률"),
        col=c("lightblue","lightgreen","lightyellow","lightcyan"))

사전확률 사후확률

'확률 통계 > R 데이터 분석' 카테고리의 다른 글

지도와 데이터  (0) 2024.09.09
차원 축소  (1) 2024.09.08
ggplot 패키지  (0) 2024.09.05
데이터 시각화1  (0) 2024.09.03
데이터 전처리  (1) 2024.09.02