ある状態とは大きく違うデータが与えられた時に
判別するプログラムを書こうとしています。
1つの判別方法として、A_B間の標準偏差とA_C間の標準偏差を求めて、
Aの状態と似ている/異なる判断ができるのではないかと考えました。

しかしながら、現在のコードでは想定通りにはならず、
判別を行う閾値の設定方法もどうしたら良いかわからない状態です。

想定しているデータ

#Aは標準のデータとする
A =[9.43,5.04,8.86,2.48,5.27,5.21,7.95,1.96,1.53,3.13]
#Aの状態とほとんど同じ
B = [8.99,5.00,8,2.30,5.20,4.89,8.14,2.00,1.20,2.86]
#Aの状態とは大きく違う
C = [5.20,3.14,7.71,4.33,3.47,3.10,3.88,4.57,2.48,6.41]

実行コード

import numpy as np
#Aは標準のデータとする
A =[9.43,5.04,8.86,2.48,5.27,5.21,7.95,1.96,1.53,3.13]
#Aの状態とほとんど同じ
B = [8.99,5.00,8,12,2.30,5.20,4.89,8.14,2.00,1.20,2.86]
#Aの状態とは大きく違う
C = [5.20,3.14,7.71,4.33,3.47,3.10,3.88,4.57,2.48,6.41]

marginAB = 0
marginAC = 0
#A_B間の標準偏差とA_C間の標準偏差を求めて、Aの状態と似ている/異なるの判断をしようとしています
for i in range(len(A)):
        marginAB += (A[i] - B[i])**2
        marginAC += (A[i] - C[i])**2

#sd:標準偏差(standard deviation)
sdAB = marginAB / len(A) *2
sdAC = marginAC / len(A)*2

#sdACの方が同じ配列番号間の差は大きくなるからsdABよりも標準偏差が大きいと考えられる
#似ているか/異なるかの判断
#sdABにかけている値はどのように決定すべきかわからないため適当に想定
if sdAC > 2*sdAB:
    print('異なる')
else:
    print('似ている')

出力

似ている→異なる(修正後)

確認したこと
判別がうまくいかなかったことからsdABとsdACを確認しましたが、予想に反してsdACの値の方がsdABよりも小さかったことも理解できませんでした。(修正後解決しました)

sdAB,sdACの値(今回の例の場合)

0.2587999999999998
13.795580000000001