통계적 사고 (2판) 연습문제 (thinkstats2.com, think-stat.xwmooc.org)
Allen Downey / 이광춘(xwMOOC)
import nsfg
df = nsfg.ReadFemPreg()
df
caseid | pregordr | howpreg_n | howpreg_p | moscurrp | nowprgdk | pregend1 | pregend2 | nbrnaliv | multbrth | ... | laborfor_i | religion_i | metro_i | basewgt | adj_mod_basewgt | finalwgt | secu_p | sest | cmintvw | totalwgt_lb | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3410.389399 | 3869.349602 | 6448.271112 | 2 | 9 | NaN | 8.8125 |
1 | 1 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3410.389399 | 3869.349602 | 6448.271112 | 2 | 9 | NaN | 7.8750 |
2 | 2 | 1 | NaN | NaN | NaN | NaN | 5 | NaN | 3 | 5 | ... | 0 | 0 | 0 | 7226.301740 | 8567.549110 | 12999.542264 | 2 | 12 | NaN | 9.1250 |
3 | 2 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 7226.301740 | 8567.549110 | 12999.542264 | 2 | 12 | NaN | 7.0000 |
4 | 2 | 3 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 7226.301740 | 8567.549110 | 12999.542264 | 2 | 12 | NaN | 6.1875 |
5 | 6 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 4870.926435 | 5325.196999 | 8874.440799 | 1 | 23 | NaN | 8.5625 |
6 | 6 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 4870.926435 | 5325.196999 | 8874.440799 | 1 | 23 | NaN | 9.5625 |
7 | 6 | 3 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 4870.926435 | 5325.196999 | 8874.440799 | 1 | 23 | NaN | 8.3750 |
8 | 7 | 1 | NaN | NaN | NaN | NaN | 5 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3409.579565 | 3787.539000 | 6911.879921 | 2 | 14 | NaN | 7.5625 |
9 | 7 | 2 | NaN | NaN | NaN | NaN | 5 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3409.579565 | 3787.539000 | 6911.879921 | 2 | 14 | NaN | 6.6250 |
10 | 12 | 1 | NaN | NaN | NaN | NaN | 5 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3612.781968 | 4146.013572 | 6909.331618 | 1 | 31 | NaN | 7.8125 |
11 | 14 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2418.069494 | 2810.302771 | 3039.904507 | 2 | 56 | NaN | 7.0000 |
12 | 14 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2418.069494 | 2810.302771 | 3039.904507 | 2 | 56 | NaN | 4.0000 |
13 | 14 | 3 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 2418.069494 | 2810.302771 | 3039.904507 | 2 | 56 | NaN | NaN |
14 | 15 | 1 | NaN | NaN | NaN | NaN | 1 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 1667.816099 | 3200.862017 | 5553.495599 | 1 | 33 | NaN | NaN |
15 | 15 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 1667.816099 | 3200.862017 | 5553.495599 | 1 | 33 | NaN | 7.6875 |
16 | 15 | 3 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 1667.816099 | 3200.862017 | 5553.495599 | 1 | 33 | NaN | 7.5000 |
17 | 18 | 1 | NaN | NaN | NaN | NaN | 5 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2957.257457 | 3404.403067 | 4153.371741 | 2 | 14 | NaN | 6.3125 |
18 | 18 | 2 | NaN | NaN | NaN | NaN | 1 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 2957.257457 | 3404.403067 | 4153.371741 | 2 | 14 | NaN | NaN |
19 | 21 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3408.342437 | 3965.763949 | 7237.122630 | 1 | 48 | NaN | 8.7500 |
20 | 21 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3408.342437 | 3965.763949 | 7237.122630 | 1 | 48 | NaN | 8.1875 |
21 | 23 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 6210.373020 | 8120.841310 | 13533.382043 | 2 | 64 | NaN | 5.5625 |
22 | 23 | 2 | NaN | NaN | NaN | NaN | 1 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 6210.373020 | 8120.841310 | 13533.382043 | 2 | 64 | NaN | NaN |
23 | 24 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3409.573258 | 4068.628645 | 7424.840414 | 1 | 27 | NaN | 6.7500 |
24 | 24 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3409.573258 | 4068.628645 | 7424.840414 | 1 | 27 | NaN | 7.3750 |
25 | 24 | 3 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3409.573258 | 4068.628645 | 7424.840414 | 1 | 27 | NaN | 6.8125 |
26 | 28 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3407.794208 | 3808.343516 | 6949.846082 | 2 | 57 | NaN | 8.1250 |
27 | 31 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3405.679025 | 4272.084519 | 5211.943113 | 1 | 2 | NaN | 7.1250 |
28 | 31 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3405.679025 | 4272.084519 | 5211.943113 | 1 | 2 | NaN | 6.0625 |
29 | 31 | 3 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3405.679025 | 4272.084519 | 5211.943113 | 1 | 2 | NaN | 7.4375 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
13563 | 12547 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3453.545517 | 6628.022524 | 11499.619080 | 1 | 52 | NaN | 7.6875 |
13564 | 12547 | 3 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3453.545517 | 6628.022524 | 11499.619080 | 1 | 52 | NaN | 7.6250 |
13565 | 12550 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3080.452699 | 3745.326058 | 5268.550165 | 1 | 79 | NaN | 8.1250 |
13566 | 12551 | 1 | NaN | NaN | NaN | NaN | 5 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2418.538866 | 3653.453268 | 3951.940400 | 2 | 75 | NaN | 7.5000 |
13567 | 12554 | 1 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 1914.676604 | 2177.957240 | 2764.045534 | 2 | 75 | NaN | NaN |
13568 | 12554 | 2 | NaN | NaN | NaN | NaN | 4 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 1914.676604 | 2177.957240 | 2764.045534 | 2 | 75 | NaN | NaN |
13569 | 12556 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2474.619764 | 3250.573384 | 3965.699528 | 1 | 44 | NaN | 5.8125 |
13570 | 12556 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2474.619764 | 3250.573384 | 3965.699528 | 1 | 44 | NaN | 6.6875 |
13571 | 12556 | 3 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2474.619764 | 3250.573384 | 3965.699528 | 1 | 44 | NaN | 6.0000 |
13572 | 12556 | 4 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2474.619764 | 3250.573384 | 3965.699528 | 1 | 44 | NaN | 5.8125 |
13573 | 12561 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2418.089703 | 2698.650781 | 4497.301527 | 1 | 10 | NaN | 6.5625 |
13574 | 12561 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2418.089703 | 2698.650781 | 4497.301527 | 1 | 10 | NaN | 6.1250 |
13575 | 12564 | 1 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 1820.850938 | 2129.214067 | 2768.191208 | 2 | 44 | NaN | NaN |
13576 | 12565 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 3195.641221 | 3834.241709 | 6652.409365 | 1 | 78 | NaN | 6.4375 |
13577 | 12565 | 2 | 35 | 1 | 8 | NaN | NaN | NaN | NaN | NaN | ... | 0 | 0 | 0 | 3195.641221 | 3834.241709 | 6652.409365 | 1 | 78 | NaN | NaN |
13578 | 12566 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2080.317155 | 2422.820274 | 2627.548587 | 2 | 2 | NaN | 6.0000 |
13579 | 12566 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2080.317155 | 2422.820274 | 2627.548587 | 2 | 2 | NaN | 7.0000 |
13580 | 12568 | 1 | NaN | NaN | NaN | NaN | 1 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 2734.687353 | 4258.980140 | 7772.212858 | 2 | 28 | NaN | NaN |
13581 | 12568 | 2 | NaN | NaN | NaN | NaN | 5 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2734.687353 | 4258.980140 | 7772.212858 | 2 | 28 | NaN | 6.3750 |
13582 | 12568 | 3 | NaN | NaN | NaN | NaN | 4 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 2734.687353 | 4258.980140 | 7772.212858 | 2 | 28 | NaN | NaN |
13583 | 12569 | 1 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 2580.967613 | 2925.167116 | 5075.164946 | 2 | 61 | NaN | NaN |
13584 | 12569 | 2 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 2580.967613 | 2925.167116 | 5075.164946 | 2 | 61 | NaN | 6.3750 |
13585 | 12570 | 1 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 5181.311509 | 6205.829154 | 11325.017623 | 2 | 40 | NaN | NaN |
13586 | 12570 | 2 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 5181.311509 | 6205.829154 | 11325.017623 | 2 | 40 | NaN | NaN |
13587 | 12570 | 3 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 5181.311509 | 6205.829154 | 11325.017623 | 2 | 40 | NaN | NaN |
13588 | 12571 | 1 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 4670.540953 | 5795.692880 | 6269.200989 | 1 | 78 | NaN | 6.1875 |
13589 | 12571 | 2 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 4670.540953 | 5795.692880 | 6269.200989 | 1 | 78 | NaN | NaN |
13590 | 12571 | 3 | NaN | NaN | NaN | NaN | 3 | NaN | NaN | NaN | ... | 0 | 0 | 0 | 4670.540953 | 5795.692880 | 6269.200989 | 1 | 78 | NaN | NaN |
13591 | 12571 | 4 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 4670.540953 | 5795.692880 | 6269.200989 | 1 | 78 | NaN | 7.5000 |
13592 | 12571 | 5 | NaN | NaN | NaN | NaN | 6 | NaN | 1 | NaN | ... | 0 | 0 | 0 | 4670.540953 | 5795.692880 | 6269.200989 | 1 | 78 | NaN | 7.5000 |
13593 rows × 244 columns
birthord에 대한 빈도수를 출력하고 codebook 게시된 결과값과 비교하시오.
df.birthord.value_counts().sort_index()
1 4413 2 2874 3 1234 4 421 5 126 6 50 7 20 8 7 9 2 10 1 Name: birthord, dtype: int64
prglngth에 대한 빈도수를 출력하고 codebook 게시된 결과값과 비교하시오.
df.prglngth.value_counts().sort_index()
0 15 1 9 2 78 3 151 4 412 5 181 6 543 7 175 8 409 9 594 10 137 11 202 12 170 13 446 14 29 15 39 16 44 17 253 18 17 19 34 20 18 21 37 22 147 23 12 24 31 25 15 26 117 27 8 28 38 29 23 30 198 31 29 32 122 33 50 34 60 35 357 36 329 37 457 38 609 39 4744 40 1120 41 591 42 328 43 148 44 46 45 10 46 1 47 1 48 7 50 2 Name: prglngth, dtype: int64
agepreg에 대한 빈도수를 출력하고 codebook에 게시된 결과값과 비교하시오.
이 데이터를 살펴보고, 응답자에 대한 존경과 맥락을 고려해서 데이터에 접근하는에 필요한 의무에 관해서 저자가 언급한 논평을 기억하라.
df.agepreg.value_counts().sort_index()
10.33 1 10.50 1 10.83 1 10.91 1 11.08 1 11.41 1 11.50 1 11.75 2 12.08 1 12.25 1 12.41 2 12.50 1 12.66 2 12.75 1 12.83 2 12.91 1 13.00 2 13.08 1 13.16 1 13.25 4 13.33 1 13.50 3 13.58 2 13.66 5 13.75 4 13.83 5 13.91 5 14.00 5 14.08 7 14.16 12 .. 40.50 6 40.58 4 40.66 4 40.75 2 40.83 4 40.91 4 41.00 2 41.08 2 41.16 2 41.25 6 41.33 1 41.41 2 41.58 4 41.75 3 41.83 1 41.91 4 42.08 2 42.16 1 42.25 1 42.33 1 42.41 1 42.50 2 42.58 2 42.75 2 43.00 3 43.16 1 43.25 4 43.58 3 43.91 1 44.08 1 Name: agepreg, dtype: int64
평균 출생체중(birthweight)을 계산하시오.
df.totalwgt_lb.mean()
7.265628457623368
킬로그램으로 출생체중 정보를 담는 totalwgt_kg로 불리는 새로운 칼럼을 생성하라. 평균도 계산하시오. 새로운 칼럼을 생성할 때, 점표기법이 아닌 딕셔너리 구문을 사용하는 것을 기억하라.
df['totalwgt_kg'] = df.totalwgt_lb / 2.2
df.totalwgt_kg.mean()
3.3025583898288033
코드북(codebook)을 살펴보고 책에서 언급된 것이 아닌 본인이 관심있는 변수를 찾아내라. 그리고 그 변수의 빈도수, 평균, 다른 통계량을 계산하시오.
df.columns
Index([ u'caseid', u'pregordr', u'howpreg_n', u'howpreg_p', u'moscurrp', u'nowprgdk', u'pregend1', u'pregend2', u'nbrnaliv', u'multbrth', ... u'religion_i', u'metro_i', u'basewgt', u'adj_mod_basewgt', u'finalwgt', u'secu_p', u'sest', u'cmintvw', u'totalwgt_lb', u'totalwgt_kg'], dtype='object', length=245)
부울 시리즈(boolean Series)를 생성하시오.
print('Count:', df.npostsmk.value_counts().sort_index()) ## 임신기간동안 흡연
print('Mean:', df.npostsmk.mean())
('Count:', 1 83 2 168 3 199 4 91 5 14 6 12 9 1 Name: npostsmk, dtype: int64) ('Mean:', 2.6954225352112675)
부울 시리즈를 사용해서 정상출산 임신에 대한 레코드를 선택하시오.
live = df[df.outcome == 1]
len(live)
9148
birthwgt_lb 변수에 0 에서 5 파운드(0과 5도 모두 포함) 사이 정상출산 빈도수를 계산하시오. 결과는 1125 가 되어야만 된다.
len(live[(live.birthwgt_lb >= 0) & (live.birthwgt_lb <= 5)])
1125
birthwgt_lb 변수에 9 에서 95 파운드(9과 95도 모두 포함) 사이 정상출산 빈도수를 계산하시오. 결과는 798 가 되어야만 된다.
len(live[(live.birthwgt_lb >=9)&(live.birthwgt_lb <=95)])
798
birthord 변수를 사용해서, 첫번째 아이와 첫째가 아닌 아이에 대한 레코드를 선택하시오. 첫번째 아이와 첫째가 아닌 아이는 얼마나 되는가?
firsts = df[df.birthord==1]
others = df[df.birthord>1]
len(firsts), len(others)
(4413, 4735)
첫번째 아이와 첫째가 아닌 아이에 대한 평균 체중을 계산하시오.
firsts.totalwgt_lb.mean()
7.201094430437772
others.totalwgt_lb.mean()
7.325855614973262
변수 prglngth으로 첫째 아이와 첫째가 아닌 아이에 대한 평균임신기간을 계산하시오. 시간으로 표시된, 평균에 차이를 계산하시오.
print('Firsts Mean: ', firsts.prglngth.mean())
print('Others Mean: ', others.prglngth.mean())
print('Diff: ', firsts.prglngth.mean()-others.prglngth.mean())
('Firsts Mean: ', 38.60095173351461) ('Others Mean: ', 38.52291446673706) ('Diff: ', 0.07803726677754952)