我想关联每个网格框的时间序列(540个月长),循环2个纬度x 6个经度=总共12个网格框。我设法得到了相关系数,但是p值变成了“nan”,尽管它们不应该
np.corrcoef(TheData1[gotdata,lt,ln],TheData2[gotdata,lt,ln])[0,1]
可以很好地获得相关系数,但对于
p值李>slope,intercept,r_value,p_value,std_err=scipy.stats.linregress(TheData1[gotdata,lt,ln],TheData2[gotdata,lt,ln])
给出pvalue=nan李>scipy.stats.pearsonr(TheData1[gotdata,lt,ln],TheData2[gotdata,lt,ln])
给出错误"ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()"
TheMDI代表-1e30,缺少数据
for lt in range(NLats): # range nlats goes through 0...36
for ln in range(NLons): # range nlons goes through 0...72
# Short way
# create a map pointing to the elements of the array that are non-missing
gotdata = np.where((TheData1[:,lt,ln] > TheMDI) & (TheData2[:,lt,ln] > TheMDI))
OutputData[lt,ln] = np.corrcoef(TheData1[gotdata,lt,ln]/np.std(TheData1[gotdata,lt,ln]),TheData2[gotdata,lt,ln]/np.std(TheData2[gotdata,lt,ln]))[0,1]
OutputDataSig[lt,ln]=scipy.stats.linregress(TheData1[gotdata,lt,ln],TheData2[gotdata,lt,ln])[3]
仅通过选择gotdata的第一个条目([0])来解决:
这使得scipy.stats.pearsonr给出一个p值
相关问题 更多 >
编程相关推荐