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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

Q&A

解決済

1回答

1673閲覧

DataFrame型の縦の行で統計的に有意かどうかを調べたい

退会済みユーザー

退会済みユーザー

総合スコア0

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

0グッド

0クリップ

投稿2018/04/24 06:33

前提・実現したいこと

DataFrame型の縦の行で統計的に有意かどうかを調べたい。
df変数に

A B C D 0 7 3 100 4 1 6 8 70 5

というデータが入っている。それぞれの行に対して、p値を求めたい。
この場合だと、Cの100&70行が、他の行と違うため、Cの p値が 0.05より低くなり、その他の行のp値が普通になるように算出したい。

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

result = sp.stats.ttest_ind(*q) File "/Users/xxx/anaconda3/envs/py36/lib/python3.6/site-packages/scipy/stats/stats.py", line 4070, in ttest_ind v1 = np.var(a, axis, ddof=1) File "/Users/xxx/anaconda3/envs/py36/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 3194, in var **kwargs) File "/Users/xxx/anaconda3/envs/py36/lib/python3.6/site-packages/numpy/core/_methods.py", line 89, in _var rcount = _count_reduce_items(arr, axis) File "/Users/xxx/anaconda3/envs/py36/lib/python3.6/site-packages/numpy/core/_methods.py", line 50, in _count_reduce_items items *= arr.shape[ax] TypeError: tuple indices must be integers or slices, not numpy.float64

というエラーが発生している。

該当のソースコード

result = sp.stats.kruskal(*ans) n = np.asarray(list(map(len, args))) TypeError: len() of unsized object

試したこと

上記のコードの実行

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

何が問題なのか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

何に対して統計的に有意であることを確かめたいのかの記載がないので回答になっているかわからないのですが、とりあえず、コードからわかることを記載します。
まず、ttest_ind()は二群間の平均の差の検定をするものなので、質問のケースのような4つの群を入力している時点でエラーになります。多群間の平均の差を評価するのであれば、ANOVAと呼ばれる方法を用いたほうがいいかと思います。ただし、ANOVAは群間の分散が均一の場合に適用できるものなので、質問例のような分散が不均一の場合はkruskal-wallisを使うことになると思います。

後段の「該当のソースコード」はあまりに部分的すぎて良くわかりませんでした。エラーの原因だけ指摘するとlenという組み込み型関数が変数として用いられていることに起因しているようです。

投稿2018/04/24 08:35

R.Shigemori

総合スコア3376

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

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

退会済みユーザー

退会済みユーザー

2018/04/24 08:56

ありがとうございます。 A・B・C・D の全部のデータ(0・1の行の両方)の平均や中央値などを元に、A or B or C or Dの行のデータがどれくらい”確率的に起こりにくいか"を調べたいです
退会済みユーザー

退会済みユーザー

2018/04/24 08:58

なのでもしかしたら、kruskal検定ではないかもしれません(カイ二乗検定で すかね・・・?)
退会済みユーザー

退会済みユーザー

2018/04/24 09:08

ちなみに、もしカイ二乗検定が良いのなら、Pythonを使ってdf変数の行のデータから理論値を求める方法を教えていただきたいです。よろしくお願いいたします。
R.Shigemori

2018/04/24 09:45

dfがクロス集計結果であれば、カイ二乗検定が適しているかもしれません。ただし、カイ二乗検定が示してくれることは、行側のクラス0,1と列側のクラスA,B,C,Dに関連があるかどうかと今回のような分布が起きる可能性が期待値に比べてどのくらい違うかというものなので、行単位の比較はムリかなぁと感じています。 一応、カイ二乗検定の関数はscipy.stats.chi2_contingencyです。詳細な使い方はドキュメントを参照ください
退会済みユーザー

退会済みユーザー

2018/04/24 10:04

ありがとうございます!!ちょっと考えて見ます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問