p每个矩阵项的时间序列值(3dim)

2024-09-30 20:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想关联每个网格框的时间序列(540个月长),循环2个纬度x 6个经度=总共12个网格框。我设法得到了相关系数,但是p值变成了“nan”,尽管它们不应该

我的数据信息:

  • 数据1-形状:(540,2,6)尺寸:3
  • 数据2-形状:(540,2,6)尺寸:3

我试过了:

  1. np.corrcoef(TheData1[gotdata,lt,ln],TheData2[gotdata,lt,ln])[0,1] 可以很好地获得相关系数,但对于 p值
  2. slope,intercept,r_value,p_value,std_err=scipy.stats.linregress(TheData1[gotdata,lt,ln],TheData2[gotdata,lt,ln]) 给出pvalue=nan
  3. 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]

Tags: 数据lt网格valuestatsnprangescipy
1条回答
网友
1楼 · 发布于 2024-09-30 20:24:52

仅通过选择gotdata的第一个条目([0])来解决:

gotdata = np.where((TheData1[:,lt,ln] > TheMDI) & (TheData2[:,lt,ln] > TheMDI))[0]

这使得scipy.stats.pearsonr给出一个p值

相关问题 更多 >