728x90

이원배치법

- 2개의 요인(독립변수 A, B)와 반응 변수(종속변수) 사이의 관계를 알아보기위한 실험계획

- 독립 변수는 불연속, 종속 변수는 연속적인 값

- 반복이 없는 경우와 있는 경우가 존재

- 반복하는 경우 두 요인간 상호 작용 효과를 검출 가능

 

 

이원배치법에서 효과

- 주 효과 main effect : 요인 A의 수준간 차이가 존재하는가

- 상호 작용 효과 interection effect(교호 작용효과) : 요인 A의 서로 다른 수준에서 요인 B의 주효과가 다른가

 

 

 

 

실험의 랜덤화

- 완전 확률화 계획법 : 두 요인 수준 조건에 순서를 주고, 랜덤한 순서대로 실험

 

 

이원 배치법 고정모형(A, B 고정요인- 모수인자)

- 반복의 장점

  인자 조합의 효과를 실험 오차와 분리하여 구할수 있음

  교호작용을 분리하여 검출할수 있어 주효과에 대한 검출이 개선됨

  실험 오차를 구할 수 있음

- 이원배치법의 자료구조

 

 

반복이 있는 이원배치 모수모형 (A, B 두인자 모두 고정, 모수인자인경우)

 

 

 

 

검정 가설

1. 인자 A에 대한 가설

 H0 : alpha1 = alpha2 = ... = 0 ->인자 A의 수준간 효과 차이 없다.

 vs H1 : 적어도 하나의 alphai는 != 0 -> 인자 A의 수준관 효과 차이 있다.

2. 인자 B에 대한 가설

 H0 : beta1 = beta2 = ... = 0 -> 인자 B의 수준간 효과에 차이가 없다

 vs H1 : 적어도 하나의 betai는 != 0 -> 인자 B의 수준간 효과 차이 존재

3. 인자 A와 B의 교호작용에 대한 가설

 H0 : 모든 (alpha beta)ij = 0 -> 교호작용 없다

 vs H1 : 적어도 (alpha beta)ij 중 하나는 0이 아니다 -> 교호작용이 존재

 

 

 

 

이원배치 분산 분석

 

 

이원배치 분산 분석표

 

 

이원배치 분산 분석에서 가설검정

1. 인자 A에 대한 가설검정

- 검통 통계량 F0 = MSA / MSE > F(a -1, ab(r-1), alpha)=> 유의수준 alpha에서 귀무가설 기각

 즉, 인자 A가 반응치에 유의한 영향을 준다.

2. 인자 B에 대한 가설검정

- 검통 통계량 F0 = MSB / MSE > F(b -1, ab(r-1), alpha)=> 유의수준 alpha에서 귀무가설 기각

 즉, 인자 B가 반응치에 유의한 영향을 준다.

3. 교호작용 AxB에 대한 가설검정

- 검통 통계량 F0 = MSAxB / MSE > F( (a-1)(b-1), ab(r-1), alpha)=> 유의수준 alpha에서 귀무가설 기각

 즉, 인자 A와 B 사이에 교호작용이 존재한다.

 

 

 

 

 

이원배치 분산분석 예제

- 4종류의 사료와 3종류의 돼지 품종이 체중 증가에 미치는 영향

 

 

 

R에서 예제 실습

- 사료와 품종별 boxplot

 

 

- 품종별 boxplot 상에서

품종간에 큰 차이는 없어보임

 

 

사료별 boxplot

- 사료별 큰 무게 분포를 보인다.

 

 

 

분산분석

- 사료에 대한 유의확률 p val 0.00223로 매우 작음. 귀무가설 기각

 => 사료가 몸무게 증가에 유의한 영향을 준다.

- 나머지의 경우 유의확률이 크므로 귀무가설 채택.

 

 

 

 

 

 

 

300x250
728x90

유의확률 = 한계유의수준 = p value

유의수준 = alpha

 

 

 

 

일원 배치의 구조 모형

- 독립 변수(중요한 요인, 인자)가 하나. 이 변수가 종속 변수(반응치)에 어떤 영향을 미치는가?

1. 모수 인자(고정 인자)

