質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

3回答

405閲覧

複数の試行から得られたデータの標準偏差と標準誤差を求める方法について

退会済みユーザー

退会済みユーザー

総合スコア0

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

0グッド

0クリップ

投稿2019/06/06 11:40

編集2019/06/07 01:13

前提・実現したいこと

5回分の試行があり、データのばらつきを見ようとしています。
試行の再現性の良さを明らかにすることを目的としています。
その再現性の良さを測る値として標準偏差と標準誤差を求めると良いと書かれていたので、
その2つをPythonで求めようとしています。

参考にしている統計に関する関数について書かれたページ

以下のように書いたのですが、センサ毎に5回の試行の再現性の良さを測るにはどうすればいいのか、
プログラムを書いている途中でつまずいてしまい、困っています。

発生している問題・エラーメッセージ

 今のまま実行すると以下のエラーメッセージが出ています。

AttributeError Traceback (most recent call last) <ipython-input-7-48851e7431b4> in <module>() ----> 1 A = A.reshape(-1, num_sensors) AttributeError: 'list' object has no attribute 'reshape'

該当のソースコード

python

1import numpy as np 2#5 回の試行 3#[センサ1のデータ, センサ2, センサ3, センサ4, センサ5, センサ6, センサ7, センサ1....] 4A = [2,5,6,6,8,9,9,10] 5B = [2,5,6,6,8,8,10,16] 6C = [1,2,4,5,7,13,15,13] 7D = [3,5,6,7,9,10,10,11] 8E = [3,5,8,10,11,12,13,10] 9 10data = np.array(A) 11A = A.reshape(-1, num_sensors)

試したこと

取得したいデータの標準偏差とは異なりますが、以下のようにすることで標準偏差を求められることはわかりました。

python

1import numpy as np 2#5 回の試行 3#[センサ1のデータ, センサ2, センサ3, センサ4, センサ5, センサ6, センサ7, センサ1....] 4A = [2,5,6,6,8,9,9,10] 5B = [2,5,6,6,8,8,10,16] 6C = [1,2,4,5,7,13,15,13] 7D = [3,5,6,7,9,10,10,11] 8E = [3,5,8,10,11,12,13,10] 9np.std(A) #Aの標準偏差 10 11#出力 122.4717149916606487

補足情報(FW/ツールのバージョンなど)

python3.6

回答を受けて追記

要素数が多すぎる場合など、以下のようにdict内に全ての要素を書くことができない場合、
このように書くとエラーになってしまうのですが、DataFrame関数外で要素を定義するときは
どのようにかけば良いのでしょうか。

AA = [2,5,6,6,8,9,9,10] BB = [2,5,6,6,8,8,10,16] CC = [1,2,4,5,7,13,15,13] DD = [3,5,6,7,9,10,10,11] EE = [3,5,8,10,11,12,13,10] df = pd.DataFrame(dict(AA,BB,CC,DD,EE))

エラー

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-37-1b563a54aab2> in <module>() ----> 1 df = pd.DataFrame(dict(AA,BB,CC,DD,EE)) TypeError: dict expected at most 1 arguments, got 5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

pandasDataFrame.describe() 使うことで 基本統計量は簡単に導くことはできますので
以下のようにシンプルに記述できます。

Python

1import numpy as np 2import pandas as pd 3 4df = pd.DataFrame(dict( 5 A = [2,5,6,6,8,9,9,10], 6 B = [2,5,6,6,8,8,10,16], 7 C = [1,2,4,5,7,13,15,13], 8 D = [3,5,6,7,9,10,10,11], 9 E = [3,5,8,10,11,12,13,10], 10 )) 11 12print(df.describe()) 13# A B C D E 14#count 8.000000 8.000000 8.000000 8.000000 8.000000 15#mean 6.875000 7.625000 7.500000 7.625000 9.000000 16#std 2.642374 4.138236 5.451081 2.825269 3.464102 17#min 2.000000 2.000000 1.000000 3.000000 3.000000 18#25% 5.750000 5.750000 3.500000 5.750000 7.250000 19#50% 7.000000 7.000000 6.000000 8.000000 10.000000 20#75% 9.000000 8.500000 13.000000 10.000000 11.250000 21#max 10.000000 16.000000 15.000000 11.000000 13.000000

