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

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

ただいまの
回答率

90.34%

  • Python

    9155questions

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

p値を下げている配列を知りたい

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 294

kaitotokai

score 43

 前提・実現したいこと

p値を下げている配列を知りたい。

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

特にエラーは発生していない。

 該当のソースコード

#coding:utf-8
import scipy as sp
import scipy.stats
import pandas as pd
import numpy as np

data = [[23. 45. 78. 23. 48.][36. 94. 34. 10. 40.][46. 85. 39. 62. 81.][1. 1. 1. 1. 1.]]
result= sp.stats.bartlett(*data)
print(result)


とコードを書いて実行したところ、
BartlettResult(statistic=4.3945586749853556, pvalue=0.009338345709) 
のように出力された。今回の場合だと、data の[1. 1. 1. 1. 1.]がp値を下げている配列である。それを検出したい。

 試したこと

for文を書いて一つ一つ検出する方法を思いついたが、しかしどのようにp値を下げているかいなかを判定すればいいのかわからなかった。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

おそらく、配列を順番に除いてbartlettに入力するのが近道のように思います。1番目の配列を除いて残りだけで実施した場合、2番目を除外して実施した場合、などを順番に行い、最も期待するP値に近くなるケースを探索すればいいかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 20:23

    ありがとうございます。そのような考え方があるのですね!
    一つ質問なのですが、もしデータが、
    data = [[23. 45. 78. 23. 48.][36. 94. 34. 10. 40.][46. 85. 39. 62. 81.][50. 74. 63. 83. 71.][1. 1. 1. 1. 1.][58. 73. 27. 47. 66.][71. 77. 33. 42. 47.]×100・・・[2. 2. 2. 2. 2.]]のように、20〜80までの数字が100ほどあり、その中に[1. 1. 1. 1. 1.]と[2. 2. 2. 2. 2.]の配列が混ざっていて、これらがp値を下げている原因で、この2つの配列を取り除きたいとしたらどうしたらいいでしょうか?僕がお聞きしたいのは、p値を下げている配列が何個かわからなくて、その場合でもp値を下げている配列をpick upしたい時、という意図なのですが。

    キャンセル

  • 2018/04/21 21:45

    探索的なアプローチなので、1つを取り除いたのちにさらに1つを取り除くこと探索を繰り返せばいいのかなぁとそもそも思っていました。探索のゴールはどれを取り除いても結果にほとんど変化がない状態です。あるいは、目標とするp値になったときというのもアリでしょう。いずれにも合致しない、つまりすべての探索が終わった場合も終了条件です。

    ちなみに、bartlett法でp値を下げている配列を除外したい意図はどこにあるのでしょうか?
    私の理解だと、bartlett法で帰無仮説が採択されても棄却されても大勢に影響はないと思っています。理由は、その結果は二元配置分散分析や一元配置分散分析が使えるかどうかというだけで、使えない(つまり分散が不均一)場合は、他の方法が適用できるので深刻な問題にならないと思っていました。
    おそらく、別の用途があってのことかと思うので後学のため、教えていただけるとありがたく思います。

    キャンセル

  • 2018/04/22 13:24

    すみません、言葉足らずでした。kruskal-wallis検定でもp値(pvalue=0.009338345709などのように)が出ると思いますが、その時p値を下げている配列を知りたかったので、p値を下げている配列が何かを知りたかったです。もしご存知でしたら教えていただきたいです。

    キャンセル

  • 2018/04/23 08:34

    kruskal-wallisでも同じアプローチ方法でいけると思います。
    配列ひとつを除外してp値を計算する処理を複数回実施してp値に大きな影響を与える配列を特定するという処理を所定の条件を満たすまで行えばいいことになります。

    キャンセル

  • 2018/04/23 11:05

    承知しました!ありがとうございます。

    キャンセル

0

数理計画法的に考えてみる(解決したい課題を定義する)のはいかがでしょうか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 15:25 編集

    回答をありがとうございます。すみません、数理計画法という言葉に馴染みがなくご回答の内容がよくわかっていなく。。。数理計画法をググって見てこちらの記事(https://myenigma.hatenablog.com/entry/2016/10/25/093227)を読んだのですがまだどういう内容なのかわかっていません。具体的なコードや例をあげてもらえませんか?

    キャンセル

0

雑な発想ですが、素直に各配列の分散を求めて外れ値除去的な方法(分散の分布を見て2シグマ、とか)でハジけば、それなりに行けるんじゃないかなぁ、とか思ったり。あまり厳密な方法ではないかもしれませんが、参考までに。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/23 08:46

    候補選びはこれでいけると思います。
    確定できるかというと、barlett検定はカイ二乗分布を使っている関係で自由度が変わるとp値にも影響するので、計算して確定する処理が必要です

    キャンセル

  • 2018/04/23 11:32

    勉強になりました。確かに計算してみないことには最終的なp値は・・・か

    キャンセル

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

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    9155questions

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