【统计学】滑动t检验 Moving t-Test Technique

原理(暂缺)

 

 

 1 /*
 2 
 3 App : MTT.cpp
 4 
 5 This is a C++ program for
 6 detecting abrupt climatic change
 7 by using moving t-test technique.
 8 
 9 BY : ZXD
10 Date : January 9, 2014
11 
12 */
13 
14 #define _CRT_SECURE_NO_WARNINGS
15 
16 #include <fstream>
17 #include <cmath>
18 
19 #define N_SIZE 51
20 // The N_SIZE is size of sample,
21 // e.i. the number of total units.
22 
23 #define SUB_SIZE 10
24 // The SUB_SIZE is length of sub-series
25 // e.i. n1 = n2 = SUB_SIZE
26 
27 void smtt( int n, int sub, double *x, double *t );
28 
29 int main()
30 {
31     double x[N_SIZE] = { 0 };
32     double t[N_SIZE] = { 0 };
33     int n = N_SIZE;
34     int sub = SUB_SIZE;
35     int tmp;
36 
37     FILE *infp;
38     FILE *outfp;
39 
40     infp = fopen( "data4.txt", "r" );
41     for ( int i = 0; i < n; i++ )
42     {
43         fscanf( infp, "%d %lf", &tmp, &x[i] );
44         //printf( "%10.4lf\n", x[i] );
45     }
46     fclose( infp );
47 
48     smtt( n, sub, x, t );
49 
50 
51     outfp = fopen( "result.txt", "w" );
52     for ( int i = 0; i < n - sub - sub + 1; i++ )
53     {
54         fprintf( outfp, "%10.4lf\n", t[i] );
55         printf( "%10.4lf\n", t[i] );
56     }
57 
58     fclose( outfp );
59 
60     system( "pause" );
61 }
62 
63 void smtt( int n, int sub, double *x, double *t )
64 {
65     double x1Ave[N_SIZE] = { 0 };
66     double x2Ave[N_SIZE] = { 0 };
67     double x1Var[N_SIZE] = { 0 };
68     double x2Var[N_SIZE] = { 0 };
69     double S[N_SIZE] = { 0 };
70 
71     for ( int i = 0; i < n - sub - sub + 1; i++ )
72     {
73         for ( int j = i; j < i + sub; j++ )
74         {
75             x1Ave[i] += x[j] / (double)sub;
76             x2Ave[i] += x[j + sub] / (double)sub;
77         }
78 
79         for ( int j = i; j < i + sub; j++ )
80         {
81             x1Var[i] += ( x[j] - x1Ave[i] ) * ( x[j] - x1Ave[i] );
82             x2Var[i] += ( x[j + sub] - x1Ave[i] ) * ( x[j + sub] - x1Ave[i] );
83         }
84 
85         x1Var[i] /= (double)sub;
86         x2Var[i] /= (double)sub;
87 
88         S[i] = sqrt( ( (double)sub * x1Var[i] + (double)sub * x1Var[i] ) / (double)( sub + sub - 2 ) );
89 
90         t[i] = ( x1Ave[i] - x2Ave[i] ) / ( S[i] * sqrt( (double)2 / (double)sub ) );
91     }
92 
93 }

 

转载于:https://www.cnblogs.com/FZQL/p/3520097.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值