통계적 사고 (2판) 연습문제 (thinkstats2.com, think-stat.xwmooc.org)
Allen Downey / 이광춘(xwMOOC)
In [23]:
import nsfg
df = nsfg.ReadFemPreg()
df
Out[23]:
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 게시된 결과값과 비교하시오.
In [24]:
df.birthord.value_counts().sort_index()
Out[24]:
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 게시된 결과값과 비교하시오.
In [25]:
df.prglngth.value_counts().sort_index()
Out[25]:
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에 게시된 결과값과 비교하시오.
이 데이터를 살펴보고, 응답자에 대한 존경과 맥락을 고려해서 데이터에 접근하는에 필요한 의무에 관해서 저자가 언급한 논평을 기억하라.
In [26]:
df.agepreg.value_counts().sort_index()
Out[26]:
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)을 계산하시오.
In [27]:
df.totalwgt_lb.mean()
Out[27]:
7.265628457623368
킬로그램으로 출생체중 정보를 담는 totalwgt_kg로 불리는 새로운 칼럼을 생성하라. 평균도 계산하시오. 새로운 칼럼을 생성할 때, 점표기법이 아닌 딕셔너리 구문을 사용하는 것을 기억하라.
In [28]:
df['totalwgt_kg'] = df.totalwgt_lb / 2.2
df.totalwgt_kg.mean()
Out[28]:
3.3025583898288033
코드북(codebook)을 살펴보고 책에서 언급된 것이 아닌 본인이 관심있는 변수를 찾아내라. 그리고 그 변수의 빈도수, 평균, 다른 통계량을 계산하시오.
In [29]:
df.columns
Out[29]:
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)를 생성하시오.
In [30]:
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)
부울 시리즈를 사용해서 정상출산 임신에 대한 레코드를 선택하시오.
In [31]:
live = df[df.outcome == 1]
len(live)
Out[31]:
9148
birthwgt_lb 변수에 0 에서 5 파운드(0과 5도 모두 포함) 사이 정상출산 빈도수를 계산하시오. 결과는 1125 가 되어야만 된다.
In [32]:
len(live[(live.birthwgt_lb >= 0) & (live.birthwgt_lb <= 5)])
Out[32]:
1125
birthwgt_lb 변수에 9 에서 95 파운드(9과 95도 모두 포함) 사이 정상출산 빈도수를 계산하시오. 결과는 798 가 되어야만 된다.
In [33]:
len(live[(live.birthwgt_lb >=9)&(live.birthwgt_lb <=95)])
Out[33]:
798
birthord 변수를 사용해서, 첫번째 아이와 첫째가 아닌 아이에 대한 레코드를 선택하시오. 첫번째 아이와 첫째가 아닌 아이는 얼마나 되는가?
In [34]:
firsts = df[df.birthord==1]
others = df[df.birthord>1]
len(firsts), len(others)
Out[34]:
(4413, 4735)
첫번째 아이와 첫째가 아닌 아이에 대한 평균 체중을 계산하시오.
In [35]:
firsts.totalwgt_lb.mean()
Out[35]:
7.201094430437772
In [36]:
others.totalwgt_lb.mean()
Out[36]:
7.325855614973262
변수 prglngth으로 첫째 아이와 첫째가 아닌 아이에 대한 평균임신기간을 계산하시오. 시간으로 표시된, 평균에 차이를 계산하시오.
In [37]:
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)
In [ ]:
Content source: statkclee/ThinkStats2
Similar notebooks: