일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바 영화 api
- 활성화 함수
- 자바 프로젝트
- 영화 api
- 파이썬 경사하강법
- 의료 ai 대학원 월급
- 대학원 월급
- pandas
- 딥러닝 실험 깃 버전관리
- MLP
- 경사하강법
- C# 프로젝트
- 머신러닝
- 통계학
- python
- 로스트아크
- 정규화
- Dehaze
- 인공지능
- 대학원 급여
- API
- 백준
- 딥러닝
- 인공지능 깃 버전관리
- 디자인 패턴
- 디자인패턴
- 자바
- 코딩테스트
- DCP
- 파이썬
Archives
- Today
- Total
대학원 일기
이산형 확률 분포 본문
이산 균일 분포
- n 개의 결과값이 균일한 확률로 발생하는 확률 분포
# 이산 균일 분포
x <- rdunif(1e5, 1, 10)
xx <- -1:11
plot(prop.table(table(x)), type = "h")
lines(xx, ddunif(xx, 1, 10), col = "red")
hist(pdunif(x, 1, 10))
xx <- seq(-1, 11, by = 0.01)
plot(ecdf(x))
lines(xx, pdunif(xx, 1, 10), col = "red")
이항 분포
- 성공 확률이 일정한 1회의 시행에서 나오는 성공 횟수의 확률 분포
# 이항 분포
# 동전을 10번 던질 때 앞면이 3번 나올 확률입니다.
dnorm(1.64,0,1) # [1] 0.1039611
# 동전을 10번 던질 때, 앞면이 3번 나오는 누적확률(1 또는 2 또는 3의 눈이 나올 확률)입니다.
pbinom(3,10,0.5) # [1] 0.171875
#동전을 10번 던질 때, 앞면이 나오는 누적확률이 0.3이 되는 확률변수 X입니다.
# 이산확률변수이기 때문에 누적확률이 0.3보다 크면서 가장 가까운 확률변수를 반환합니다.
qbinom(0.3,10,0.5) # [1] 4
# 주사위를 10번 던지는 시행에서, 앞면이 나오는 사건이 확률변수 X인 확률분포에서
# 임의로 15개의 데이터를 추출합니다.
rbinom(15,10,0.5) #[1] 4 4 5 4 4 5 5 3 4 6 8 3 6 8 6
# 확률 질량 함수
par(mar=c(5.1, 4.1, 4.1, 7),xpd=TRUE)
plot(0,type="n", xlim=c(0,100),ylim=c(0,0.15),ann=FALSE)
p=c(0.1,0.3,0.5,0.7,0.9)
for (i in 1:length(p)){
x=1:100
y=dbinom(x,100,p[i])
points(x,y,type="l",col=rainbow(length(p))[i])
}
title(main="PMF of binom",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.23,0), legend=paste("p=",p),col=rainbow(length(p)),lty=1)
# 누적 분포 함수
par(mar=c(5.1, 4.1, 4.1, 7),xpd=TRUE)
plot(0,type="n", xlim=c(0,100),ylim=c(0,1),ann=FALSE)
p=c(0.1,0.3,0.5,0.7,0.9)
for (i in 1:length(p)){
x=1:100
y=pbinom(x,100,p[i])
points(x,y,type="l",col=rainbow(length(p))[i])
}
title(main="CMF of binom",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.23,0),legend=paste("p=",p),col=rainbow(length(p)),lty=1)
초기하 분포
- 두 가지 속성의 개체들로 구성된 유한 모집단에서 일정한 개수의 표본을 비복원 추출했을 때, 특정 속성을 갖는 개체 수의 확률 분포
# 초기하 분포
# 크기가 100인 모집단 안에 우리가 원하는 원소가 10개 들어 있습니다.
# 이 모집단에서 크기가 20인 표본을 뽑을 때,
# 우리가 원하는 원소가 3개 들어있을 확률을 구해봅시다.
dhyper(3,10,90,20) # [1] 0.2092081
# 크기가 100인 모집단 안에 우리가 원하는 원소가 10개 들어 있습니다.
# 이 모집단에서 크기가 20인 표본을 뽑을 때,
# 우리가 원하는 원소가 0개 들어있을 확률부터 3개 들어있을 확률까지의 누적확률을 구해봅시다.
phyper(3,10,90,20) # [1] 0.8904281
dhyper(0,10,90,20)+dhyper(1,10,90,20)+dhyper(2,10,90,20)+dhyper(3,10,90,20) #[1] 0.8904281
# 크기가 100인 모집단 안에 우리가 원하는 원소가 10개 들어 있습니다.
# 이 모집단에서 크기가 20인 표본을 뽑을 때, 누적확률이 0.5가 될 때가지의 발생횟수입니다.
qhyper(0.5,10,90,20) # [1] 2
#모집단의 크기가 100, 모집단 안에 들어있는 원하는 원소의 수가 10,
# 표본의 크기가 20인 초기하분포에서 임의로 5개의 값을 추출합니다.
rhyper(5,10,90,20) # [1] 4 1 3 1 1
# 확률 질량 함수
par(mar=c(5.1, 4.1, 4.1, 8.5),xpd=TRUE)
par(mfrow=c(2,2))
m=c(10,50,150,300)
n=c()
k=c(10,30,50,90)
for (j in 1:length(k)){
plot(0,type="n", xlim=c(0,100),ylim=c(0,1),ann=FALSE)
for (i in 1:length(m)){
x=0:100
y=dhyper(x,m[i],500-m[i],k[j])
points(x,y,type="l",col=rainbow(length(m))[i])
}
title(main=paste0("PMF of hyper,"," k=",k[j],', m+n=500"'),xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.30,0), legend=paste("m=",m),col=rainbow(length(m)),lty=1)
}
# 누적 분포 함수
par(mar=c(5.1, 4.1, 4.1, 8.5),xpd=TRUE)
par(mfrow=c(2,2))
m=c(10,50,150,200)
n=c()
k=c(10,30,50,90)
for (j in 1:length(k)){
plot(0,type="n", xlim=c(0,100),ylim=c(0,1),ann=FALSE)
for (i in 1:length(m)){
x=0:100
y=phyper(x,m[i],500-m[i],k[j])
points(x,y,type="l",col=rainbow(length(m))[i])
}
title(main=paste0("CMF of hyper,"," k=",k[j],', m+n=500"'),xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.30,0), legend=paste("m=",m),col=rainbow(length(m)),lty=1)
}
포아송 분포
- 일정한 단위에서 발생한 희소한 사건 수의 확률 분포
# 포하송 분포
# 단위시간동안 사건발생횟수 평균이 5회일 때,
# 단위시간동안 이 사건이 3번 발생할 확률을 구해봅시다.
dpois(3,5) # [1] 0.1403739
# 단위시간동안 사건발생횟수 평균이 5회일 때,
# 단위시간동안 이 사건이 3번 발생하기까지 누적확률을 구해봅시다.
ppois(3,5) # [1] 0.2650259
dpois(0,5)+dpois(1,5)+dpois(2,5)+dpois(3,5) # [3] 0.2650259
# 단위시간동안 사건발생횟수 평균이 5회일 때,
# 누적확률이 0.5가 될 때가지의 발생횟수입니다.
# 이산확률 분포이기 때문에 누적확률이 0.5 이상인 x중 최소값을 반환합니다.
qpois(0.5,5) # [1] 5
# 단위시간동안 사건발생횟수 평균이 5회인 푸아송분포에서
# 크기가 5인 표본을 임의로 추출합니다.
rpois(5,5) # [1] 7 2 7 4 5
# 확률 질량 함수
par(mar=c(5.1, 4.1, 4.1, 8.5),xpd=TRUE)
plot(0,type="n", xlim=c(0,100),ylim=c(0,0.5),ann=FALSE)
lambda=c(1,5,10,50)
for (i in 1:length(lambda)){
x=0:100
y=dpois(x,lambda[i])
points(x,y,type="l",col=rainbow(length(lambda))[i])
}
title(main="PMF of pois",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.21,0), legend=paste("lambda=",lambda),col=rainbow(length(lambda)),lty=1)
# 누적 분포 함수
par(mar=c(5.1, 4.1, 4.1, 8.5),xpd=TRUE)
plot(0,type="n", xlim=c(0,100),ylim=c(0,1),ann=FALSE)
lambda=c(1,5,10,50)
for (i in 1:length(lambda)){
x=0:100
y=ppois(x,lambda[i])
points(x,y,type="l",col=rainbow(length(lambda))[i])
}
title(main="CMF of pois",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.21,0), legend=paste("lambda=",lambda),col=rainbow(length(lambda)),lty=1)
기하 분포
- 성공 확률이 일정한 시행에서 첫 번째 성공이 발생할 때까지 시행한 횟수의 확률 분포
# 기하 분포
# 슛 성공률이 30% 일 때, 5번째에서 성공할 확률
dgeom(4,0.3) # [1] 0.07203
# 슛 성공률이 30%일 때, 5번째에서 성공이 나오기 까지의 누적확률 (4번의 실패)
pgeom(4,0.3) # [1] 0.83193
dgeom(0,0.3)+dgeom(1,0.3)+dgeom(2,0.3)+dgeom(3,0.3)+dgeom(4,0.3) # [1] 0.83193
# 슛 성공확률이 0.3일 때, 누적확률이 0.5가 될 때가지의 실패횟수입니다.
# 이산확률 분포이기 때문에 누적확률이 0.5 이상인 x중 최소값을 반환합니다.
qgeom(0.5,0.3) # [1] 1
# 성공확률이 0.3인 초기하분포에서 임의로 5개의 데이터를 추출합니다.
rgeom(10,0.3) # [1] 1 0 0 7 2 9 7 0 2 1
# 확률 질량 함수
par(mar=c(5.1, 4.1, 4.1, 7),xpd=TRUE)
plot(0,type="n", xlim=c(0,100),ylim=c(0,1),ann=FALSE)
p=c(0.1,0.3,0.5,0.7,0.9)
for (i in 1:length(p)){
x=0:100
y=dgeom(x,p[i])
points(x,y,type="l",col=rainbow(length(p))[i])
}
title(main="PMF of geom",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.15,0), legend=paste("p=",p),col=rainbow(length(p)),lty=1)
# 누적 분포 함수
par(mar=c(5.1, 4.1, 4.1, 7),xpd=TRUE)
plot(0,type="n", xlim=c(0,100),ylim=c(0,1),ann=FALSE)
p=c(0.1,0.3,0.5,0.7,0.9)
for (i in 1:length(p)){
x=0:100
y=pgeom(x,p[i])
points(x,y,type="l",col=rainbow(length(p))[i])
}
title(main="CMF of binom",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.15,0),legend=paste("p=",p),col=rainbow(length(p)),lty=1)
음이항 분포
- 성공 확률이 일정한 시행에서 주어진 횟수(r)의 성공이 발생할 때까지 시행한 횟수의 확률 분포
# 음이항 분포
# 슛 성공확률이 0.3, 허용된 실패횟수가 2회입니다. 성공횟수가 3회일 확률을 구해봅시다.
dnbinom(3,2,0.7) # [1] 0.05292
# 슛 성공확률이 0.3, 허용된 실패횟수가 2회입니다.
# 성공횟수 3회 까지의 누적확률을 구해봅시다.
pnbinom(3,2,0.7) # [1] 0.96922
dnbinom(0,2,0.7)+dnbinom(1,2,0.7)+dnbinom(2,2,0.7)+dnbinom(3,2,0.7) # [1] 0.96922
# 슛 성공확률이 0.3, 허용된 실패횟수가 2회입니다.
# 누적확률이 0.5가 될 때가지의 성공횟수입니다.
# 이산확률 분포이기 때문에 누적확률이 0.5 이상인 x중 최소값을 반환합니다.
qnbinom(0.5,2,0.7) # [1] 1
# 슛 성공확률이 0.3, 허용된 실패횟수가 2회인 음이항분포에서
# 임의로 5개의 데이터를 추출합니다.
rnbinom(5,2,0.7) # [1] 3 3 0 0 2
# 확률질량함수(r을 고정)
par(mar=c(5.1, 4.1, 4.1, 7),xpd=TRUE)
p=c(0.1,0.3,0.5,0.7,0.9)
r=10
x=0:200
plot(0,type="n",xlim=c(0,200),ylim=c(0,0.5),ann=FALSE)
for (i in 1:length(p)){
y=dnbinom(x,r,p[i])
points(x,y,type="l",col=rainbow(length(p))[i])
}
title(main="PMF of nbinom, r = 5",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.17,0), legend=paste("p=",p),col=rainbow(length(p)),lty=1)
# 확률질량함수 (p를 고정)
par(mar=c(5.1, 4.1, 4.1, 7),xpd=TRUE)
p=0.5
r=c(1,10,30,50,100)
x=0:200
plot(0,type="n", xlim=c(0,200),ylim=c(0,0.5),ann=FALSE)
for (i in 1:length(r)){
y=dnbinom(x,r[i],p)
points(x,y,type="l",col=rainbow(length(r))[i])
}
title(main="PMF of nbinom, p = 0.5",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.17,0), legend=paste("r=",r),col=rainbow(length(r)),lty=1)
# 누적분포함수 (r을 고정)
par(mar=c(5.1, 4.1, 4.1, 7))
plot(0,type="n", xlim=c(0,100),ylim=c(0,1),ann=FALSE)
p=c(0.1,0.3,0.5,0.7,0.9)
for (i in 1:length(p)){
x=0:100
y=pgeom(x,p[i])
points(x,y,type="l",col=rainbow(length(p))[i])
}
title(main="CMF of nbinom",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.15,0),legend=paste("p=",p),col=rainbow(length(p)),lty=1)
# 누적분포함수 (p를 고정)
par(mar=c(5.1, 4.1, 4.1, 7),xpd=TRUE)
p=0.5
r=c(1,10,30,50,100)
x=0:200
plot(0,type="n", xlim=c(0,200),ylim=c(0,1),ann=FALSE)
for (i in 1:length(r)){
y=pnbinom(x,r[i],p)
points(x,y,type="l",col=rainbow(length(r))[i])
}
title(main="CMF of nbinom, p = 0.5",xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.17,0), legend=paste("r=",r),col=rainbow(length(r)),lty=1)
다항 분포
- 다수의 속성을 갖는 개체들로 구성된 무한한 모집단에서 일정한 개수의 표본을 취했을 때, 각 속성을 갖는 개체 수의 확률 분포
# 다항 분포
RM = as.data.frame(t(rmultinom(n = 1,size = 10,prob = c(0.2,0.5,0.3))))
RM = colSums(RM)
ggplot(NULL) +
geom_bar(aes(x = names(RM), y= RM,fill = names(RM)),stat = 'identity') +
theme_bw() +
theme(legend.position = 'none') +
scale_x_discrete(labels = c("1","2","3")) +
xlab("") + ylab("")
'School > Data Mining and Statistics' 카테고리의 다른 글
9장: OPEN API (0) | 2023.10.16 |
---|---|
8장: 웹 스크래핑 코드 (0) | 2023.10.16 |
7장: 지도 활용 코드 (0) | 2023.10.16 |
연속 확률 분포 (0) | 2023.10.16 |
데이터마이닝과 통계 (0) | 2023.04.19 |
Comments