[실험계획법] 분산 분석


변동을 정의하려면 어느 점으로부터의 산포인지 나타내는 자료의 중심과, 자각 자료가 중심으로부터 얼마나 떨어져 있는지를 나타내는 거리의 개념이 필요하다. 따라서 특성값 의 총평균 로부터의 거리인 총편차는 아래와 같이 분해할 수 있다.

총 편차 = ( 에 기인하는 편차) + (잔차) 

위 식의 양변을 동시에 제곱하여 전체 데이터의 제곱의 합을 구하면 아래와 같다. 여기서 좌변을 총변동 SST(Total Sum of Squares)로 표현한다.

 

우변의 첫 번째 항은 각 수준효과 간의 차이에 기인하는 편차들의 제곱합이므로 처리제곱합 또는 급간 변동이라고 부르고 SSA로 나타낸다. 우변의 두 번째 항은 각 처리수준 내에서의 잔차들의 제곱합이므로 잔차제곱합 또는 급내변동이라고 부르고 SSE로 표현한다.


 

위의 값을 일일이 계산하는 방법도 있지만 간편계산법도 있다.


도움이 되셨으면 공감 한번  눌러주세요^^

[실험계획법] 일원배치법


일원배치법은 한 인자에서 3개 이상의 처리(온도, 압력, 품종 등)에서 모평균의 차이가 있는지 비교하는 방법이다.

일원배치법은 다음과 같은 경우에 흔히 활용된다.

  • 특성값에 영향을 미치는 다양한 요인 중에서 특정 요인의 영향을 조사하고자 할 경우
  • 특성값에 영향을 미치는 여러 요인에 대한 검증이 어느 정도 진척되고, 이들 요인 중에서 특성값에 큰 영향을 미칠 것으로 예상되는 특정한 한 요인의 영향을 조사하고자 할 경우


일원배치법은 수준 수와 반복 수에 제한이 없으며, 결측치가 있어도 분석이 용이하다는 장점이 있다.

요인수준의 선택에는 두 가지 방법이 있다. 하나는 실험자가 스스로 특정한 실험 수준을 선택하는 것이고, 다른 하나는 특정 범위 내에서 임의로 선택되는 경우이다. 실험자가 특정한 실험 수준을 선택하는 경우, 요인의 수준이 고정되었다고 하며, 고정 모형 또는 모수 모형이라고 부른다. 반면 처리 수준이 일정 범위 내에서 랜덤하게 선택되는 경우, 랜덤 모형 또는 변량 모형이라고 한다.

고정 요인은 특정 온도, 압력 등과 같이 각 수준이 기술적인 의미를 갖기 때문에 특정 수준에서의 효과와 최적 조건을 구하는데 관심이 있다.

반면 랜덤 요인은 원자재 로트, 실험이르 작업자 등과 같이 요인의 수준이 랜덤하게 선택되는 경우로, 반응치(특성치)가 기술적인 의미를 갖지 못하기 때문에 수준 간의 산포의 크기인 분산 성분에 관심이 있다.



이 표와 같이 인자의 수준에 따라서 실험을 반복하고 그 평균을 계산한다. 우리가 알고 싶은 건 인자의 수준에 따라 평균->모평균에 차이가 있는지 여부이다. 이를 통계적으로 검정하기 위해서는 각 수준에 대한 모집단 모형이 필요하다. 이때, 각 수준에 해당하는 모집단은 서로 독립적이고, 평균이 , 공통 분산 을 갖는 정규 분포라고 가정한다. 여기서 귀무 가설대립 가설은 아래와 같다.

H0 : 각 수준 별 평균이 모두 같다.

H1 : 모든 평균이 같은 것은 아니다.

인자의 수준에 따라 실험 결과가 다르면(인자가 유의미한 차이를 만들면) 대립 가설 H1이 채택될 것이다.


a개의 모평균에 차이가 있는지 검정하는 것은 a개의 수준 효과 간 차이가 있는지 검정하는 것과 같으므로 수준효과 간 차이를 라고 한다면, 가설을 다음과 같이 표현할 수 도 있다.

