Wie wird die Gleichung für die proportionale Variabilität (Gleichung 1 dieser paper) codiert?Code für proportionale Variabilität
Mein Code ist:
import pandas as pd
l = pd.Series([1,2,3,4,5,6]) # any list of numbers
n = len(l)
if n > 1:
C = (n*(n-1))/2
D = []
for i in l.index:
for j in l.index:
if i != j:
zi_zj = [l[i],l[j]]
D.append(1-((min(zi_zj))/(max(zi_zj))))
PV = (1/C)*(np.sum(D))
else:
PV = 0
Wenn ich eine Liste mit allen Zahlen stellte das gleiche, ich PV = 0
bekommen, wie erwartet, aber wenn ich eine Liste mit einer arithmetischen Folge stellte z.B. [0,2,4,6,8]
, PV = 1.4
, und entsprechend der Veröffentlichung, PV
sollte zwischen 0
und 1
sein, und eine arithmetische Sequenz sollte eine PV = 0.5
unabhängig von Stichprobengröße n
haben.
Eine weitere Option, die ich versuchte, war:
l = pd.Series([1,2,3,4,5,6]) # any list of numbers
n = len(l)
if n > 1:
C = (n*(n-1))/2
i_s = set()
j_s = set()
D = []
for i in l.index:
for j in l.index:
if i != j:
if i not in i_s:
if j not in j_s:
zi_zj = [l[i],l[j]]
D.append(1-((min(zi_zj))/(max(zi_zj))))
i_s.add(i)
j_s.add(j)
PV = (1/C)*(np.sum(D))
else:
PV = 0
aber auch nicht funktioniert.
Auch habe ich keine Funktion in Python gefunden, die die proportionale Variabilität einer Folge von Zahlen berechnet.
Kann jemand herausfinden, was ich im Code falsch mache, oder lassen Sie mich wissen, wenn es eine eingebaute Funktion gibt?