Python để thống kê PDF

scipy. số liệu thống kê. thống nhất () là một biến ngẫu nhiên liên tục thống nhất. Nó được kế thừa từ các phương thức chung như một thể hiện của lớp rv_continuity. Nó hoàn thành các phương pháp với các chi tiết cụ thể cho phân phối cụ thể này

Để cài đặt Python và các phụ thuộc này, chúng tôi khuyên bạn nên tải xuống Anaconda Python hoặc Enthought Canopy hoặc tốt hơn là sử dụng trình quản lý gói nếu bạn đang sử dụng Ubuntu hoặc linux khác

Xem thêm

  • Thống kê Bayes trong Python. Chương này không bao gồm các công cụ cho thống kê Bayesian. Mối quan tâm đặc biệt đối với mô hình Bayesian là PyMC, triển khai ngôn ngữ lập trình xác suất trong Python
  • Đọc một cuốn sách thống kê. Cuốn sách Think stats có sẵn dưới dạng PDF miễn phí hoặc bản in và là phần giới thiệu tuyệt vời về thống kê


Mẹo

Tại sao dùng Python để thống kê?

R là một ngôn ngữ dành riêng cho thống kê. Python là ngôn ngữ có mục đích chung với các mô-đun thống kê. R có nhiều tính năng phân tích thống kê hơn Python và các cú pháp chuyên biệt. Tuy nhiên, khi nói đến việc xây dựng các đường ống phân tích phức tạp kết hợp số liệu thống kê với e. g. phân tích hình ảnh, khai thác văn bản hoặc kiểm soát thí nghiệm vật lý, sự phong phú của Python là một tài sản vô giá

nội dung

  • Biểu diễn và tương tác dữ liệu
    • Dữ liệu dưới dạng bảng
    • Khung dữ liệu pandas
  • kiểm định giả thuyết. so sánh hai nhóm
    • bài kiểm tra t của sinh viên. kiểm tra thống kê đơn giản nhất
    • kiểm tra theo cặp. các phép đo lặp đi lặp lại trên cùng một cá nhân
  • Mô hình tuyến tính, nhiều yếu tố và phân tích phương sai
    • “công thức” để chỉ định các mô hình thống kê trong Python
    • Nhiều hồi quy. bao gồm nhiều yếu tố
    • Kiểm tra giả thuyết hậu hoc. phân tích phương sai (ANOVA)
  • trực quan hơn. seaborn để thăm dò thống kê
    • ghép nối. ma trận phân tán
    • lmplot. vẽ hồi quy đơn biến
  • Kiểm tra tương tác
  • Mã đầy đủ cho các số liệu
  • Giải bài tập chương này

Mẹo

Trong tài liệu này, các đầu vào Python được biểu thị bằng dấu “>>>”


từ chối trách nhiệm. câu hỏi giới tính

Một số ví dụ của hướng dẫn này được chọn xung quanh các câu hỏi về giới tính. Lý do là đối với những câu hỏi như vậy, việc kiểm soát tính xác thực của một yêu cầu thực sự quan trọng đối với nhiều người.

3. 1. 1. Biểu diễn và tương tác dữ liệu¶

3. 1. 1. 1. Dữ liệu dưới dạng bảng¶

Cài đặt mà chúng tôi xem xét để phân tích thống kê là cài đặt của nhiều quan sát hoặc mẫu được mô tả bởi một tập hợp các thuộc tính hoặc tính năng khác nhau. Dữ liệu có thể được xem dưới dạng bảng 2D hoặc ma trận, với các cột đưa ra các thuộc tính khác nhau của dữ liệu và các hàng quan sát. Chẳng hạn, dữ liệu chứa trong

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
2

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545

3. 1. 1. 2. Khung dữ liệu pandas¶

Mẹo

Chúng tôi sẽ lưu trữ và thao tác dữ liệu này trong một

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
3, từ mô-đun pandas. Nó tương đương với Python của bảng bảng tính. Nó khác với mảng 2D
>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
4 vì nó có các cột được đặt tên, có thể chứa hỗn hợp các loại dữ liệu khác nhau theo cột và có cơ chế lựa chọn và xoay vòng phức tạp

Tạo khung dữ liệu. đọc tệp dữ liệu hoặc chuyển đổi mảng¶

dấu phân cách

Đó là một tệp CSV, nhưng dấu phân cách là “;”