H1 : 모든 가 0인 것은 아니다.(적어도 하나의 는 0이 아니다.)


그러면 어떻게 검정 할까?

분산분석을 이용!


분산분석 바로가기 



도움이 되셨으면 공감 한번  눌러주세요^^

[선형대수] 선형계획법 Linear Programming 개론


선형계획법(linear programming 줄여서 LP라고도 한다.)은 한정된 자원(제한조건)을 효율적으로 할당하여 목적함수를 최대회하거나 최소화하는 문제를 다룬다.

선형계획법이 말은 어렵지만 중학교 수학에서도 나왔던 것으로 기억한다. 문제의 예를 들면, 어떤 회사가 계산기 A와 B 두 종류를 생산하는데, 생산하는데 각각 5시간과 2시간이 소요된다. 회사는 계산기를 생산하는데 1주일에 900시간을 사용할 수 있다. A와 B를 생산하는데 드는 비용은 각각 8만원, 10만원이며, 사용가능한 자금은 2800만원이다. 대 당 이익은 각각 3만원 2만원이다. 회사의 목표는 이익을 최대화 하는 것이다.

이러한 문제를 푸는 방법은 

1) 조건을 부등식으로 나타내고, 2) 제약조건을 그래프로 표현한 다음 3)가능한 영역에서 최적의 해를 찾는 것이다.

보통 부등식은 선형부등식이고 2개의 부등식 (x>0, y>0과 같은 기본 조건제외)로 이루어져있다.

이러한 부등식은 영역의 꼭짓점이나 모서리에서 최적해를 갖는다는 사실이 증명되어있다. *1)

꼭지점을 최적해로 갖는 경우엔 해가 1개이고 모서리의 모든 점을 최적해로 갖는 경우엔 많은 해를 가진다.


함수의 최소값

목적함수의 최소값을 결정하는 문제는 가능영역에서 -f, 즉 f의 음의 최대값을 구함으로써 풀 수 있다.


이러한 방법은 가능영역(부등식을 만족하는 영역)이 볼록(convex)한 모양인 경우이다.

볼록한 모양이라는 것은 영역을 이루는 형태가 안으로 들어가는 부분이 없다는 뜻이고, 영역 내에 빈공간이 없다는 뜻이다.


*1) 목적함수의 최대값이 한 꼭지점이나 모서리에 생기는 이유?

가능영역이 있고 목적함수가 있을 때, 목적함수 직선의 y절편을 어떻게 조절하느냐에 따라서 직선이 가능영역의 안 밖으로 평행하게 움직이게 된다.

그 중 값이 최대가 되려면 자연스럽게 목적함수 직선이 가능영역에 걸치는 형태가 되어야 한다.

가능한 경우는 아래 그림과 같이 꼭지점 또는 모서리 2가지 경우가 있다.

 



선형계획 문제를 해결하기 위해 소개된 위의 그래프 방법에는 한계가 있다. 세 개 이상의 변수를 포함하는 경우에 대해 기하학적 접근은 비현실적이기 때문에 많은 변수를 가진 문제애 대해서는 대수적인 방법인 심플렉스 방법(simplex method)를 사용한다.

Simplex method는 쉽게 컴퓨터 프로그램화 할 수 있는 장점도 있다.  최적해는 심플렉스 알고리즘이라 불리는 알고리즘에서 기본 행 연산들을 사용하여 열에 영을 만든다. 심플렉스 알고리즘에서도 축들을 선택하여 열의 원소들에 영을 만드는데 사용하지만, 가우스-요르단 소거와는 다른 기준을 적용한다.


심플렉스 알고리즘

1. 선형방정식계의 첨가행렬을 구성한다. 이것을 초기 심플렉스 표(inital simpex tableau)라고 한다.

2. 마지막 행에서 마지막 원소 이외의 크기가 가장 큰 음의 원소를 찾는다(만일 둘 혹은 그 이상의 원소가 이 성질을 갖는다면 이들 중 어떤 것을 선택해도 상관없다). 만일 그런 원소들이 모두 음이 아니라면 그 표는 최종 형태이다.

