2

だから、私はかなり単純な統計的有意性の計算をしようとしています。

私のプログラムは、タプルのリストとしてデータセットを作成します。

example_dataset = [(0, 629), (1, 546), (2, 255), (3, 72), (4, 27), (5, 2), (6, 4), (7, 0), (8, 0), (9, 0), (10, 0), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0)]

各データセットは同じです。つまり、最初の項目が 0 回出現し、最後の項目が 15 回出現する 16 個のタプルのリストです。

たとえば、上記のデータセットの例では、最初のタプルは、629 個の DNA 配列が 0 回出現し、546 個の DNA 配列が 1 回出現したことを意味します。

シーケンスの合計が常に 1535 であるという点で、各データ セットも同じです。

シーケンスの 5% は 76.75 です。すべてのデータセットの上位 5% (外観に関して) がどこにあるかを知りたいです。上記のデータ セットでは、15 回の出現から 4 回の出現の間に 33 のシーケンス (4 + 2 + 27) があり、15 回の出現から 3 回の出現の間に 105 のシーケンスがあります。

つまり、76.75 シーケンスは 3 ~ 4 回の出現の間のどこかにあるということです。

手動計算ではなく、データセットごとにこの情報を見つけるにはどうすればよいですか?

上記の例のように、タプルのリストを入力および出力 4 として取得する関数を作成する必要があります (3 は既に 76.75 シーケンスを超えているため)。

another_example_dataset = [(0, 331), (1, 532), (2, 398), (3, 180), (4, 74), (5, 17), (6, 3), (7, 0), (8, 0), (9, 0), (10, 0), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0)]

別の例として、上記のデータセットの場合、出力は 5 になるはずです (4 では既に 76.75 を超えているため、76.75 は 4 から 5 の間のどこかです)。

誰にもこれをコーディングするように頼むわけではありませんが、役立つコマンドやヒントをいただければ幸いです。:)

ありがとう、

エヤル

4

2 に答える 2

0

可能な方法の 1 つは、最高頻度から最低頻度まで反復し、77 回に達したら停止して、それを 5% ポイントとして使用することです。その出現回数を保存して、次のタプルのセットに進みます。タプルがディクショナリまたは 2 次元配列に格納されている場合、リストなどは foreach で反復処理し、77 が発生するポイントをリストに保存してリストを出力します。素朴な方法ですが、問題を解決できます。

于 2013-10-03T14:52:31.313 に答える
0

手動で計算する必要があります。簡単な例を次に示します。

example_dataset = [(0, 629), (1, 546), (2, 255), (3, 72), (4, 27), (5, 2), (6, 4), (7, 0), (8, 0), (9, 0), (10, 0), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0)]
another_example_dataset = [(0, 331), (1, 532), (2, 398), (3, 180), (4, 74), (5, 17), (6, 3), (7, 0), (8, 0), (9, 0), (10, 0), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0)]

def CalculateIndex(dataset):
    sum5 = 0
    for i in range(15,-1,-1):
        sum5 += dataset[i][1]
        if sum5 > 76.75:
            return i+1

print "index for example_dataset is: ", CalculateIndex(example_dataset)
print "index for another_example_dataset is: ", CalculateIndex(another_example_dataset)
于 2013-10-03T15:29:20.430 に答える