Đọc từ tệp CSV. Sử dụng tệp CSV ở trên để đưa ra các quan sát về kích thước, trọng lượng và chỉ số IQ của não (Willerman et al. 1991), dữ liệu là hỗn hợp của các giá trị số và phân loại

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...

Cảnh báo

Giá trị bị mất

Trọng lượng của cá nhân thứ hai bị thiếu trong tệp CSV. Nếu chúng tôi không chỉ định điểm đánh dấu giá trị bị thiếu (NA = không khả dụng), chúng tôi sẽ không thể thực hiện phân tích thống kê


Tạo từ mảng. Một

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
3 cũng có thể được xem như một từ điển của 'sê-ri' 1D, ví dụ: mảng hoặc danh sách. Nếu chúng ta có 3 mảng
>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
4

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)

Chúng ta có thể phơi bày chúng như một

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
3

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...


đầu vào khác. gấu trúc có thể nhập dữ liệu từ SQL, tệp excel hoặc các định dạng khác. Xem tài liệu về gấu trúc


Thao tác dữ liệu¶

dữ liệu là một

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
3, giống với khung dữ liệu của R

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
1

Ghi chú

Để xem nhanh trên một khung dữ liệu lớn, hãy sử dụng phương thức mô tả của nó.

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
9


theo nhóm. tách một khung dữ liệu trên các giá trị của các biến phân loại

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
3

groupby_gender là một đối tượng mạnh mẽ hiển thị nhiều thao tác trên nhóm khung dữ liệu kết quả

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
4

Mẹo

Sử dụng hoàn thành tab trên groupby_gender để tìm thêm. Các hàm nhóm phổ biến khác là trung vị, đếm (hữu ích để kiểm tra xem số lượng giá trị bị thiếu trong các tập hợp con khác nhau) hoặc tổng. Đánh giá theo nhóm là lười biếng, không có công việc nào được thực hiện cho đến khi áp dụng chức năng tổng hợp


Python để thống kê PDF

Tập thể dục

  • Giá trị trung bình của VIQ cho toàn bộ dân số là gì?

  • Có bao nhiêu nam/nữ được đưa vào nghiên cứu này?

    Gợi ý sử dụng 'hoàn thành tab' để tìm ra các phương thức có thể được gọi, thay vì 'có nghĩa là' trong ví dụ trên

  • Giá trị trung bình của số lượng MRI được biểu thị bằng đơn vị log, đối với nam và nữ là bao nhiêu?

Ghi chú

groupby_gender. boxplot được sử dụng cho các ô ở trên (xem ví dụ này)


Vẽ dữ liệu¶

Pandas đi kèm với một số công cụ vẽ đồ thị (

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
10, sử dụng matplotlib đằng sau hiện trường) để hiển thị số liệu thống kê của dữ liệu trong khung dữ liệu

ma trận tán xạ

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
6

Python để thống kê PDF

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
7

Hai quần thể

Các chỉ số IQ là hai phương thức, như thể có 2 quần thể con

Python để thống kê PDF

Tập thể dục

Vẽ ma trận phân tán chỉ dành cho nam và chỉ dành cho nữ. Bạn có nghĩ rằng 2 quần thể phụ tương ứng với giới tính?

3. 1. 2. kiểm định giả thuyết. so sánh hai nhóm¶

Đối với các bài kiểm tra thống kê đơn giản, chúng tôi sẽ sử dụng mô-đun phụ

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
11 của scipy

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
9

Xem thêm

Scipy là một thư viện rộng lớn. Để biết tóm tắt nhanh về toàn bộ thư viện, hãy xem chương scipy .

3. 1. 2. 1. bài kiểm tra t của sinh viên. bài kiểm tra thống kê đơn giản nhất¶

kiểm tra t 1 mẫu. kiểm định giá trị trung bình tổng thể¶

Python để thống kê PDF

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
12 kiểm tra xem trung bình tổng thể của dữ liệu có khả năng bằng với một giá trị nhất định hay không (về mặt kỹ thuật nếu các quan sát được rút ra từ phân phối Gaussian của trung bình tổng thể nhất định). Nó trả về thống kê T và giá trị p (xem phần trợ giúp của hàm)

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
0

Mẹo

Với giá trị p là 10^-28, chúng ta có thể khẳng định rằng trung bình dân số đối với chỉ số IQ (đo lường VIQ) không phải là 0

kiểm tra t 2 mẫu. kiểm tra sự khác biệt giữa các quần thể¶