3. 이 음의 원소가 들어 있는 열의 각 원소에 대해, 원소가 양이면 이 원소로 마지막 열의 대응하는 원소를 나눈다.

4. 3에서 나눈 결과가 가장 작은 행을 선택한다. 이 행과 2에서 선택된 열에 해당하는 원소를 축 원소(pivot element)라고 한다. 

5. 행연산을 사용하여 축 위치에 1을 하나 만들고, 축 열의 다른 원소들은 모두 0으로 만든다.

6. 마지막 행에서 음의 원소들이 모두 없어질 때까지 단계 2-5를 반복한다. 최종 행렬을 최종 심플렉스 표(final simplex tableau)라고 하며, 이 표로부터 최적해를 얻을 수 있다.

 

 

예제

다음의 제약조건 하에서 의 최대값을 구하자.


 

첫 번째 부등식을 만족하는 각각의 x, y 에 대해서 다음을 만족하는 음이 아닌 변수 u의 값이 존재할 것이다. 마찬가지로 두번째 부등식도 아래와 같이 표현할 수 있다. 이러한 u와 v를 원래 변수들의 느슨한 부분을 메워준다고 해서 여유변수(slack variable)라고 한다.

 

 

그리고 목적함수는 다음과 같은 형태로 쓰여진다.

 

 

이제 원래 문제는 다음 선형방정식계에서 f가 가능한 큰 값이 되도록 해를 결정하는 문제가 되었다.

 

 

심플렉스 알고리즘을 적용해보면, 우선 900/5 < 2800/8 이므로 1행이 축이된다.(1행의 x계수 5를 1로 만들것이다.)

 

 

 

 

최종 심플렉스표가 만들어졌다. 마지막 행에서 음의 원소들은 모두 제거되었고, 이 표는 다음의 선형방정식계에 대응된다.

 

 

u와 v가 양수이므로, 마지막 방정식에서 u, v = 0 일 때 f가 최대값 700을 갖는다. u, v의 값 0 을 위의 식에 대입하면 x=100, y=200을 얻는다. 이 결과는 기하학을 사용하여 얻은 결과와 일치한다.

 


 

도움이 되셨으면 공감 한번  눌러주세요^^


[선형대수] 가우스-요르단 소거법



행렬을 사용하여 선형방정식계를 풀 때 가우스-요르단 방법을 사용한다.

그전에 몇 가지 용어 설명!


계수행렬과 첨가행렬


아래의 선형방정식계를 변수의 계수들로 구성되는 계수행렬과 계수와 우변의 상수를 함께 포함하는 첨가행렬로 나타낼 수 있다.

  (계수행렬)         (첨가행렬)

기본변환(Elemetary transformations)를 통해 선형방정식계를 다른 선형방정식계로 바꿀 수 있다.

이 변환은 행렬의 기본 행연산(elemetary row operation)을 이용하는게 편하다. 컴퓨터에서도 선형방정식계가 행렬로 입력되고 처리된다.


기본 행연산

1. 두 행을 교환한다.

2. 한 행에 영이 아닌 상수를 곱한다.

3. 한 행의 원소들의 상수배를 다른 행의 해당 원소들에 더한다.


이렇게 기본 행연산을 통해 만들어진 행렬을 행동등 행렬(row equivalent matrices)라고 부른다. 

기호 를 사용하여 동등관계를 나타낸다.




그러면 방정식계를 풀어보자.



이 식을 행렬로 만들면, 

그리고 기본 행연산을 이용해서 행렬을 조작한다.



여기서 계속 진행하기 위해서는 (2, 2) 위치에 0이 아닌 원소가 필요하다. 이를 위해 2행과 3행을 교환한다.



첨가행렬은 계수행렬 A와 상수항 B의 열로 구성된다. 이 행렬을 [A : B]로 쓴다.

행연산을 사용하여 첨가행렬을 한 열씩 ;단위행렬 과 같은 형태로 만들수 있다.