- 관심 대상이 되는 반응온도에서 80도, 100도, 120도를 고정된 인자.

- 최적 조건

- 인자의 수준에 따라 반응치의 모평균이 바뀌는가

 

2.변량인자 (랜담인자)

- 80~120도사이 같은 구간 반응 온도는 변량 인자

 

 

일원 배치법의 구조 모형

 

오차 epsilon_ij에 대한 가정

- 정규성, 독립성, 불편성, 등분산성

 

 

 

 

 

 

분산분석

귀무가설 H0 : alpha1 = . . . = alpha_a = 0 

   => 수준 효과간 차이가 없다

   ex. 100도 = 120도 = 130도 .. 에서 차이가 없다.

대립가설 H1 : alpha_i 모두 0은 아니다

  => 어떤 수준에서 효과 간 차이가 있다.

 

변동에 대하여

 

 

분산 분석표와 가설 검정 방법

- 검정 통계량 F0 > F(a - 1, a(r-1) ; alpha)이면 유의수준 alpha에서 귀무가설 기각

- 유의확률 p val < 유의수준 alpha이면 대립가설 채택

 

 

 

일원배치 분산분석 예제 - 납품업체간 직물의 마모도에 유의한 차이여부

- 분산분석표

- 일원 배치 분산분석 결과

 검정 통계량 F0 8.78 > F(3, 12; 0.01) = 5.95

 => 귀무가설 기각

납품업체들 간에 직물 마모도 차이가 존재한다.

 

 

 

 

R로 일원배치 분산분석 실습

- 한계유의수준(유의확률, p val)이 0.00227로 유의수준 0.05보다 작다 => 귀무가설 기각

 업체들간 직물 마모도에 차이가 존재한다.(대립가설 채택)

 

 

 

 

 

 

300x250
728x90

관련 용어

- 모집단 population : 알고자 하는 대상 집합

- 랜덤 추출 random sampling : 임의의 표본 추출

- 랜덤 표본 random sample : 모집단에서 추출한 표본

- 모수 parameter : 모집단의 특징을 나타내는 값 ex. 모평균, 모분산

- 통계량 statistics : 표본을 이용하여 추정하고자 하는 값에 대한 함수 ex. 표본 평균, 표본 분산

- 추정 estimation : 표본을 이용하여 모집단에 대한 값을 추정하는 과정

- 점추정 point estimation : 모수에 대한 추정

- 구간 추정 interval estimation : 모수에 대한 추정과 추정의 정확률 

- 신뢰 수준 confidence level : 모수가 참이라 속할것으로 기대되는 구간에 못가 포함될 확률 

- 통계적 가설 statistical hypothesis

- 검정 통계량 test statistic 

- 귀무 가설 H0 null hypothesis : 일어날 가능성이 적다고 판단하는 가설. 참인지 판단하고자하는 가설

- 대립가설 H1 : alternative hypothesis : 귀무가설에 대립되는 가설

- 기각역 rejection region : 검정 통계량이 기각역에 들어가는지를 보고 귀무가설 기각여부 판단

- 유의 수준 significant level : 제1 종 오류를 범하는 최대 허용 확률

- 유의 확률 significant probability : 귀무가설이 맞다고 할때 주어진 데이터가 우연히 대립가설을 지지할 확률

 

 

 

 

t 검정

 - 모집단의 분산을 모를떄, 모집단을 대표하는 표본으로 부터 추정된 분산을 이용하여 t분포에 의존해 검정하는 방법

 

 

두 모집단 비교

- 가정

- 공통 분산 sigma2는 합동표본분산 S_p^2(pooled sample variance)로 추정

 

 

 

 

두 모집단 비교 예제 1

- 약의 생산 후와 1년 후 약효 측정 결과

- mu1, mu2가 생산 직후와 1년후 약의 평균 약효

 => 1년이 지나도 약효가 보존되는지 가설 검정

 

1) 가설 설정

 

2) 검정 통계량 구하기

3) 의사결정

- 검정 통계량 3.85가 자유도가 18인 t분포에서 alpha가 0.025인 경우 2.101으로 보다 크다

 => 귀무 가설은 기각

 유의수준 0.05에서 약을 오래 보존하면 달라진다.

 

 

 

