第1章 データ分布の要約

2017/9/29

放送大学「心理統計法(‘17)」第1章 データ分布の要約

Python3のスクリプト

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import collections
from os.path import basename, dirname


#表1.1の「知覚時間」のデータ入力
data = [31.43,31.09,33.38,30.49,29.62,
     35.40,32.58,28.96,29.43,28.52,
     25.39,32.68,30.51,30.15,32.33,
     30.43,32.50,32.07,32.35,31.57]

if __name__ == '__main__':
    class_widths = np.linspace(24.5, 35.5, 12) #階級(階級幅1秒) 
    #class_widths = np.linspace(24.5, 35.5, 6) #階級(階級幅2秒) 
    class_values = [(x+y)/2.0 for x,y in zip(class_widths[:-1],class_widths[1:])] #階級値
    hist, bin_edges = np.histogram(data, bins=class_widths) #度数

    prob = hist / len(data) #確率
    cum_hist = np.cumsum(hist) #累積度数
    cum_prob = np.cumsum(prob) #累積確率

    print("\n□ 表1.2 度数分布表\n")
    print("  階級値(秒),         階級(秒),      度数,      確率,  累積度数,  累積確率")
    for i in range(len(class_values)):
        print("%16d, %6.1f%0.1f, %12d, %7.2f, %13d, %11.2f" % (class_values[i], \
            class_widths[i],class_widths[i+1],hist[i], \
            prob[i],cum_hist[i],cum_prob[i]))


    plt.title("ヒストグラム", fontsize=18)
    plt.xlabel("時間(秒)", fontsize=16)
    plt.ylabel("度数", fontsize=16)
    plt.bar(class_values, hist)
    plt.grid()
    plt.savefig("%s/%s1.png" % (dirname(__file__), basename(__file__)), dpi=70)
    plt.clf()

    plt.title("累積度数図", fontsize=18)
    plt.xlabel("時間(秒)", fontsize=16)
    plt.ylabel("度数", fontsize=16)
    plt.bar(class_values, cum_hist)
    plt.grid()
    plt.savefig("%s/%s2.png" % (dirname(__file__), basename(__file__)), dpi=70)
    plt.clf()

    plt.title("累積確率図", fontsize=18)
    plt.xlabel("時間(秒)", fontsize=16)
    plt.ylabel("確率", fontsize=16)
    plt.bar(class_values, cum_prob)
    plt.grid()
    plt.savefig("%s/%s3.png" % (dirname(__file__), basename(__file__)), dpi=70)
    plt.clf()

    mean = np.mean(data) #平均値
    var = np.var(data) #分散
    std = np.std(data) #標準偏差
    median = np.median(data) #中央値

    print("\n□ 知覚時間」要約統計量(積率系)\n")
    print("  平均値:%13.3f" % mean)
    print("  分散:%18.3f" % var)
    print("  標準偏差:%11.3f" % std)

    print("\n□ 知覚時間」要約統計量(分位系)\n")

    print("  小さい順に並べる")
    print("\n      no,     知覚時間") 
    for i, v in enumerate(sorted(data)):
        print("% 8d, %12.2f" % (i+1, v))

    print("\n  中央値:%12.3f" % median)

    print("  30%%点:%12.3f" % np.percentile(data, 30))
    print("  70%%点:%12.3f" % np.percentile(data, 70))

    print("\n  階級幅1秒の最頻値\n")
    print("    階級値(秒),     度数")
    for k, v in sorted(collections.Counter(np.rint(data)).items(),key=lambda x: x[1], reverse=True):
        print("%18d, %10d" % (k,v))

実行の結果

実行の結果1 実行の結果2 実行の結果3

□ 表1.2 度数分布表

  階級値(秒),         階級(秒),      度数,      確率,  累積度数,  累積確率
              25,   24.5〜25.5,            1,    0.05,             1,        0.05
              26,   25.5〜26.5,            0,    0.00,             1,        0.05
              27,   26.5〜27.5,            0,    0.00,             1,        0.05
              28,   27.5〜28.5,            0,    0.00,             1,        0.05
              29,   28.5〜29.5,            3,    0.15,             4,        0.20
              30,   29.5〜30.5,            4,    0.20,             8,        0.40
              31,   30.5〜31.5,            3,    0.15,            11,        0.55
              32,   31.5〜32.5,            4,    0.20,            15,        0.75
              33,   32.5〜33.5,            4,    0.20,            19,        0.95
              34,   33.5〜34.5,            0,    0.00,            19,        0.95
              35,   34.5〜35.5,            1,    0.05,            20,        1.00

□ 知覚時間」要約統計量(積率系)

  平均値:       31.044
  分散:             4.275
  標準偏差:      2.068

□ 知覚時間」要約統計量(分位系)

  小さい順に並べる

      no,     知覚時間
       1,        25.39
       2,        28.52
       3,        28.96
       4,        29.43
       5,        29.62
       6,        30.15
       7,        30.43
       8,        30.49
       9,        30.51
      10,        31.09
      11,        31.43
      12,        31.57
      13,        32.07
      14,        32.33
      15,        32.35
      16,        32.50
      17,        32.58
      18,        32.68
      19,        33.38
      20,        35.40

  中央値:      31.260
  30%点:      30.346
  70%点:      32.336

  階級幅1秒の最頻値

    階級値(秒),     度数
                32,          5
                30,          4
                31,          3
                33,          3
                29,          3
                35,          1
                25,          1