我在做科尔莫戈罗夫-斯米尔诺夫测试。我从线性同余生成器中提取了10k个数字。
def kolmogorov_smirnov_test( data_set, confidence_level, num_samples ):
# Step 1: Rank data from smallest to largest, such that:
# R(1) <= R(2) <= R(3) ... <= R(i)
data_set.sort()
# Step 2: Computer D+ and D-
# D+ = max(i/N - R(i))
d_plus = get_d_plus_value_for_KS_TEST(data_set, num_samples)
print("D+ VALUE =" +(str(d_plus)))
# D- = max(R(i) - (i -1)/n)
d_minus = get_d_minus_value_for_KS_TEST(data_set, num_samples)
print("D- VALUE=" +(str(d_minus)))
# Step 3: Computer D = max(D+,D-)
d_value = max(d_plus, d_minus)
print("D VALUE (max): " +(str(d_value)))
# Step 4: Determine critical value, using table
# Step 5: Accept or reject Null hypothesis
return d_value并且它给出了以下错误:
ValueError Traceback (most recent call last)
<ipython-input-31-8ab28c7d697e> in <module>
----> 1 kolmogorov_smirnov_test()
<ipython-input-28-087123eac877> in kolmogorov_smirnov_test()
8 # Step 2: Computer D+ and D-
9 # D+ = max(i/N - R(i))
---> 10 d_plus = max (int(data_set, num_samples))
11
12 # D- = max(R(i) - (i -1)/n)
ValueError: int() base must be >= 2 and <= 36, or 0发布于 2019-07-21 08:07:41
作为函数的int有两个参数:要转换为整数的值和该数字的基数(例如,int("FF", 16)将导致255)。所以int(data_set, num_samples)想要以num_samples作为基础,这将是完全无稽之谈。
但这并不是唯一的问题。int(data_set, num_samples)中的第一个参数是您的数据数组,它不能转换为整数(至少不能以这种方式转换)。
即使(出于某种奇怪的原因)整个函数可能返回一个整数,max(int(data_set, num_samples))也会获得一个整数作为参数,这也不起作用。
现在更大的问题是,代码甚至根本不能匹配给定的数学函数,所以在给出更多关于您在这里的实际目标的信息之前,我无法进一步帮助您。
https://stackoverflow.com/questions/57129406
复制相似问题