4) 신뢰 구간

 

 

t 검정 결과

- 유의수준 0.05일떄, 자유도 18, 검정 통계량 t0 = 3.8511

- 유의확률 p value = 0.00117로 0.05보다 훨씬 작으므로 귀무가설 기각

 

 

 

300x250
728x90

실험 계획을 하는 이유

- 특정 프로세스와 시스템을 이해 -> 최적화 등 의사결정 목적

1. 중요 요인 찾기 : 정화하는데 소요되는 시간에 영향을 미치는 정화수 종류, 온도, 필터 종류 등의 유의성 파악

2. 입력 변수와 출력변수간 관계 파악 : 염색할때 염색 온도가 명암에 미치는 영향 파악

3. 최적 조건 찾기 : 독립변수가 종속 변수에 영향을 미칠때(통계적 유의성이 존재시) 최적 조건을 위함

4. 비교 실험 : 여러 가지 약물의 효과 비교를 위하여 실시

 

 

 

  

프로세스 모형

 

 

 

 

연구의 종류

- 관측 연구와 실험 연구

1. 관측 연구

 - 기존의 자료, 관측 등

2. 실험 연구

 - 실험 대상에 대해 처리를 하는 연구

 - 모든 연구는 관측 연구에서 시작하여 실험을 통해 확인

 

 

 

 

 

실험 계획 기본 원리

1. 랜덤화 randomization

 - 실험 단위 배정/순서를 임의로 결정

2. 블록화

 - 실험 대상끼리 묶기. 블록화 후 블록 내에서 랜덤화

 ex. 젋은 사람과 나이든 사람에게 약 효과에 차이가 있다.

 -> 젋은 사람/젋지 않은 사람 두 그룹으로 나누어야 한다.

3. 교락 confounding

 - 고차의 교호작용효과와 블록효과 간 분간이 안되는것

  => 실험 계획을 잘못 할 경우 교락이 되어 분리가 안됨. 

4. 직교화 orthogonalization

 - 주효과와 부호의 곱으로 표현되는 열(교효작용)이 균형 (각 요인의 효과가 독립이라고 추정)

 

 

 

 

 

실험 계획 예시 1 - 감기에 대한 비타민 C 효과 실험

- 감기 환자들을 임의로 두 그룹으로 나눔

- 한 그룹(실험 집단)에는 비타민 C를 주고, 다른 그룹(대조 집단)에게는 위약을 준다.

- 이중 눈가림 실험 실시(맹검법 double blind test) 실시

=> 맹검법 : 실험자와 피실험자 둘다 정보를 주지않는것.

ref : ko.wikipedia.org/wiki/%EB%A7%B9%EA%B2%80%EB%B2%95

 

 

 

실험 계획 예시 2 - 동물 전염병에 대한 치료제 효과 파악

1. 실험 1 

- 작년에 태어난 동물에게 기존 치료제 투여시 발병률

- 올해에 태어난 동물에게 새 치료제 투여시 발병률

=> 동물 성장 시 환경적 요인이 다르므로 약효도 다를 수 있어 좋지 않음.

 

2. 실험 2

- 올해 동물을 임의로 그룹을 나눔

- 맹검법 실시

=> 더 낫다.

 

 

 

 

심슨의 모순

- 전체적으로 본 결론과 세부적으로 나누어본 결론이 다름

- 각 부분에 대한 평균이 크다고 해서 전체에 대한 평균까지 크지는 않다

 

ex.   어느 대학 신입생 합격률에서 여성 합격률이 낮았음.  단과대 별로 보니 남성이 합격률이 낮음

ref : namu.wiki/w/%EC%8B%AC%EC%8A%A8%EC%9D%98%20%EC%97%AD%EC%84%A4

 => 신입생 합격률 자체는 남성이 높으나 단과별 합격룰은 여성이 더 높음.

 

 

 

 

 

 

 

실험 계획 순서

1. 문제 발생

2. 목적 설정

3. 반응 변수(특성값) 선정. 

   요인과 수준 선정

   실험 설계 선정

 * 어떤 효과들 끼리 서로 교락이 되서 분리가 안되는 상황을 피하도록 실험을 계획하여야함