이 마지막 행렬 를 원래 첨가행렬의 기약 사다리형(reduced echelon form)이라고 부른다.

만약 [A : B]가 기약 사다리형으로 변환될 수 없으면 방정식계는 유일한 해를 갖지 않는다.


기약사다리형의 조건

1. 모든 원소가 영인 행은 모두 행렬의 바닥에 모여있다.

2. 그 외의 각 행에서 영이 아닌 첫 원소는 1이다. 이 원소를 선도 1이라고 부른다.

3. 첫 행 이후의 각 행에서 선도 1은 윗 행의 선도 1의 오른쪽에 위치한다.

4. 선도 1을 포함하는 열의 다른 원소는 모두 0이다.




많은 해를 갖는 경우?!

아래의 기약 사다리형의 경우

여기서 x3에 임의의 값 r을 넣으면 계의 일반해를 얻을 수 있다.

매개변수 r은 실수 집합이기 때문에 많은 해를 갖는다. r에 특정한 값을 넣어주면 특정한 해들이 얻어진다.



 

도움이 되셨으면 공감 한번  눌러주세요^^

방송통신대학교 컴퓨터과학과 졸업 후기


2015년, 대학교 4학년 때 코딩에 관심을 갖기 시작했다. 신문에는 그전부터 4차 산업혁명이다 스마트팩토리다 말이 많았다.

그리고 김진상 교수님의 수업을 들으면서 세상을 보는 시야를 갖게 되었고, 시대의 흐름을 말로만 듣는게 아니라 직접 Computer Science를 배워보고 싶었다.

사이버대를 갈지 학원을 다닐지 고민을 하다가 내린 결론은 방송통신대학교였다. 

동생이 3년제 졸업 후 방송통신대학교를 간다고해서 나도 알아보게 된 걸로 기억한다. 방통대(방송대)의 장점은 저렴한 학비와 졸업하기 힘들다는 것이다. 나중에 알았지만 수업의 질도 높다.

사이버대와는 반대의 특성이다. 사이버대는 비싸고 졸업하기 쉽다.


16년도에 3학년으로 편입을 했고 OT를 갔었다. 교수님들이 설명하시기를 2년내 졸업하는 편입생 비율이 20%라고 했다.

그 때 정한 목표가 2년내 졸업이었다. 그것도 전공으로 꽉꽉 채워서! 내가 입학한 목적은 배움이지 학점따기는 아니어서 일반 교양은 아무것도 안들었다.


사실 만만하게 봤다. 이것보다 훨씬 어려운 공부도 했는데 이 정도를 못하겠어? 라는 생각을 안 했다고 하면 거짓말이다.

그런데 방통대 공부는 누가 시켜서하는 것도 아니고, 먹고 살기위해 하는 것도 아니었기 때문에 수업의 어려움이 문제가 아니라 초심과 의지을 유지하는게 어려웠다. 그리고 시간내서 공부하기가 힘들다고 생각할텐데 학생 대부분이 직장인이다. 나만 시간 없는거 아니다.

한 가지 어려웠던 점은 용어가 익숙하지 않았던 거다. 예전에 학원에서 자바를 잠깐 배웠기 때문에 들어본 용어들이 있어서 그나마 조금 덜 힘들었지만, 아예 다른 전공에서 3학년 편입 후 기초과목 없이 수강신청을 하면 더 어려울 수 있다.

내가 첫학기에 들은 과목과 성적은 아래와 같다. 3학년과목과 1,2학년 과목을 섞어서 들었는데 학점이 안 좋았다.


학점이 안 좋았던 이유 1. 교재를 안 삼(제일 큰 이유) 2. 기출 문제 답이 있는지 몰랐음. 기출 문제만 풀어보고 답은 없는줄 알고 답을 맞춰보지 못 했으니 제대로 공부가 됐을리가 없다. 그리고 대학교 땐 강의노트 뽑아서 필기만 잘하면 시험도 어느정도 쳤기 때문에 책을 안사고 버텨보겠다는 생각을 했었다. 첫 학기는 강의를 보면서 필기를 하고 나중에 필기내용을 다시 보았다.

