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

okky 캐누님의 글을 퍼왔습니다.

okky.kr/article/762395

 

 

----

트위터에서 퍼온 글을 파파고로 번역했습니다.

===

Dan Abramov

분명히 이 말은 해야겠지만, 당신이 원한다면 리액트 시작할 때 "JS의 기본 원리"를 절대적으로 생략할 수 있다. 당신은 확실히(!) 몇 가지에 대해 혼란스러울 것이다. 하지만 어떤 사람들에게는 (나를 포함해서) 어떤 것을 스크린에 올리는 것이 초기의 흥미를 유지하는 유일한 것이다.

 

"잘못된 순서대로 배웠으니 내 실수를 반복하지 마라"와 같은 충고를 경계하라. 살아남은 자의 편견 냄새가 난다. 그 사람들은 결국 둘 다 배우게 되었지? 어쩌면 저쪽 끝에서 접근해 온다면 그들은 끝내지도 못하고 다른 것으로 바꿀지도 모른다.

 

학습은 선형적이지 않다. "어디서나 시작"하고 분기할 수 있다. 효과적인 학습이 되는 것이 훨씬 더 중요하다(예를 들어, 효과가 있을 때까지 무작위 추측을 시도하는 대신 여유가 있을 때 인지하는 법을 배우고, 올바른 질문을 하는 법을 배운다).

 

나는 그것이 혼란스럽지 않을 것이라고 말하지 않았다. 정말 혼란스러울 거다! 하지만 우리는 아이들에게 문법을 가르칠까, 아니면 그들 앞에서 말할까? 이것은 완전히 같지는 않지만, 큰 의존적인 것들은 순차적으로만 학습되어야 한다는 생각은 잘못된 것이다.

 

각설하고, 나는 말 그대로 드래그 앤 드롭 비주얼 편집기로 시작했다.

 

사람들은 계속해서 대답한다: "하지만 그들은 혼란스러울 것이다." 맞다. 그들은 혼란스러울 것이다. 학습과정의 혼동을 없애는 것이 아니라 배우고 있는 것이 하고 싶은 것과 너무 거리가 먼 느낌으로 포기하는 사람을 잃지 않는 것이 목표다(앱을 만든다).

 

나는 이것이 일반적인 오류이기 때문에 이것에 초점을 맞추고 있다. 뭔가를 배우면 '올바른' 것을 배우게 되고, 처음부터 다시 돌아가서 '올바른' 것을 배울 수 있었다면 더 쉬웠을 것이라고 생각하게 된다. 하지만 당신의 생각은 이미 두 가지 경험으로 더럽혀져 있다.

 

"아하"가 실제로 양쪽의 부산물일 때 기초 학습에 잘못 적응하는 것은 유혹적이다. 기초가 무엇에 쓰이는지 먼저 배웠고, 그 다음엔 실제로 어떻게 작용하는지 배웠고, 이 조각들이 당신의 뇌에 만족스러운 방식으로 결합되었다.

 

장기적으로는 기계적인 관점에서 기초부터 배우는 것이 더 효율적이다. 하지만 우리는 기계가 아니라, 우리는 CARE가 필요하다. 당신을 신경 쓰게 하는 더 긴 길은 지루하기 때문에 당신이 버린 짧은 길보다 더 잘 작동하게 될지도 모른다.

 

나는 네가 절대로 더 기초적인 레벨로 내려갈 필요가 없다고 말하지 않았다. 그래도 된다, 그렇지 않으면 꼼짝 못하게 될 것이다. 그리고 그것을 배운 후에, 당신은 왜 그것이 지금 중요한지에 대한 감정적인 이해를 가지고 있기 때문에, 당신이 그것을 먼저 배웠어야 했다고 확신할 수 있을 것이다.

300x250

'미분류' 카테고리의 다른 글

인공지능 - 2. 탐색 알고리즘  (0) 2020.10.16
데이터베이스  (0) 2020.10.15
컴퓨터개론  (0) 2020.10.15
파이썬 프로젝트 빌드  (0) 2020.08.28
pip로 라이브러리 설치시 오래 걸리는 이유 (라즈베리 파이)  (0) 2020.08.28
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
728x90

변수 바꾸기, 결측치처리, 이름바꾸기, 라벨, 라벨 변환 등

 

 

 

 

 

 

 

 

 

 

 

 

 

 

결측치 제거

na.omit(데이터프레임)

 

 

 

변수명 변경

names(dataframe)[index]

 

 

 

변수명 바꾸기

 

 

colnames(dataframe)

 

 

 

 

값 라벨 value label

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

ex. job 1 = 근로자, 2= 사무직

   edu 1=무학자, 2=초졸 3=중졸

 

 

 

 

 

 

 

 

 

 

 

 

 

300x250

+ Recent posts