4. 실험 수행

5. 자료 분석, 결과 검토

6. 결론, 조치

7. 목적 달성 

8. 문제 해결

 

 

 

 

 

 

 

300x250

'수학 > 통계' 카테고리의 다른 글

실험계획 - 3. 일원배치 분산분석  (0) 2020.10.29
실험계획 - 2. 두 모집단 비교  (0) 2020.10.29
파이썬R - 8. 분산 분석  (0) 2020.10.28
파이썬R - 7. 평균 검정  (0) 2020.10.28
파이썬R - 6. 파이썬 기술통계  (0) 2020.10.28
728x90

실험 계획법

- 대표적인 분석 방법 -> 분산 분석

- 실험을 어떻게 계획하고 분석하는가

를 실험계획법에서 배운다.

 

 

분산 분석

- 요인이 한개인 경우 -> 일원 배치 분산 분석

- 요인이 여러개 인 경우 -> 이원 배치 분산 분석

 

 

 

 

 

 

1. 일원분산분석 예제

- 목화 함유량 퍼센트 pct 에 따라 섬유 장력 tensile을 측정한 자료가 주어질때

- 요인은 목화 함유량

- 실험 수준 : 15%, 20%, 25%, 30%, 35% 다섯개 처리 선택

- 각 수준별로 5회씩측정

=> R과 파이썬으로 일원분산분석 하자

요인(인자 ) : pct

수준 ; 5

Y : 장력 tensile

 

 

 

 

분산 분석이라는 용어의 이유

 

 

- 변동을 분해한 표 -> 분산 분석표

 

 

 

분산 분석

1. 분산분석표 작성 : 수준 간에 차이가 있는가, 없는가 본다.

2. 다중 비교 :  수준 간에 차이가 존재한다면, 어느 수준 간에 차이가 존재하는가?

 

 

 

1.1 R

수준간 차이가 있는지 보려면

수준별 상자그림을 그려보자

그룹별 기술 통계량 보면

 

유의한지?

일원배치 분산 분석으로 다룬다

 

분산분석 aov함수

- aov(종속변수 ~ 요인, 데이터)

 

 

총 데이터 25개

- df 24(잔차 20 + pct 4) = 25 - 1

- F value = 14.76

- P value = Pr(F > 14.76) = 9.13e-06 

 p value가 매우 작으므로 귀무가설 기각

 

 

 

다중 비교 분석

- 어느 수준간에 차이가 존재하는지 다중 비교분석 필요

- tukey 방법

- duncan 방법

- scheffe 방법

 

 

 

Tukey방법으로 다중 비교 분석

- TukeyHSD(fit)

 

 

 

 

다중비교분석 플로팅

#Tukey 방법으로 다중 비교 분석
tukey.test = TukeyHSD(fit)
plot(tukey.test)

 

 

 

 

 

 

 

 

 

 

2. 이원 분산분석

- 온도와 판유리 종류별로 유리 강도에 차이가 있는지 이원분산분석

- 온도 100도, 125도, 150도/ 유리 종류 1, 2, 3/ 각 3회 반복

=> 총 27회 랜덤하게 실험하여 얻은 데이터 사용

* 아깐 목화 함유량 pct에 의한 장력 tencile 을 보았다면 이번엔 유리 종류와 온도에 따른 분석 수행

 

데이터 읽고 head

- temp가 100, 125, 150..으로 되어있으니

- 100 = 1, 125 = 2, 150 = 3으로 변경(car 패키지 사용)

 

 

 

car 패키지의 recode 함수

- 온도를 변경

 

 

 

 

변수를 명목형으로 변경

 

 

 

 

 

 

 

 

분산분석 및 분산분석표 출력

df보고..

- glass 수준 3가지

- temp 수준이 3가지

 

- sum of sq/df -> mean sq

- F val = mean sq/ df

- *** => 유의한 차이가 있다.

 

 

분산분석 결과 ploting

interaction.plot()

 

300x250

'수학 > 통계' 카테고리의 다른 글