그런데 내용이 너무 어렵고 필기만 하다보니 뭐가 중요한지 신경을 안 썼다. 그리고 내용을 금방 까먹었다.


그래서 2학기는 공부방식을 바꿨다. 우선 책을 샀다. 책의 좋은 점은 강의에서 다 다루지 않는 내용을 자세하게 써놨기 때문에 맥락 파악을 하기에 훨씬 좋다는 것이다. 그리고 책의 연습문제가 시험에 나온다.(이걸 한 학기만에 깨달아서 참 다행이다.) 과목 선택은 헬이었지만(중요하면서 어려운..) 많은 것을 배운 학기였다. 학점도 1학기보다 훨씬 나아졌다.

시간을 효율적으로 사용하려면 책과 기출문제는 필수다.



3학년때 6전공으로 다 채웠더니 4학년은 듣고싶은 전공을 듣고 학점이 남았다. 그래서 통계에 도전했다.

회사에서 통계 프로그램을 사용하기도 하고, 통계에 부쩍 관심이 생겨서 3과목을 선택했다. 사실 듣고싶은건 따로 있었는데, 타학과 제한에 걸려서 남는 수업을 들을 수 밖에 없었다. 통계학 개론은 통계학 기초로 꼭 들어야하는 과목이고(추천), 엑셀데이터분석은 꽤 유용하다. 갈고 닦으면 왠만한 통계 분석은 다 할 수 있다. 6시그마는 외울게 좀 많다.

컴퓨터 그래픽스는 노력에 비해 얻을게 없다. 학점은 전보다 조금 더 나아졌다. 3학년 겨울 방학 때, 졸업을 위해 정보처리기사를 땄는데 소프트웨어공학과 정보통신망이 기사 과목에 포함돼있어서 학기 중 공부가 훨씬 수월했다.

졸업을 하려면 논문이나 기사 자격증이 필요한데, 기사자격증을 추천한다. 기사 공부는 필기 3주 실기 4주, 독학이었고, 필기 실기 둘 다 커트라인에 여유를 두고 합격했다. 


여기까지 하니 졸업이 눈 앞에 보였다. 그리고 전 학기 학점이 좋아서 추가 학점을 받았다. 21학점... 21학점을 채울까 말까 고민하다가 과락해도 졸업할 수 있으니 도전하자는 생각으로 다 채웠다. 4전공과 3통계... 이건 진짜 4학기 중에 제일 힘들었다. 이 정도 점수 나온게 신기할 정도이다. 망하지 않은 이유 중 하나는 중간고사 대체과제를 전 과목 30점 만점을 받았기 때문이다. 그거 아니었으면 등급이 2단계씩 내려갔을 거다.

중간고사는 출석수업과 대체 시험, 과제물로 구분이 되는데, 직장인이라 출석수업을 과제물과 대체시험으로 돌려서 출석수업은 한 적이 없다. 

과제물은 열심히만 하면 만점을 받을 수 있고, 대체시험은 기말고사 미리보기 버전이다. 배점은 중간 30 기말70이다. 기말을 잘 봐야한다.


마지막 학기는 통계 과목 신청하기를 잘했다고 생각한다. 특히 품질경영과 실험계획과응용(학점은 별로지만 제일 많이 배운 과목)이 도움이 많이되었다.

인공지능 과목은 기대 이상이었다. 이 과목을 듣기 전부터 머신러닝에 관심이 있어서, 텐서플로우를 써봤지만 이렇게 시작한 사람들은 대체로 이론이 약하다.(일반화 아님.) 인공지능은 텐서플로우 얘기는 없지만 인공신경망에 대한 내용이 잘 나와있고, 수업내용도 제너럴하고 좋다.


가끔 주관식 중간고사가 아니면 방통대 시험은 전부 객관식이다. 사실 객관식 시험에서 과락을 한다는건 그냥 공부를 안 한거다.(과락기준은 100점만점에 60점. 하지만 방심하면 나올 수 있는 점수다.)

