- 积分
- 625
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-7-8
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
今天画图的时候对Ncl用了好多次的回归函数有了点好奇,这个不管输入原始场、距平场出来的b值(斜率)都长一样的函数,它画的具体是不是统计书上的那个b值(斜率)
于是做了个测试,首先是直接套用函数
T_spring_nino34 =spring_nino34;指数序列
spring_SIOD_T = regCoef_n(T_spring_nino34,spring_SIOD,0,0) ;回归函数
print(spring_SIOD_T) ;输出结果为 -0.1669429
接着我自己乖乖用统计课本的公式去计算回归斜率值b值
xysum = new(62, float)
xsum = xysum
do i = 0 , 61
xysum(i) = T_spring_nino34(i) * spring_SIOD(i)
xsum(i) = T_spring_nino34(i) * T_spring_nino34(i)
end do
xyup = (dim_sum_n_Wrap(xysum, 0) - (dim_avg_n_Wrap(spring_SIOD, 0)*dim_avg_n_Wrap(T_spring_nino34, 0)*62.)) ;分子部分
xydown = dim_sum_n_Wrap(xsum, 0) - (dim_avg_n_Wrap(T_spring_nino34, 0)*dim_avg_n_Wrap(T_spring_nino34, 0))*62.;分母部分
xy = xyup/xydown;计算出来了统计课本的2.5公式b值=(累加xy相乘值 - x平均值*y平均值*n)/(累加的x平方 - x平均值*x平均值*n)
print(xy) ;输出结果也是-0.1669429
得证明,Ncl自带回归函数,算出来的那个值就是我们要的课本上的b值,那有小伙伴肯定要问了,如果输入y场改为标准场,x原值呢, 改动一下:
T_spring_nino34 =spring_nino34
T_spring_SIOD = dim_standardize_n_Wrap(spring_nino34,1,0) ;对y场做标准化处理
spring_SIOD_T = regCoef_n(T_spring_nino34,T_spring_SIOD,0,0)
print(spring_SIOD_T) ; 输出结果-0.2996776显然数值发生了改变了
用书上的公式再套用标准化后的y场,算出来的也一样啦是-0.2996776,这里就说明y场改成了标准场,数值是量级变了的,符号没动哦还是负相关值,更显著的可能性或许更大了~
那如果我对x场也做标准化处理呢?x y 都标准化
这时候算出来的b值是-0.1767678
,不管是套用ncl函数还是用课本公式去计算都是-0.1767678哦,这个时候符号未改,数量级调小了~
那如果我只对x场做标准化,而y场原值呢?
两版输出都是 -0.09847296 符号没变,量级更小了
那如果是x场距平场,y原值呢?
两版输出都是 -0.1669429(有没有觉得这个数字好熟悉,没错就跟上上上面的测试答案一致,原值xy去算回归b值)
那如果是y场距平场,x原值呢?
两版输出依然是 -0.1669429
那如果xy都距平场呢?
两版输出依然是-0.1669429
所以距平场和原值场出来的都是一个答案的~~大家放心用,也就是不管x场距平y原值,y距平x原值,xy都原值,xy都距平出来都是一个b值,课本2.5公式的那个b值
至于标准场,x标准y原值,x原值y标准,xy都标准,xy都原值,b值都会有差异,但符号不变哈。
|
|