실험계획 - 2. 두 모집단 비교  (0) 2020.10.29
실험계획 - 1. 실험 계획 개념  (0) 2020.10.29
파이썬R - 7. 평균 검정  (0) 2020.10.28
파이썬R - 6. 파이썬 기술통계  (0) 2020.10.28
파이썬R - 5. R 기술통계  (0) 2020.10.28
728x90

평균 검정

- 단일 표본에서 모평균

- 두 독립 표본에서 평균 검정(평균이 같은가 다른가)

- 대응 표본에서 평균 검정

=> t 검정

 

 

t검정 t test(평균 검정)

- 모집단의 분산이나 표준편차를 모를때

 표본으로 추정된 분산이나 표준편차로 검정.

- 두 모집단에 평균간 차이는 없다 라는 귀무가설과

평균 간 차이가 있다는 귀무가설중 하나를 선택가능한 통계적방법

 

 

 

예습

 

 

 

1. 단일 표본 모평균 검정

- 25마리 게 체온을 이용한 단일 표본에서의 모평균 검정

귀무가설 H0 : mu = 24.3 vs 대립가설 H1 : mu != 24.3

 

1.1 R에서 모평균 검정

 

 

 

 

t0 = 2.7128

p value = 0.0124 ->

유의수준 alpha = 0.05 이라면

p value < alpha 이므로 귀무가설을 기각한다.

 

 

 

1.2 파이썬에서 모평균 검정

파일 읽기

 

실수형으로 데이터 변환

 

t검정

- ttest_1samp(데이터, 모평균)은 [tvalue, pvalue]를 리스트로 반환

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 두 독립 표본에서 평균 검정

- 아까는 25마리의 게 체온이었다면 이번에는 두 종류의 지열제 효과 측정

- 13명 참여자 임의 분할. 한 그룹에 지혈제 B, 다른 그룹은 지혈제 G

- 두 독립표본의 평균차이가 존재하는지 검정

귀무 가설  H0 : mu0 = mu1 vs

대립 가설 H1 : mu0 != mu1

 

 

 

 

2.1 R에서 t test

t0 = -2.54

df = 10.701

p value = 0.0274 < 유의수준 0.05이므로 귀무가설 기각

=> 두 그룹에서 차이는 존재한다.

분산에 대한 검증 F test

- var.test()함수

p value가 0.4722로 <0.05보다 작다 => 귀무가설 기각

=> 분산이 같다고 보자

 

 

2.2 파이썬에서 ttest

 

 

 

 

 

 

3. 대응된 표본에서의 평균 검정

- 사슴의 왼쪽 뒷다리와 왼쪽 앞다리 길이 데이터. 두 다리 길이가 같은지 다른지 알고싶음

- 한 사슴에서의 다리를 측정하였으므로 대응 표본.

- 대응 표본에서 평균 차이를 검정

 

H0 : mu1 = mu2 vs H1 : mu1 != mu2

 

 

3.1 R에서 

t0 = 3.4138

df = n - 1 = 10 - 1 = 9

p value = 0.0077 -> 귀무가설 기각

=> 앞다리 뒤다리 차이 있다.

 

 

 

 

 

 

3.2 파이썬에서 대응 표본의 t검정

n = 10

-> df = n -1 = 9

 

 

 

300x250
728x90

기술 통계

- 개별 기술통계

- 그룹별 기술통계

- 기술통계 플로팅(줄기잎, 박스, 히스토그램)

- 분할표 contingency table

 

 

 

데이터 준비

 

통계량 출력

 

 

 

다변수 접근

 

다변수 기술통계량 출력

- 데이터프레임.describe()

 

 

 

 

왜도, 첨도 확인하기

왜도 skewness

 - E(((X-mu)/sigma)^3) 

 - 한방향으로 치우쳐진 정도

 - 왼쪽으로 치우쳐지면 positive skewness

 - 우측으로 치우쳐지면 negative skewness

 

 

첨도 kurtosis

 - E(((X-mu)/sigma)^4) - 3

 - 분포의 꼬리에 데이터가 몰려있는지에 관한 측도

 

 

 

왜도, 첨도 예제