근데 공부를 못 할 수도 있다. 평소에 시간이 안돼서(=미루다가 쌓여서) 벼락치기를 했는데 3, 4학년 과목만 신청한 경우 하루에 6과목을 봐야하는 말도 안되는 일이 벌어진다. 이건 평소에 공부를 했더라도 힘들다. 시험이 일요일이므로 금요일 저녁과 토요일에 기출을 풀고 복습해야 하는데, 하루에 6과목은 아무리 공부를 했어도 한 번 훑어보기에도 시간이 빠듯하다. (보통 기말은 14주치를 본다.)

방통대는 1, 2학년이 기말 1주차에 시험을 보고 3, 4학년은 2주차에 시험을 본다. 그러니까 수강신청 할 때, 1,2학년 과목과 3,4학년 과목을 잘 섞어서 시험을 2주에 나눠 보도록 하자. 시험 전에 2일정도 휴가를 낼 수 있는게 아니면 꼭 이렇게 해야한다. 



중요한 걸 빠뜨릴 뻔 했다. 학비는 한학기에 대략 34~37만원이었던거 같고, 교재비는 7~8만원 정도 된다. 학원비보다 훨씬 싸다.


대학 졸업이 배움의 끝이 아니라고 생각한다. 직장인이 자기 직무에 맞는 배움을 지속한다면 그 결과는 남들과 다를 수 밖에 없을 것이다. 자기 만족도 크다.

입학 할 때의 설렘과 배움에 대한 기대를 2년동안 유지한다면 평소에 놀거 놀고 쉴 때 쉬어도(공부만 하지 않아도) 충분히 졸업이 가능하니 과감히 도전해보길 바란다.



도움이 되셨으면 공감 한번  눌러주세요^^

[python] pip install - urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]


When I installed egenix-mx-base package, urlopen error occurred like below.



I managed to find out the solution. It is not to upgrade pip...


You can see the download url in the picture. It starts with https://~, but you should modify this url to http://


So, "pip install http://downloads.egenix.com/python/egenix-mx-base-3.2.9-py2.7-win32-prebuilt.zip"


Then the package will be installed! 


[확률] R 주사위 던지기


주사위를 무작위로 던지는 간단한 예제를 R로 구현 해보자.



아래는 R Command

> par(mfrow=c(2,2)) 

# 빈 윈도우 띄우기 2행 2열의 테이블을 그릴 수 있음

> dice20 = sample(1:6, 20, replace = TRUE)

# 1부터 6까지의 수 중 하나를 무작위로 선택, 20회 시행

> barplot(table(dice20)/20, ylim=c(0,0.5), main="(a) n=20")

> dice100 = sample(1:6, 100, replace = TRUE)

> barplot(table(dice100)/100, ylim=c(0,0.5), main="(b) n=100")

> dice1000 = sample(1:6, 1000, replace = TRUE)

> barplot(table(dice1000)/1000, ylim=c(0,0.5), main="(c) n=1000")

> dice10000 = sample(1:6, 10000, replace = TRUE)

> barplot(table(dice10000)/10000, ylim=c(0,0.5), main="(d) n=10000")


결과 화면은 아래와 같다.



도움이 되셨으면 공감 한번  눌러주세요^^

[통계분석] 유의성 검정(2) - 유의확률, Z 검정, T 검정, 카이제곱 검정



가설검정을 수행하려면 유의확률이 무엇인지 알아야 한다. 아마 다들 p-값이라는 걸 한번쯤은 들어봤을 것이다. 

p-값은 유의확률이라고도 하며 0.05의 유의수준이라고 함은, 쉽게말해 내가 주장하는 가설이 우연한 현상일 확률이 5% 미만이라는 뜻이다.

즉, 귀무가설 H0가 옳을 때 0.05 이하의 확률로 발생하는 사건이라야 H0에 배치되는 증거로 인정하여 대립가설을 채택한다는 의미이다.


유의수준이 낮을 수록(예를 들어 0.01) 우연을 가장한 현상일 확률을 배제함으로서 더 신뢰도 있는 대립가설이 된다.

