인공지능관련/S, R 그래프 그리기

다차정규분포, 3d그래프

학위논문통계 2016. 11. 11. 15:24

 

 

 

오늘 우연히 인터넷 보다가 이런 기사가 있네요. 무슨 청년창조재단인가를 정부에서 만들었는데 이것도 기업에서 돈을 뜯어서 만든 모양입니다.

 

알파고가 나온 이후 정부에서도 인공지능 센터를 만든다고 했는데 얼마전에 무슨 검색하다가 우연히 봤는데 이것도 기업들에게 돈을 뜯어서 만든 모양입니다. 지금 기업들은 자기네들 필요에 따라 자체적으로 하고 있잖아요. 그런데 이걸 기업돈을 뜯어서 만듭니까. 정부 돈으로 장기적인 목표를 가지고 해야죠.

 

하.. 정말 얘네들 기업 돈 엄청 뜯어가네요.

 

 

 

 

하여간 S와 R에서 그림 그리는 연습을 조금 더 해볼게요.

 

아래 그림은 사실 3개의 그림이 합쳐진겁니다. -5에서 2까지 정규분포와 2에서 5까지 검은칠이 되어 있는 정규분포와 마지막으로 아래 수평선, 이렇게 3개의 그래프가 있습니다. 하나의 창에 몇 개의 그래프를 넣으려면 plot 옵션에서 type="n"을 넣어주고 그 다음에 세부적인 그래프를 그릴 때 lines이나 points 같은 그래프 함수를 넣어주면 됩니다.

 

아래 그림과 소스 코드를 보고 연습한번 해보세요. 전에 이야기 했듯이 이런 과학 프로그램의 이미지는 비트맵 형식이 아니고 벡터 형식이기 때문에 우리가 원하는 이미지대로 마음대로 만들 수 없습니다. 한계가 많죠. 최대한 기교를 부려서 할 수 밖에 없고, 꼭 필요한 부분이 있으면 포토샵 같은 프로그램에서 불려서 첨부 작업을 다시 해야 합니다.

  

 

 

 

drawnormal1<-function(m,sigma){

x<-seq(-5,2,length=10000);

y<-(1/sqrt(2*pi*sigma))*exp(-((x-m)^2/2*(sigma^2)));

plot(x,y,xlim=c(-5,5), ylim=c(0,0.5),type="n");

lines(x,y, type="l", lwd=5, col=6);

v<-seq(2,5,length=10000);

w<-(1/sqrt(2*pi*sigma))*exp(-((v-m)^2/2*(sigma^2)));

lines(v,w, type="h", lwd=5,col=5);

abline(0,0,lwd=2, col=4)

}

 

 

 

 

 

그런데 이런 생각을 할 수 있을 겁니다. 정규분포는 유명한 분포인데 좀 쉽게 그릴 수 없나 하는 생각이죠. 꼭 정규분포 식을 일일이 함수에 적을 필요가 있나 하는 생각이죠. 일반적인 함수 모양은 귀찮지만 함수식을 일일이 적어야 합니다. 컴퓨터가 우리가 무슨 작업을 원하는지 어떻게 압니까.

 

그러나 통계학에 많이 쓰이는 분포는 S에서 편한 명령문을 제공해 줍니다. 정규분포 같으면 dnorm(x) 이하는 함수를 쓰면 x에 해당하는 함수 값을 제공해 줍니다. 이건 뿐만 아니라 pnorm, qnorm, rnorm 과 같은 함수도 제공해 줍니다. d=density, p=percetile, q=quantile, r=random number 의미입니다.

 

또 S에서는 persp라는 3d 그리는 함수도 제공해 줍니다. 그래서 dmvnorm을 이용하여 아래 이차정규분포의 모양을 찍었습니다. 하나는 (x,y)가 10*10 격자인 경우고 하나는 100*100 격자인 경우입니다. 평균은 (0,0)이고 표준편차는 (1,1)입니다. diag는 diagnonal 행렬을 이야기 합니다.

 

여기서 확률분포 값인 z인 dmvnorm 뽑을 때 조금 잘 해야 합니다. 

 

 

 

 

 

 

 

 

 

 

   

   

 

 

drawmvnorm<-function(n){

mnx<-seq(-3,3,length=n);

mny<-seq(-3,3,length=n);

mnz<-dmvnorm(cbind( rep(mnx,n), rep(mnx, each=n)),mean=c(0,0), cov=diag(c(1,1)));

mnz<-matrix(mnz,n,n);

persp(mnx,mny,mnz);

}

'인공지능관련 > S, R 그래프 그리기' 카테고리의 다른 글

퓨리에 변환  (0) 2016.11.14
정규분포 그림 그리기  (0) 2016.11.10