- skew(a) : 결과 분포가 우측으로 매우 치우쳐짐

- kurtosis(a) : 첨도가 매우 큰걸 볼수있음  

- 999가 빠진 경우 첨도

 => 16에서 1로 크게 줄음

 

 

 

 

그룹별 통계량

1. 성별로 그룹. total 변수, 열에 대한 기술통계량

 

 

2. agg()함수 사용하여 기술 통계량 구하기

 

 

 

 

 

researchpy

- 그룹별 기술통계량 제공하는 라이브러리

- 설치먼저 해주고

 

 

summary_cont 함수

- 바로 total 변수에 대한 통계량

- 성별로 그루핑후 통계량

 

 

 

 

 

 

파이썬  줄기잎 라이브러리(stemgraphic)

-pip로 설치해줍시다.

 

 

 

줄기잎 그림 그리기

stemgraphic.stem_graphic(데이터프레임.변수, scale=스케일크기)

 

 

 

sns 플로팅

1. 단순 박스 플롯

2. 그룹별 box plot

- 범주형 변수인 gender를 x축으로 지정

 

 

 

 

 

 히스토그램 그리기 

1. 단순 히스토그램

 

2. 성별에 따른 히스토그램

 

 

 

앙케이트 데이터 다루기

1. 데이터 로드

2. 교차 텝 만들기

3. 인덱스명 변경

 

 

 

카이제곱검정

- 사이파이에서 가져옴

 

카이제곱통계량

p벨류

기회도수 등

 

 

 

 

 

 

 

300x250
728x90

기술 통계 descriptive statistic

- 데이터를 어떻게 묘사할것인가에 대한 학문

 

 

기술 통계량 descriptivie statistics

- 중심 위치 측도, 산포 측도 등

 

중심 위치 측도

- 기대값 expectation : 데이터의 무게 중심

 => 표본 평균 bar x = (x1 + ... xn) / n = sigma xi/n

- 중앙값 median : 데이터를 크기 순으로 나열시 중간에 있는 값.

 

 

산포 측도

- 표본 분산 : 표본들이 표본 평균으로부터 흩어진 정도

 S2 = sigma (xi - bar x)2/ (n-1)

- 사분위수 quartile : 통계의 변량을 도수 분포로 정리할떄 1/4 , 2/4, 3/4 자리의 값

 => Q1(25%), Q2(50%), Q3(75%)

 => 사분위수의 범위 IQR interval of Quartile = Q3 - Q1

 

 

 

 

 

데이터 준비

 

 

기술통계값 구하기

- sapply()함수

 

- summary(데이터프레임)

 다섯수치 요약해줌

클래스 보기 - class(변수)

다섯수치보기 - fivenum(변수)

 

 

psych로 기술통계량 보기

- describe(데이터프레임)

-> 갯수, 평균, 표준편차, 중위수, 절삭 편균, 최소 최대, 범위, 첨도 왜도 등

 

 

 

 

변수 확인 -> names()함수

- names(데이터 프레임)

 

 

 

 

 

 

그룹별 기술 통계

- tapply

- aggregate

- by 함수

 

 

 

tapply 함수

- tapply(계산변수, 그룹변수, 통계량)

 

 

 

aggregate 함수

- aggregate(데이터프레임, list(변수목록), 통계량)

 

 

 

 

 

by 함수

- by(데이터프레임, 그루핑 변수, 통계량 or summary)

 

 

 

 

 

psych의 그룹별 통계량 함수

- describeBy(데이터프레임, 그룹핑 변수)

 

 

 

 

 

 

 

 

기술 통계량 시각화 하기

- 줄기잎 그림

- 상자그림

 * Q3 + 1.5*IQR 보다 크거나 Q1 - 1.5 * IQR보다 작으면 이상치로 판단

- 히스토그램

 

 

 

줄기잎 그림

- stem(변수명)

 

 

두 그룹에 대한 줄기 잎 그림 그리기

- aplpack 라이브러리 활용

- (값) 은 중앙값

- 좌우 양끝값은 데이터 갯수

 

 

 

 

 

 

상자 그림

- par(mfrow=c())로 한 페이지에 여러개 그릴수 있음

