はじめに
平均や分散などのRの基礎の基礎をPythonでも書き換えていく。
#Rの基礎(平均等々)
コード
data <- c(10,13,8,15,8) #データ
sum(data) #合計
length(data) #データ数
mean(data) #平均
median(data) #中央値
var(data) #不偏分散
sd(data) #標準偏差
出力
[1] 54
[1] 5
[1] 10.8
[1] 10
[1] 9.7
[1] 3.114482
#Pythonへ
標準のモジュールを使うと以下の様になる。
コード
from statistics import mean, median,variance,stdev
data = [10,13,8,15,8] #データ
print(sum(data)) #合計
print(len(data)) #データ数
print(mean(data)) #平均
print(median(data)) #中央値
print(variance(data)) #不偏分散
print(stdev(data)) #標準偏差
出力
54
5
10.8
10
9.7
3.1144823004794873
これをリストではなくnumpy.array
で書き直すと以下の様になる。numpy では分散を求める関数がデフォルトでは標本分散になっているので、不偏分散にするためにはddof=1
の引数が必要になる。
コード
import numpy as np
data = np.array([10,13,8,15,8]) #データ
print(np.sum(data)) #合計
print(data.shape[0]) #データ数
print(np.mean(data)) #平均
print(np.median(data)) #中央値
print(np.var(data, ddof=1)) #不偏分散
print(np.std(data, ddof=1)) #標準偏差
出力
54
5
10.8
10.0
9.700000000000001
3.1144823004794877
numpy で計算すると15桁くらいでずれてしまう。丸め誤差の影響か...。
何桁まで扱うかは注意が必要。