Changeset d218846 in tol
- Timestamp:
- Jan 20, 2014, 11:26:47 AM (13 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- f18965c
- Parents:
- 0e51c9d
- Location:
- tol
- Files:
-
- 2 edited
-
bmath/bstat/stat.cpp (modified) (3 diffs)
-
btol/real_type/datgrast.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/bmath/bstat/stat.cpp
r0e51c9d rd218846 1048 1048 PartAutoCor(q,p); 1049 1049 } 1050 1051 1050 1052 1051 //-------------------------------------------------------------------- … … 1516 1515 const BArray<BDat>& mean, 1517 1516 const BArray<BDat>& stdErr, 1518 int dataLength)1517 int freeDeg) 1519 1518 //-------------------------------------------------------------------- 1520 1519 { … … 1522 1521 if(!numParam) { return(false); } 1523 1522 1524 BTStudentDist T( dataLength-numParam);1523 BTStudentDist T(freeDeg); 1525 1524 BInt i; 1526 1525 statValue=BDat::PosInf(); -
tol/btol/real_type/datgrast.cpp
r0e51c9d rd218846 32 32 #include <tol/tol_bstat.h> 33 33 #include <tol/tol_btest.h> 34 #include <tol/tol_btsrgra.h> 35 #include <tol/tol_bvmatgra.h> 34 36 35 37 //-------------------------------------------------------------------- … … 1046 1048 } 1047 1049 1050 //-------------------------------------------------------------------- 1051 bool fillVectorType( 1052 const BText& caller, 1053 const BText& argument, 1054 BArray<BDat>& vec, 1055 const BSyntaxObject* obj) 1056 //-------------------------------------------------------------------- 1057 { 1058 BGrammarId gid = obj->Grammar()->Gid(); 1059 switch(gid) 1060 { 1061 case BGI_Serie : 1062 { 1063 BUserTimeSerie* serie = (BUserTimeSerie*)obj; 1064 BData data; 1065 serie->GetData(data); 1066 vec.Copy(data.Size(), data.Buffer()); 1067 return(true); 1068 }; 1069 case BGI_Matrix : 1070 { 1071 BUserMat* mat = (BUserMat*)obj; 1072 vec = mat->Contens().Data(); 1073 return(true); 1074 }; 1075 case BGI_VMatrix : 1076 { 1077 BUserVMat* vmat = (BUserVMat*)obj; 1078 BMatrix<BDat> mat; 1079 vmat->Contens().DMat2dense(*((BMatrix<double>*)(&mat))); 1080 vec = mat.Data(); 1081 return(true); 1082 }; 1083 case BGI_Set : 1084 { 1085 BUserSet* uset = (BUserSet*)obj; 1086 BSet& set = uset->Contens(); 1087 if(!CheckRealElement(caller,set)) { return(false); } 1088 vec.ReallocBuffer(set.Card()); 1089 for(BInt n=0; n<vec.Size(); n++) 1090 { 1091 vec[n] = Dat(set[n+1]); 1092 } 1093 return(true); 1094 } 1095 default : 1096 { 1097 Error(BText("[")+caller+"] Not allowed type "+obj->Grammar()->Name()+ 1098 " for vectorial argument "<<argument+"\n" 1099 "Allowed vectorial types are: Set, Matrix, VMatrix, Serie"); 1100 return false; 1101 } 1102 }; 1103 }; 1104 1048 1105 1049 1106 //-------------------------------------------------------------------- 1050 1107 DeclareContensClass(BSet, BSetTemporary, BSetHannShapiroWTest); 1051 DefExtOpr(1, BSetHannShapiroWTest, "HannShapiroWTest", 2, 2, "Set Real",1052 I2("(Set set, Real alfa)",1053 "(Set conjunto, Real alfa)"),1108 DefExtOpr(1, BSetHannShapiroWTest, "HannShapiroWTest", 2, 2, 1109 "{Set|Matrix|VMatrix|Serie} Real", 1110 "({Set|Matrix|VMatrix|Serie} sample, Real alfa)", 1054 1111 I2(".", 1055 1112 "Contruye el test de normalidad de Hann-Shapiro para una muestra con el " … … 1066 1123 //-------------------------------------------------------------------- 1067 1124 { 1068 B Set& set = Set(Arg(1));1069 if(! CheckRealElement("HannShapiroWTest",set)) { return; }1125 BArray<BDat> vec; 1126 if(!fillVectorType("HannShapiroWTest","sample",vec,Arg(1))) { return; } 1070 1127 BDat alfa = Dat(Arg(2)); 1071 BArray<BDat> vec;1072 vec.ReallocBuffer(set.Card());1073 for(BInt n=0; n<vec.Size(); n++)1074 {1075 vec[n] = Dat(set[n+1]);1076 }1077 1128 BDat b2; 1078 1129 BDat W = HannShapiroW(vec,b2); … … 1089 1140 //-------------------------------------------------------------------- 1090 1141 DeclareContensClass(BSet, BSetTemporary, BSetDAgostinoDTest); 1091 DefExtOpr(1, BSetDAgostinoDTest, "DAgostinoDTest", 2, 2, "Set Real",1092 I2("(Set set, Real alfa)",1093 "(Set conjunto, Real alfa)"),1142 DefExtOpr(1, BSetDAgostinoDTest, "DAgostinoDTest", 2, 2, 1143 "{Set|Matrix|VMatrix|Serie} Real", 1144 "({Set|Matrix|VMatrix|Serie} sample, Real alfa)", 1094 1145 I2(".", 1095 1146 "Contruye el test de normalidad de DAgostinoD para una muestra con el " … … 1106 1157 //-------------------------------------------------------------------- 1107 1158 { 1108 BSet& set = Set(Arg(1)); 1159 BArray<BDat> vec; 1160 if(!fillVectorType("DAgostinoDTest","sample",vec,Arg(1))) { return; } 1109 1161 BDat alfa = Dat(Arg(2)); 1110 if(!CheckRealElement("DAgostinoDTest",set)) { return; }1111 BArray<BDat> vec;1112 vec.ReallocBuffer(set.Card());1113 for(BInt n=0; n<vec.Size(); n++)1114 {1115 vec[n] = Dat(set[n+1]);1116 }1117 1162 BDat T; 1118 1163 BDat D = DAgostinoD(vec, T); … … 1127 1172 1128 1173 1129 1174 bool Diagnostic_NormalReg_Res_Pearson( 1175 BDat& statValue, 1176 BDat& refuseProb, 1177 const BArray<BDat>& res); 1178 1179 1180 //-------------------------------------------------------------------- 1181 DeclareContensClass(BSet, BSetTemporary, BSetNormalPearsonChiSqrTest); 1182 DefExtOpr(1, BSetNormalPearsonChiSqrTest, "NormalPearsonChiSqrTest", 1, 1, 1183 "{Set|Matrix|VMatrix|Serie}", 1184 "({Set|Matrix|VMatrix|Serie} sample)", 1185 "Performs Pearson chi-square test of normality for a given sample.\n" 1186 "http://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test", 1187 BOperClassify::Statistic_); 1188 void BSetNormalPearsonChiSqrTest::CalcContens() 1189 //-------------------------------------------------------------------- 1190 { 1191 BArray<BDat> vec; 1192 if(!fillVectorType("NormalPearsonChiSqrTest","sample",vec,Arg(1))) { return; } 1193 BDat statValue; 1194 BDat refuseProb; 1195 Diagnostic_NormalReg_Res_Pearson(statValue,refuseProb,vec); 1196 BList* lst = NIL; 1197 BList* aux = NIL; 1198 LstFastAppend(lst,aux, BContensDat::New("StatValue", statValue, "Chi-square value")); 1199 LstFastAppend(lst,aux, BContensDat::New("RefuseProb", refuseProb, "Refuse probability")); 1200 contens_.RobElement(lst); 1201 } 1202 1203 void AutoCor(const BArray<BDat>& vec,BArray<BDat>& cor,BInt order,BInt demean); 1204 1205 bool Diagnostic_ARIMA_ResAcf_BoxPierceLjung( 1206 BDat& statValue, 1207 BDat& refuseProb, 1208 const BArray<BDat>& acf, 1209 int dataLength, 1210 int p, 1211 int q); 1212 1213 //-------------------------------------------------------------------- 1214 DeclareContensClass(BSet, BSetTemporary, BSetBoxPierceLjungTest); 1215 DefExtOpr(1, BSetBoxPierceLjungTest, "BoxPierceLjungTest", 3, 3, 1216 "{Set|Matrix|VMatrix|Serie} Real Real", 1217 "({Set|Matrix|VMatrix|Serie} sample, Real numAcf, Real freeDegree)", 1218 "The LjungBox test (named for Greta M. Ljung and George E. P. Box) " 1219 "is a type of statistical test of whether any of a group of numAcf " 1220 "autocorrelations of a time series are different from zero. Instead " 1221 "of testing randomness at each distinct lag, it tests the overall " 1222 "randomness based on a number of lags, and is therefore a portmanteau " 1223 "test.\n" 1224 "http://en.wikipedia.org/wiki/Ljung%E2%80%93Box_test", 1225 BOperClassify::Statistic_); 1226 void BSetBoxPierceLjungTest::CalcContens() 1227 //-------------------------------------------------------------------- 1228 { 1229 BArray<BDat> vec, acf; 1230 if(!fillVectorType("BoxPierceLjungTest","sample",vec,Arg(1))) { return; } 1231 int numAcf = (int)Real(Arg(2)); 1232 int freeDegree = (int)Real(Arg(3)); 1233 BDat statValue; 1234 BDat refuseProb; 1235 int dataLength = vec.Size(); 1236 AutoCor(vec,acf,numAcf,1); 1237 Diagnostic_ARIMA_ResAcf_BoxPierceLjung(statValue,refuseProb,acf,dataLength,freeDegree,0); 1238 BList* lst = NIL; 1239 BList* aux = NIL; 1240 LstFastAppend(lst,aux, BContensDat::New("StatValue", statValue, "Chi-square value")); 1241 LstFastAppend(lst,aux, BContensDat::New("RefuseProb", refuseProb, "Refuse probability")); 1242 contens_.RobElement(lst); 1243 } 1244 1245 bool Diagnostic_ARIMA_ResAcf_BoxPierceMod( 1246 BDat& statValue, 1247 BDat& refuseProb, 1248 const BArray<BDat>& acf, 1249 int dataLength, 1250 int p, 1251 int q); 1252 1253 //-------------------------------------------------------------------- 1254 DeclareContensClass(BSet, BSetTemporary, BSetBoxPierceModifiedTest); 1255 DefExtOpr(1, BSetBoxPierceModifiedTest, "BoxPierceModified", 3, 3, 1256 "{Set|Matrix|VMatrix|Serie} Real Real", 1257 "({Set|Matrix|VMatrix|Serie} sample, Real numAcf, Real freeDegree)", 1258 "Performs the Chung-Ming Kuan modified version of serial " 1259 "uncorrelatedness test of Box-Pierce.\n" 1260 "http://homepage.ntu.edu.tw/~ckuan/pdf/Lec-DiagTest_0902.pdf", 1261 BOperClassify::Statistic_); 1262 void BSetBoxPierceModifiedTest::CalcContens() 1263 //-------------------------------------------------------------------- 1264 { 1265 BArray<BDat> vec, acf; 1266 if(!fillVectorType("BoxPierceModified","sample",vec,Arg(1))) { return; } 1267 int numAcf = (int)Real(Arg(2)); 1268 int freeDegree = (int)Real(Arg(3)); 1269 BDat statValue; 1270 BDat refuseProb; 1271 int dataLength = vec.Size(); 1272 AutoCor(vec,acf,numAcf,1); 1273 Diagnostic_ARIMA_ResAcf_BoxPierceMod(statValue,refuseProb,acf,dataLength,freeDegree,0); 1274 BList* lst = NIL; 1275 BList* aux = NIL; 1276 LstFastAppend(lst,aux, BContensDat::New("StatValue", statValue, "Chi-square value")); 1277 LstFastAppend(lst,aux, BContensDat::New("RefuseProb", refuseProb, "Refuse probability")); 1278 contens_.RobElement(lst); 1279 } 1280 1281 1282 /* 1283 void Frequency(const BArray<BDat>& vec, BMatrix<BDat>& M , 1284 BInt parts, BDat min, BDat max); 1285 1286 //-------------------------------------------------------------------- 1287 DeclareContensClass(BMat, BMatTemporary, BMatFrequenceHistogram); 1288 DefExtOpr(1, BMatFrequenceHistogram, "FrequenceHistogram", 1, 4, 1289 "{Set|Matrix|VMatrix|Serie}, Real, Real, Real", 1290 "({Set|Matrix|VMatrix|Serie} sample " 1291 "[, Real parts=100, Real min=-1/0, Real max = +1/0])", 1292 "Builds the histogram of frequencies of a given sample", 1293 BOperClassify::Statistic_); 1294 void BMatFrequenceHistogram::CalcContens() 1295 //-------------------------------------------------------------------- 1296 { 1297 BArray<BDat> vec; 1298 if(!fillVectorType("FrequenceHistogram","sample",vec,Arg(1))) { return; } 1299 BInt parts =100; 1300 BDat min = BDat::NegInf(); 1301 BDat max = BDat::PosInf(); 1302 if(Arg(2)) { parts = Dat(Arg(2); } 1303 if(Arg(3)) { min = Dat(Arg(3); } 1304 if(Arg(4)) { max = Dat(Arg(4); } 1305 1306 void Frequency(const BArray<BDat>& vec, BMatrix<BDat>& M , 1307 BInt parts, BDat min, BDat max); 1308 1309 } 1310 1311 */
Note: See TracChangeset
for help on using the changeset viewer.
