void P_nested(vector<double> &P, const vector<double> &par, const NumericMatrix &Theta, const int &N, const int &nfact, const int &ncat, const int &correct) { NumericVector dummy(1); const int par_size = par.size(); vector<double> dpar(nfact+3), npar(par_size - nfact - 3, 1.0); for(int i = 0; i < nfact+3; ++i) dpar[i] = par[i]; for(int i = nfact+3; i < par_size; ++i) npar[i - (nfact+3) + nfact] = par[i]; vector<double> Pd(N*2), Pn(N*(ncat-1)); P_dich(Pd, dpar, Theta, dummy, N, nfact); P_nominal(Pn, npar, Theta, dummy, N, nfact, ncat-1, 0, 0); NumericMatrix PD = vec2mat(Pd, N, 2); NumericMatrix PN = vec2mat(Pn, N, ncat-1); int k = 0, which = 0; for(int i = 0; i < ncat; ++i){ if((i+1) == correct){ for(int j = 0; j < N; ++j){ P[which] = PD(j,1); ++which; } --k; } else { for(int j = 0; j < N; ++j){ P[which] = PD(j,0) * PN(j,k); ++which; } } ++k; } }
void lfmxsp(smpar *sp, mxArray *mcell, int d) { double *alpha; char str[16]; alpha = mxGetPr(mxGetField(mcell,0,"alpha")); nn(sp) = alpha[0]; fixh(sp)= alpha[1]; pen(sp) = alpha[2]; mxGetString(mxGetField(mcell,0,"adaptive_criterion"),str,16); acri(sp) = lfacri(str); deg(sp) = mxGetPr(mxGetField(mcell,0,"degree"))[0]; deg0(sp) = -1; mxGetString(mxGetField(mcell,0,"family"),str,16); fam(sp) = lffamily(str); mxGetString(mxGetField(mcell,0,"link"),str,16); link(sp) = lflink(str); setfamily(sp); mxGetString(mxGetField(mcell,0,"kernel"),str,16); ker(sp) = lfkernel(str); mxGetString(mxGetField(mcell,0,"kernel_type"),str,16); kt(sp) = lfketype(str); npar(sp) = calcp(sp,d); de_renorm = (int)(mxGetPr(mxGetField(mcell,0,"deren"))[0]); mxGetString(mxGetField(mcell,0,"deit"),str,16); de_itype = deitype(str); de_mint = (int)(mxGetPr(mxGetField(mcell,0,"demint"))[0]); lf_debug = (int)(mxGetPr(mxGetField(mcell,0,"debug"))[0]); }