【お知らせ】この部分は英語原文のみでの提供となります。何卒ご了承ください。
2.1.11.12 ocmath_diagnostic_residuals
Contents
Description
Function to compute diagnostic residual for fits(NLSF, LR, PR and MR)
Syntax
int ocmath_diagnostic_residuals( const int nSize, const int nParam, const double dSSE, int nResid, const double * pResid, const double * pX, double * pStadRes, double * pStudRes, double * pStudDelRes, double * pCook, double * pAtkinson, double * pH = NULL )
Parameters
- nSize
- [input] the number of data points
- nParam
- [input] the number of parameters fit by the regression.
- dSSE
- [input] the sum of square of residuals
- nResid
- [input] size of residuals
- pResid
- [input] pointer to residuals in the fits
- pX
- [input] pointer to matix of X, which is X in MR and partial derivatives matrix in NLSF
- the matrix should have nParam columns and nSize rows. The variable won't be used if pH is specified
- pStadRes
- [output] pointer to stardardized residual. Its size is nResid
- pStudRes
- [output] pointer to studentized residual. Its size is nResid
- pStudDelRes
- [output] pointer to studentized deleted residual. Its size is nResid
- pCook
- [output] pointer to Cook'sD statistic. Its size is nResid
- pAtkinson
- [output] pointer to Atkinson's T statistic. Its size is nResid
- pH
- [input] optional output pointer to leverage. Only needed in MR. Its size is nSize
Return
Returns STATS_NO_ERROR on successful exit and a non-zero STATS error code on failure.
Examples
EX1
//The example find studentized residuals for 2 order polynomial fit #include <FDFTree.h> #include <ONLSF.h> #include <ocStats.h> #include <stats_utils.h> void ocmath_diagnostic_residuals_ex1() { string strFDF = okutil_get_origin_path(ORIGIN_PATH_SYSTEM, "FitFunc")+"PARABOLA.FDF"; int nParam = 3; //2th Order polynomial has 3 parameters. Tree tr; if( !nlsf_FDF_to_tree( strFDF, &tr )) return; NumericFunction NF; NF.SetTree(tr); vector vParas; vParas.SetSize(nParam); vParas[0] = 11.2717; // a vParas[1] = -3.81714; // b vParas[2] = 0.4619; // c // X-values: //vector vY={4, 3.3, 3.5, 3.8, 4.2, 5}; vector vX={3,4,4.5,5,5.5, 6}; int nNumPts = vX.GetSize(); vector vA, vB, vC; vA.SetSize(nNumPts); vB.SetSize(nNumPts); vC.SetSize(nNumPts); for (int ipt = 0; ipt < nNumPts; ipt++) { double arrPartialDerivs[3]; BOOL bb = NF.EvalPartialDerivatives(vParas, arrPartialDerivs, vX[ipt]); if (!bb) { out_str("Failed!"); return; } vA[ipt] = arrPartialDerivs[0]; vB[ipt] = arrPartialDerivs[1]; vC[ipt] = arrPartialDerivs[2]; } matrix mDerivX; //Patial derivative matrix mDerivX.SetSize(nNumPts, nParam); mDerivX.SetColumn(vA, 0); mDerivX.SetColumn(vB, 1); mDerivX.SetColumn(vC, 2); double dSSE = 0.00629; vector vRes = {0.0226, -0.0936, 0.0519, 0.0664, -0.0500, 0.0026}; DiagResid psDiagResid_1[8]; vector vStad(nNumPts), vStud(nNumPts), vStudDel(nNumPts), vCook(nNumPts), vAtkinson(nNumPts); int nRet = ocmath_diagnostic_residuals(nNumPts, nParam, dSSE, vRes.GetSize(), vRes, mDerivX, vStad, vStud, vStudDel, vCook, vAtkinson); }
EX2
#include <stats_utils.h> void ocmath_diagnostic_residuals_ex2() { int nRet; UINT nPts,nM; uint nSizeFitParams; LROptions psLROptions; RegStats stRegStats; RegANOVA stRegANOVA; matrix mX(6,3)={{1, 2, 3}, {3.2, 1.1, 3.4}, {1, 2.6, 5}, {5, 5, 2.1}, {1, 6, 7}, {2, 8, 10}}; vector vY ={4,2,6, 7, 8, 10}; vector vWeight = {1, 1, 1, 1, 1, 1}; psLROptions.FixIntercept = false; psLROptions.Confidence = 0.95; FitParameter psFitParameter_1[4]; vector vH, vSE; matrix mCov, mCorr; nRet = stats_multiple_linear_regression(mX, vY, vWeight, psLROptions, psFitParameter_1, 4, &stRegStats, &stRegANOVA, mCov, mCorr, vH, vSE); if (nRet != STATS_NO_ERROR) printf("error in stats_multiple_linear_regression"); vector vRes = {-0.46398, -0.49247, 1.1874, 0.26653, -0.5148, 0.01732}; int nNumPts = mX.GetNumRows(); int nParam = mX.GetNumCols() + 1; vector vStad(nNumPts), vStud(nNumPts), vStudDel(nNumPts), vCook(nNumPts), vAtkinson(nNumPts); nRet = ocmath_diagnostic_residuals(nNumPts, nParam, stRegStats.ReducedChiSq, vRes.GetSize(), vRes, mX, vStad, vStud, vStudDel, vCook, vAtkinson, vH); if (nRet != STATS_NO_ERROR) printf("error in ocmath_diagnostic_residuals"); }
Remark
See Also
Header to Include
origin.h