ただ pandas はデフォルトで 不偏推定量であり、DataFrame.describe()
出力する値は不偏推定量となります。(残念ながらddofのパラメータはないみたい)

どうしても標本標準偏差の値がほしいというのであれば DataFrame.std(ddof=0) を使う
ことになります。

Python

1import numpy as np 2import pandas as pd 3 4df = pd.DataFrame(dict( 5 A = [2,5,6,6,8,9,9,10], 6 B = [2,5,6,6,8,8,10,16], 7 C = [1,2,4,5,7,13,15,13], 8 D = [3,5,6,7,9,10,10,11], 9 E = [3,5,8,10,11,12,13,10], 10 )) 11 12print(df.std(ddof=0)) 13#A 2.471715 14#B 3.870966 15#C 5.099020 16#D 2.642797 17#E 3.240370 18#dtype: float64

投稿2019/06/07 00:23

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/07 01:14

ご回答いただきましてありがとうございます。 回答を受けて質問に追記させていただきました。 よろしくお願いいたします。
magichan

2019/06/07 02:07

df = pd.DataFrame({'AA':AA, 'BB':BB, 'CC':CC, 'DD':DD, 'EE':EE}) で良いかと思います。 dictのkeyに当たる部分 ('AA' や 'BB' ) が テーブルのカラム名になりますので、この部分をわかりやすい名前に変えるとよいかと思います。
退会済みユーザー

退会済みユーザー

2019/06/07 02:47 編集

ありがとうございます。 こちらの都合で恐縮ですが、データを内部で定義/外部から読み込むとtype()関数で確認したところどちらも'list'だったのですが、基本統計量を確認しようとすると、外部から読み込んだ[[ ]]二重鍵かっこのデータはエラーになってしまうようでした。 こちらは少し原因が別になりそうなので、別質問として投稿させていただきます。
guest

0

python

1import numpy as np 2from scipy import stats 3 4A = [2,5,6,6,8,9,9,10] 5B = [2,5,6,6,8,8,10,16] 6C = [1,2,4,5,7,13,15,13] 7D = [3,5,6,7,9,10,10,11] 8E = [3,5,8,10,11,12,13,10] 9 10# 1つの配列にまとめておく 11data = np.vstack([A, B, C, D, E]) 12 13# 行方向でそれぞれの標準偏差を求める 14print(data.std(axis=0, ddof=1)) # => 15# [0.74833148 1.2 1.26491106 1.72046505 1.356466 1.8547237 16# 2.24499443 2.28035085] 17 18# scipy.stats.semで標準誤差の計算 19print(stats.sem(data, axis=0, ddof=1)) # => 20# [0.37416574 0.6 0.63245553 0.86023253 0.678233 0.92736185 21# 1.12249722 1.14017543]

投稿2019/06/06 18:27

編集2019/06/06 18:48
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

標準偏差は上記の通りno.std()で求められます。標準誤差ですが自分の知識不足のためnumpy、他のライブラリにそれを求める関数があるのか分かりません。

標準偏差/試行回数の平方根  で求められます、今回の場合は np.std(A)/len(A)**0.5で求まると思います

Python

1import numpy as np 2A = [ 3 [2,5,6,6,8,9,9,10],\ 4 [2,5,6,6,8,8,10,16],\ 5 [1,2,4,5,7,13,15,13],\ 6 [3,5,6,7,9,10,10,11],\ 7 [3,5,8,10,11,12,13,10] 8 ] 9 10for i in A: 11 s=np.std(i) 12 print(s,s/(len(i)**0.5),sep='\n')

こちらのサイトを参考にさせて頂きました
18-5. 標準偏差と標準誤差

投稿2019/06/06 13:09

編集2019/06/06 13:11
Naru123

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問