Ở trên chúng ta đã thấy rằng VIQ trung bình ở quần thể nam và nữ là khác nhau. Để kiểm tra xem điều này có đáng kể hay không, chúng tôi thực hiện kiểm tra t 2 mẫu với

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
13

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
1

3. 1. 2. 2. kiểm tra theo cặp. phép đo lặp lại trên cùng một cá nhân¶

Python để thống kê PDF

PIQ, VIQ và FSIQ đưa ra 3 thước đo chỉ số IQ. Hãy để chúng tôi kiểm tra xem FISQ và PIQ có khác biệt đáng kể không. Chúng ta có thể sử dụng thử nghiệm 2 mẫu

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
2

Vấn đề với cách tiếp cận này là nó quên rằng có những liên kết giữa các quan sát. FSIQ và PIQ được đo trên cùng một cá nhân. Do đó, phương sai do tính biến thiên giữa các đối tượng gây nhiễu và có thể được loại bỏ bằng cách sử dụng “kiểm tra theo cặp” hoặc “kiểm tra các biện pháp lặp lại”

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
3

Python để thống kê PDF

Điều này tương đương với thử nghiệm 1 mẫu về sự khác biệt

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
4


Kiểm tra T giả định lỗi Gaussian. Chúng ta có thể sử dụng bài kiểm tra cấp bậc có chữ ký của Wilcoxon, giúp nới lỏng giả định này

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
5

Ghi chú

Phép thử tương ứng trong trường hợp không bắt cặp là phép thử Mann–Whitney U,

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
14

Tập thể dục

  • Kiểm tra sự khác biệt giữa trọng lượng ở nam và nữ
  • Sử dụng thống kê phi tham số để kiểm tra sự khác biệt giữa VIQ ở nam và nữ

Phần kết luận. chúng tôi thấy rằng dữ liệu không ủng hộ giả thuyết rằng nam và nữ có VIQ khác nhau


3. 1. 3. Mô hình tuyến tính, đa nhân tố và phân tích phương sai¶

3. 1. 3. 1. “công thức” để chỉ định các mô hình thống kê trong Python¶

Hồi quy tuyến tính đơn giản¶

Python để thống kê PDF

Cho trước hai tập quan sát, x và y, chúng ta muốn kiểm tra giả thuyết rằng y là một hàm tuyến tính của x. Nói cách khác

Python để thống kê PDF

trong đó e là tiếng ồn quan sát. Chúng tôi sẽ sử dụng mô-đun statsmodels để

  1. Phù hợp với một mô hình tuyến tính. Chúng ta sẽ sử dụng chiến lược đơn giản nhất, bình phương nhỏ nhất thông thường (OLS)
  2. Kiểm tra coef đó khác không


Đầu tiên, chúng tôi tạo dữ liệu mô phỏng theo mô hình

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
6

“công thức” thống kê trong Python

Xem tài liệu mô hình thống kê


Sau đó, chúng tôi chỉ định một mô hình OLS và điều chỉnh nó

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
7

Chúng tôi có thể kiểm tra các số liệu thống kê khác nhau có được từ sự phù hợp

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
8

Thuật ngữ

Statsmodels sử dụng một thuật ngữ thống kê. biến y trong mô hình thống kê được gọi là 'nội sinh' trong khi biến x được gọi là ngoại sinh. Điều này được thảo luận chi tiết hơn tại đây

Để đơn giản hóa, y (nội sinh) là giá trị bạn đang cố gắng dự đoán, trong khi x (ngoại sinh) đại diện cho các tính năng bạn đang sử dụng để đưa ra dự đoán

Tập thể dục

Truy xuất các tham số ước tính từ mô hình trên. Gợi ý. sử dụng hoàn thành tab để tìm thuộc tính có liên quan


Các biến phân loại. so sánh các nhóm hoặc nhiều danh mục¶

Hãy để chúng tôi quay lại dữ liệu về kích thước não

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
9

Chúng ta có thể viết bảng so sánh giữa IQ của nam và nữ bằng mô hình tuyến tính

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
0

Mẹo về chỉ định mô hình

Buộc phân loại. 'Giới tính' được tự động phát hiện dưới dạng biến phân loại và do đó, mỗi giá trị khác nhau của nó được coi là các thực thể khác nhau

Một cột số nguyên có thể bị buộc phải được coi là phân loại bằng cách sử dụng

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
1

