我试图计算Python中的coefficient of determination(R^2),但在某些情况下我得到一个负值。这是否表示计算中有错误?我以为R^2应该是有界的0和1之间在Python中计算确定系数
下面是做计算我的Python代码,从WP文章直改编:
>>> yi_list = [1, 1, 63, 63, 5, 5, 124, 124]
>>> fi_list = [1.7438055421354988, 2.3153069186947639, 1002.7093097555808, 63.097699219524706, 6.2635465467410842, 7.2275532522971364, 17.55393551900103, 40.8570]
>>> y_mean = sum(yi_list)/float(len(yi_list))
>>> ss_tot = sum((yi-y_mean)**2 for yi in yi_list)
>>> ss_err = sum((yi-fi)**2 for yi,fi in zip(yi_list,fi_list))
>>> r2 = 1 - (ss_err/ss_tot)
>>> r2
-43.802085810924964
对,我刚注意到这个警告。我的数据是用多项式表达式生成的,所以我想这是有道理的。 – Cerin 2010-08-11 16:39:46