(요즘에는 유의확률 개념 자체가 오류를 일으킬 만한 소지가 다분하다는 이유로 p-값에 의한 가설검정을 안 믿기도 한다.)



1. 모평균의 검정

1) 모분산을 아는 경우

정규분포를 따르는 모집단에서 추출한 랜덤표본을 이용하여 유의성검정(1)의 글에서 같이 모평균에 대한 가설을 검정하는 경우이다. 모분산을 아는경우에는 Z 검정(Z-test) 통계량을 사용하며

                   

시그마 : 표준편차, n : 표본의 개수, Xbar : 표본평균, u : 모평균(가설)

 

예제) 어떤 과즙의 당분 함량을 분석을 통해 아래와 같이 얻었다. 이로부터 당분의 평균 함량이 14.3%라는 주장이 옳은지 유의수준 0.05에서 검정해보자.

과거의 경험에 의하면 과즙의 당분 함량은 정규분포를 따르고, 모표준편차는 0.75라고 알려져있다.


위의 함수에서 Z.TEST는 z-검정의 단측 p 값을 나타내는 것이므로 곱하기 2를 해준다. 그리고 데이터와 u, 모표준편차를 입력하면 된다.

결과값은 0.164로 0.05보다 크므로 대립가설이 기각된다.(가설이 받아들여지지 않음)

 

2) 모분산을 모르는 경우

모분산을 모르는 경우 모평균 u에 대한 가설검정은 모표준편차 대신에 표본표준편차를 사용한다. 그리고 통계량은 T-검정통계량을 사용한다.

검정 통계량 T  

 

표본 표준편차 S

 

엑셀 함수는 T.DIST(x, 자유도, Tails) 단측검정의 Tails=1, 양측검정은 Tails=2이다.



도움이 되셨으면 공감 한번  눌러주세요^^

[통계분석] 유의성 검정(1) - 대립가설과 귀무가설, 가설 검정



우리는 대부분 표본을 가지고 모집단을 추정하곤한다. 모집단의 분포를 추정, 가정하는 것을 가설이라고 하며, 표본을 이용하여 가설의 옳고 그름을 판정하는 것을 가설검정 또는 유의성 검정이라고 한다.


통계적 가설은 귀무가설과 대립가설로 나눌 수 있으며, 수집된 자료를 이용하여 주장하고 싶은 가설을 대립가설(H1)이라고 하고, 이와 반대되는 가설을 귀무가설(H0)라고 한다.


예를 들어 보자.

어느 제약회사에서 생산하는 진통제 A는 복용 후 30분부터 진통효과가 나타나는 것으로 알려져 있다. 회사의 연구진은 새로 개발된 진통제 B가 기존의 진통제 A보다 진통효과를 더 빨리 나타낸다고 주장하고 있다. 과연 연구진의 주장이 옳은지 여부를 확인하기 위해 36명의 환자를 랜덤 추출하여 진통제 B를 복용시킨 후, 진통효과가 나타나는 시간을 측정한 결과, 표본평균이 29분 이었다고하자. 과거의 경험에 의하면 표준편차는 3분이라고 한다. 연구진의 주장이 옳은가?


여기서 연구진이 주장하고자 하는 것은 새로운 진통제가 진통효과를 나타내는 시간이 30분보다 짧다(u<30)는 것이다. 따라서 대립가설은 

H1 :u<30 이고, 귀무가설 H0 : u>=30이다.

(이렇게 30을 기준으로 크다 작다를 나누는 것을 단측가설이라고 하고 H0: u = 30, H1 : u != 30 인 경우는 양측가설이라고 한다.)


위의 가설 중 어느 가설이 옳은지 알아보기 위해서는 표본평균 Xbar를 계산하여 그것의 값이 크면 귀무가설이 옳다고 판단하고, 그 값이 작으면 대립가설이 옳다고 판단한다. 이때 가설의 옳고 그름 여부를 판단하는데 사용하는 통계량을 검정 통계량이라고 한다. 이 문제의 경우는 모평균에 대한 가설 검정 문제이므로 Xbar가 검정통계량이 된다.