đánh chặn. Chúng ta có thể loại bỏ phần chặn bằng cách sử dụng - 1 trong công thức hoặc buộc sử dụng phần chặn bằng cách sử dụng + 1

Mẹo

Theo mặc định, các mô hình thống kê coi một biến phân loại có K giá trị có thể là biến boolean K-1 'giả' (mức cuối cùng được đưa vào thuật ngữ chặn). Đây hầu như luôn là một lựa chọn mặc định tốt - tuy nhiên, có thể chỉ định các mã hóa khác nhau cho các biến phân loại (http. // mô hình thống kê. nguồn. net/phát triển/tương phản. html)


Liên kết đến các bài kiểm tra t giữa các FSIQ và PIQ khác nhau

Để so sánh các loại IQ khác nhau, chúng ta cần tạo một bảng “dạng dài”, liệt kê các chỉ số IQ, trong đó loại IQ được biểu thị bằng một biến phân loại

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
2

Chúng ta có thể thấy rằng chúng ta truy xuất các giá trị giống nhau cho t-test và các giá trị p tương ứng cho tác động của loại iq so với t-test trước đó

>>> import pandas
>>> data = pandas.read_csv('examples/brain_size.csv', sep=';', na_values=".")
>>> data  
    Unnamed: 0  Gender  FSIQ  VIQ  PIQ  Weight  Height  MRI_Count
0            1  Female   133  132  124   118.0    64.5     816932
1            2    Male   140  150  124     NaN    72.5    1001121
2            3    Male   139  123  150   143.0    73.3    1038437
3            4    Male   133  129  128   172.0    68.8     965353
4            5  Female   137  132  134   147.0    65.0     951545
...
2

3. 1. 3. 2. Nhiều hồi quy. bao gồm nhiều yếu tố¶

Python để thống kê PDF


Xét một mô hình tuyến tính giải thích một biến z (biến phụ thuộc) với 2 biến x và y

Python để thống kê PDF

Một mô hình như vậy có thể được xem ở dạng 3D giống như việc khớp một mặt phẳng với một đám mây các điểm (x, y, z)



Ví dụ. dữ liệu mống mắt (

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
15)

Mẹo

Kích thước đài hoa và cánh hoa có xu hướng liên quan. hoa lớn hơn lớn hơn. Nhưng ngoài ra còn có một hiệu ứng hệ thống của các loài?

Python để thống kê PDF

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
4


3. 1. 3. 3. Kiểm tra giả thuyết hậu hoc. phân tích phương sai (ANOVA)¶

Trong ví dụ hoa diên vĩ ở trên, chúng tôi muốn kiểm tra xem chiều dài cánh hoa có khác nhau giữa versicolor và virginica hay không, sau khi loại bỏ ảnh hưởng của chiều rộng đài hoa. Điều này có thể được coi là kiểm tra sự khác biệt giữa hệ số liên quan đến đa sắc tố và trinh nữ trong mô hình tuyến tính được ước tính ở trên (đó là Phân tích phương sai, ANOVA). Đối với điều này, chúng tôi viết một vectơ 'độ tương phản' trên các tham số được ước tính. chúng tôi muốn kiểm tra

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
16, với bài kiểm tra F

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
5

Sự khác biệt này có đáng kể không?


Tập thể dục

Quay trở lại với dữ liệu kích thước não + IQ, kiểm tra xem VIQ của nam và nữ có khác nhau không sau khi loại bỏ ảnh hưởng của kích thước não, chiều cao và cân nặng


3. 1. 4. trực quan hơn. seaborn để khám phá thống kê¶

Seaborn kết hợp thống kê đơn giản phù hợp với âm mưu trên khung dữ liệu gấu trúc

Chúng ta hãy xem xét dữ liệu về tiền lương và nhiều thông tin cá nhân khác về 500 cá nhân (Berndt, ER. Thực hành kinh tế lượng. 1991. NY. Addison-Wesley)

Mẹo

Tải mã đầy đủ và vẽ đồ thị của dữ liệu tiền lương được tìm thấy trong ví dụ tương ứng

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
6

3. 1. 4. 1. ghép nối. ma trận phân tán¶

Chúng ta có thể dễ dàng có trực giác về sự tương tác giữa các biến liên tục bằng cách sử dụng

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
17 để hiển thị ma trận phân tán

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
7

Python để thống kê PDF

Các biến phân loại có thể được vẽ dưới dạng màu sắc

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
8

Python để thống kê PDF

Giao diện và cài đặt matplotlib

Seaborn thay đổi mặc định của các số liệu matplotlib để đạt được giao diện “hiện đại hơn”, “giống excel” hơn. Nó làm điều đó khi nhập khẩu. Bạn có thể đặt lại mặc định bằng cách sử dụng

>>> import numpy as np
>>> t = np.linspace(-6, 6, 20)
>>> sin_t = np.sin(t)
>>> cos_t = np.cos(t)
9

Mẹo

Để quay lại cài đặt seaborn hoặc hiểu rõ hơn về kiểu dáng trong seaborn, hãy xem phần liên quan của tài liệu seaborn

3. 1. 4. 2. lmplot. vẽ hồi quy đơn biến¶

Python để thống kê PDF

Một hồi quy nắm bắt mối quan hệ giữa biến này với biến khác, ví dụ như tiền lương và giáo dục, có thể được vẽ bằng cách sử dụng ________ 118

>>> pandas.DataFrame({'t': t, 'sin': sin_t, 'cos': cos_t})  
           t       sin       cos
0  -6.000000  0.279415  0.960170
1  -5.368421  0.792419  0.609977
2  -4.736842  0.999701  0.024451
3  -4.105263  0.821291 -0.570509
4  -3.473684  0.326021 -0.945363
5  -2.842105 -0.295030 -0.955488
6  -2.210526 -0.802257 -0.596979
7  -1.578947 -0.999967 -0.008151
8  -0.947368 -0.811882  0.583822
...
0

hồi quy mạnh mẽ

Mẹo

Cho rằng, trong biểu đồ trên, dường như có một số điểm dữ liệu nằm ngoài đám mây chính ở bên phải, chúng có thể là các điểm ngoại lệ, không đại diện cho dân số, nhưng thúc đẩy hồi quy

Để tính toán hồi quy ít nhạy cảm hơn với các ngoại lệ, người ta phải sử dụng một mô hình mạnh mẽ. Điều này được thực hiện trong seaborn bằng cách sử dụng

"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
19 trong các chức năng vẽ đồ thị hoặc trong các mô hình thống kê bằng cách thay thế việc sử dụng OLS bằng “Mô hình tuyến tính mạnh mẽ”,
"";"Gender";"FSIQ";"VIQ";"PIQ";"Weight";"Height";"MRI_Count"
"1";"Female";133;132;124;"118";"64.5";816932
"2";"Male";140;150;124;".";"72.5";1001121
"3";"Male";139;123;150;"143";"73.3";1038437
"4";"Male";133;129;128;"172";"68.8";965353
"5";"Female";137;132;134;"147";"65.0";951545
30

3. 1. 5. Thử nghiệm tương tác¶

Python để thống kê PDF

Tiền lương tăng nhiều hơn với giáo dục cho nam giới hơn nữ giới?

Mẹo

Cốt truyện trên được làm từ hai sự phù hợp khác nhau. Chúng ta cần xây dựng một mô hình duy nhất để kiểm tra phương sai độ dốc giữa hai quần thể. Điều này được thực hiện thông qua một “tương tác”

Python được sử dụng như thế nào trong thống kê?

Phân tích thống kê dữ liệu đề cập đến việc trích xuất một số kiến ​​thức hữu ích từ dữ liệu mơ hồ hoặc phức tạp. Python được sử dụng rộng rãi để phân tích dữ liệu thống kê bằng cách sử dụng các đối tượng khung dữ liệu như gấu trúc . Phân tích thống kê dữ liệu bao gồm nhập, làm sạch, chuyển đổi, v.v. dữ liệu chuẩn bị cho phân tích.

Python có tốt cho thống kê không?

Mặc dù cả Python và R đều có thể hoàn thành nhiều tác vụ dữ liệu giống nhau, nhưng mỗi loại đều có những điểm mạnh riêng. . Điểm mạnh và điểm yếu

3 loại thống kê là gì?

Họ là. (i) Trung bình, (ii) Trung vị và (iii) Chế độ . Thống kê là nghiên cứu về Thu thập, phân tích, giải thích, trình bày và tổ chức dữ liệu theo một cách cụ thể.

4 yếu tố cơ bản của thống kê là gì?

Cỡ mẫu, các biến bắt buộc, công cụ tóm tắt bằng số và kết luận là bốn yếu tố của một bài toán thống kê mô tả.