- boxplot() 함수

 

 

앙케이트 자료 처리하기

 

변수명 변환

 

 

 

그래프 출력, 분할표 만들기

 

 

 

 

 

분할표 만들기 2 xtabs를 이용한

 

 

 

 

대학생. 학년별 앙케이트 결과

 

 

 

 

 

 

 

 

 

카이제곱 검정

- 두범주형 자료의 독립성 검정

 

 

chi2 = sigma (관찰도수 - 기대도수)^2 / 기대도수

       = 12.403

   p-value 유의확률 = 0.006

독립이라는 귀무가설을 기각한다.

 

 

 

 

 

 

300x250
728x90

Matplotlib

- john hunter가 개발 시작

- 2012년 사후, michael droettboom 개발자 그룹에서 개발

 

 

일반 사인 그래프

import numpy as np
import matplotlib.pyplot as plt

# inline으로 출력
%matplotlib inline
# 비 대화형
plt.ioff()


x = np.linspace(0, 10, 50)
sinus = np.sin(x)
plt.plot(x, sinus)
plt.show()

 

 

플롯 옵션과 레전드(범례) 추가

cosinus = np.cos(x)
plt.plot(x, sinus, label="sinus", color="blue",
        linestyle="--",linewidth=2)
plt.plot(x, cosinus, label="cosinus", color="red",
        linestyle="-",linewidth=2)
plt.legend()
plt.show()

 

 

 

 

 

 

 

봉급 예제 산포도 그리기

1. csv 읽어오기

import pandas as pd
#봉급 예제 산포도 그리기
url = "https://raw.github.com/neurospin/pystatsml/master/datasets/salary_table.csv"
salary = pd.read_csv(url)
salary.head()

 

2. 색상 지정하고 플로팅

df = salary
colors = colors_edu = {"Bachelor" :"r", "Master":"g", "Ph.D":"blue"}
plt.scatter(df["experience"], df["salary"],
           c=df["education"].apply(lambda x:colors[x]), s = 100)
plt.show()

 

 

 

 

그루핑 후 플로팅 하기

# matplotlib에서 qt5로 그래프 출력
%matplotlib qt5

plt.ion()

symbols_manag = dict(Y="*", N=".")

# group by education x amangement => 6group
for values,d in salary.groupby(["education", "management"]):
    edu, manager = values
    plt.scatter(d["experience"], d["salary"],
               marker=symbols_manag[manager],color=colors_edu[edu],
               s=150,label=manager+"/"+edu)
#set label
plt.xlabel("Experience")
plt.ylabel("Salary")
plt.legend(loc=4) #lower right

 

 

 

fig, subplot 예제

- fig :  캔버스

- subplot : 하부 그래프

 

%matplotlib inline
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)

ax1.hist(np.random.randn(100), bins=20, color="k", alpha=0.3)
ax2.scatter(np.arange(30), np.arange(30) + 3*np.random.randn(30))
ax3.plot(np.random.randn(50).cumsum(),"k--")
plt.show()

 

 

 

subplots() 예제

- 그래프 여러개 그리기

#subplots()함수 사용하기
fig, axs = plt.subplots(2,2)
axs[0,0].plot(x, sinus)
axs[0,1].plot(x, -sinus)
axs[1,0].plot(x, cosinus)
axs[1,1].plot(x, -cosinus)

plt.show()

 

Seaborn

- matplotlib은 로우 레벨에서 부터하다보니 다양하게 할수있지만 잘 그리려면 많은 경험과 노력이 필요

=> matplotlib 기반의 간편 시각화 라이브러리

 

 

iris 시각화

1. iris 데이터 로드

- 컬럼 확인

 

2. 히스토그램 플로팅

 

3. 카테고리별 플롯

 

4. 결합 플로팅

 

 

5, 회귀선 플롯

 

import seaborn as sns
sns.set(style="darkgrid")
iris=sns.load_dataset("iris")
print(iris.columns)
iris.columns = ["sl", "sw", "pl", "pw", "sp"]
iris.head()



# sp 별 그리드 생성, 히스토그램으로 sl 플롯
g = sns.FacetGrid(iris,col="sp")
g = g.map(plt.hist, "sl")