검정통계량이 정해지면 검정통계량의 값이 어느 정도일때 귀무가설이 옳다고 판단하느냐 하는 기준을 선택히야한다. 이를 위해 귀무가설을 기각하는 검정통계량의 값의 영역인 기각역을 설정한다. Xbar < c 일때 귀무가설을 기각할텐데, 이 c의 값을 결정하기 위해서는 Xbar의 분포를 알아야 한다.




도움이 되셨으면 공감 한번  눌러주세요^^

[Tensorflow] 텐서플로우 자료형


텐서플로우에서는 일반적으로 파이썬에서 하듯이 x = 3 이렇게 변수를 정의하면 안된다.


텐서플로우의 자료형


상수형(Constant)


import tensorflow as tf


a = tf.constant([3], dtype=tf.float32)

b = tf.constant([5], dtype=tf.float32)


이런 식으로 tf.~로 정의하는데 짜증나는건 dtype도 float32가 아니라 tf.float32이다.

a의 타입을 찍어보면

print type(a)

>> <class 'tensorflow.python.framework.ops.Tensor'>


연산가능한 타입이 아니므로, a+b 와 같은 일반적인 방법으로는 연산이 안된다는 것을 알 수 있다.


그래프와 세션

그러면 a + b 의 값을 얻고 싶으면 어떻게 해야할까?
c = a + b라고 할 때, a + b를 그래프(Graph)라고 한다.

실제로 값을 뽑아내려면, 세션(Session)에 그래프를 넣어서 실행해야 한다.

session = tf.Session()
result = session.run(b)

print result
>> [5.]
드디어 숫자가 눈에 보인다. 하지만 왜 배열 형태일까?
맨 처음에 a = tf.constant([3], ...)이렇게 정의했기 때문이다.
만약에 tf.constant([1,2,3],~)의 배열의 개수가 1이 아니엇다면 배열의 개수만큼 결과값이 나온다.
연산하려는 행렬의 개수가 안맞으면 에러가 발생한다.


플레이스홀더

그렇다면 상수 대신에 변수를 이용하여 연산을 하려면 어떻게 해야할까?
여기서 Placeholeder라는 것을 사용한다.
플레이스홀더는 Variable을 담는 그릇이고 여기에는 학습 데이터를 피딩(하나씩 넣음)한다.
tf.placeholder(shape, dtype, name) 여기엔 shape, dtype, name의 속성이 필요하다.

import tensorflow as tf

x = tf.placeholder("float", None)
y = x * 2

with tf.Session() as session:
    result = session.run(y, feed_dict={x: [1, 2, 3]})
    print(result)

http://learningtensorflow.com/lesson4/에서 참조한 예제이다.

x는 float type의 placeholder이고 y = x * 2라는 그래프가 있다.

tf.Session()을 session이라고 정의하여 result = session.run(Graph, feed_dict) 로 실행한다.
상수 연산만 할 때(feed_dict가 없을 때) 였다면 run(y)만 했을 것이다. 

여기서는 x라는 플레이스홀더에 데이터를 넣어줘야 하기 때문에 run(y, 넣어줄 데이터)를 한다.
with문 대신 이렇게 써도 상관없다.
session = tf.Session()
result = session.run(y, feed_dict={x: [1, 2, 3]})
print(result)  

변수형

y = W * x라는 그래프를 만들어보자.
import tensorflow as tf

input_data = [1,2,3,4]
x = tf.placeholder("float", None)
W = tf.Variable([2],dtype=tf.float32)
y = W * x

session = tf.Session()
init = tf.initialize_all_variables()
session.run(init)
result = session.run(y, feed_dict={x:input_data})
print(result)

여기서 주의해야할 점은 Variable은 변수 초기화를 해줘야 [2]라는 값이 W에 저장된다는 것이다.
저 코드 없이 실행하면 에러가 발생한다.

텐서플로우는 일반적인 파이썬 자료형과 다르기 때문에
기본 개념을 알고 넘어가야 머신러닝이 수월해질 것 같아서 정리했다.


+ Recent posts