#카테고리별 플롯
sns.catplot(x="sp", y="sl", kind="boxen", data=iris)

#결합 분포 플로팅
sns.jointplot(x="sw", y="sl", data=iris, kind="kde", space=0, color="g")


# 회귀선 플롯
sns.lmplot(x="sw", y="sl", data=iris)

# sp별 회귀선과 hue 
sns.lmplot(x="sw", y="sl", data=iris, hue="sp")




 

 

 

 

 

 

 

 

 

R ggplot2

- Hadley Wickham(dplyr도 개발)이 개발

- 데이터 프레임 데이터를 시각화

- grammer of graphics, layered graphics

 

 

나무 데이터로 시작하자

1. 데이터 확인

 

2. Height 4그룹 분리

 

3. geom_point로  산점도로 plot

 col = H로 4그룹으로 분류 가능

 

 

자동차 예제

1. tbl_df 로 출력 

 

 

 

2. 클래스별 displ, hwy 플로팅

 

 

 

 

 

 

 

 

300x250

'수학 > 통계' 카테고리의 다른 글

파이썬R - 6. 파이썬 기술통계  (0) 2020.10.28
파이썬R - 5. R 기술통계  (0) 2020.10.28
파이썬R - 3. R데이터처리, dplyr  (0) 2020.10.28
파이썬R - 2. R 데이터처리  (0) 2020.10.27
파이썬R - 1. 파이썬 pandas  (0) 2020.10.27
728x90

값 라벨 바꾸기

- 숫자로 입력된 값을 라벨로 바꾸기

ex. job 1-> 근로자, 2 -> 사무직 3-> 전문가

 

명목형 변수 nomial data로 바꾸기 : factor()함수

 

 

 

순서형 변수 ordered data 로 바꾸기

- ordered()함수

 

 

 

막대 그래프 그리기

 

1. table()함수 : 해당 변수 - 빈도수 출력

2. barplot() : 막대 그래프 출력

3. title() : 그래프 제목

 

 

 

 

 

변수 변환하기 recode

- 그룹별 값주기

 

 

 

 

 

 

변수값 변환하기 recode - car 패키지의 recode() 활용하기

 

 

 

- 레코드 후, 순서형 변수로 라벨을 주어야 그룹의 의미를 알기 편하다.

 

 

 

 

 

값 추출하기

 

 

 

 

dplyr 패키지

- 데이터 처리를 위한 패키지

- 전처리 작업

 1. filtering 데이터 추출

 2. selection columns 변수 선택

 3. adding new variables 변수 추가

 4. sorting 정렬

 5. aggregating 집계

 

 

 

 

 

실무에서 처음 할일

- 변수의 수나 obs가 크므로 분석 전에 전체적으로 보는 것이 좋다

- dim() 함수 : obs 행 와 변수 갯수(열)수 출력

- tbl_df() : 데이터 프레임을 요약해서 출력

 

 

 

 

데이터 추출 filtering

 

 

 

 

 

변수 선택 select

 

 

 

 

 

- filter와 select 동시 사용 가능

-select 로 변수 선택시 콜론 : 사용 가능

 

 

 

 

새 변수 추가 mutate() 함수

- mutate(데이터프레임, 추가할변수명=값)

 

 

정렬하기

- arrange(데이터프레임, 변수, ...) : 오름차순

- arrange(데이터프레임, desc(변수), ...) : 내림차순

 

 

 

 

요약해서 결과보기

- 데이터 정렬한 뒤, 그룹별 요약 결과 보기 : group_by(), summarise() 함수

 

 

체인 기능

- 여려 명령을 연결해서 사용

- %>%으로 수행

 

 

 

 

mtcar 데이터 처리 예제

 

 

- 필터 -> 그룹 -> 요약 -> 정렬

 

nycflight13 데이터 예제

- 뉴욕인근 공한 비행 정보 자료

- ls(패키지명) : 패키지에 있는 데이터프레임 확인

- tbl_df : 데이터프레임 요약

- 출발, 도착이 지연되지 않은 경우

 

 

 

 

 

 

 

300x250

+ Recent posts