Ejemplo n.º 1
0
 void ZMMCS::draw(){
   Ptr<MvnSuf> s = m_->suf();
   double df = s->n() + siginv_prior_->nu();
   Spd S = s->center_sumsq(m_->mu()) + siginv_prior_->sumsq();
   S = rWish(df, S.inv());
   m_->prm()->set_ivar(S);
 }
Ejemplo n.º 2
0
Archivo: rand.c Proyecto: jlisic/MNP
/* r interface for rWish */
void RWISH(
    double * sample,
    double * s,
    int * dfPtr,
    int * sizePtr
    ) {

  size_t i,j;
  double ** Sample = calloc( *sizePtr, sizeof(double *) );
  double ** S = calloc( *sizePtr, sizeof(double *) );
  for(i = 0; i < *sizePtr; i++) Sample[i] = &sample[ *sizePtr * i ];
  for(i = 0; i < *sizePtr; i++) S[i] = &s[ *sizePtr * i ];
  
  GetRNGstate();

/************** debug *******************/ 
#ifdef MNPDEBUG
Rprintf("S: \n");
for(i=0;i<*sizePtr;i++) {
  Rprintf("%d:\t",i);
  for(j=0;j<*sizePtr;j++){
    Rprintf("%f\t", S[i][j]);
  }
  Rprintf("\n");
  Rprintf("df = %d\n", *dfPtr);
}
#endif
/************** debug *******************/ 

  rWish(Sample, S, *dfPtr , *sizePtr); 

/************** debug *******************/ 
#ifdef MNPDEBUG
Rprintf("Sample: \n");
for(i=0;i<*sizePtr;i++) {
  Rprintf("%d:\t",i);
  for(j=0;j<*sizePtr;j++){
    Rprintf("%f\t", Sample[i][j]);
  }
  Rprintf("\n");
}
#endif
/************** debug *******************/ 

  PutRNGstate();

  free(Sample);
  free(S);

  return;
}
Ejemplo n.º 3
0
Archivo: funs.cpp Proyecto: cran/mpbart
void DrawSigma(dinfo& di, double *V, std::vector<std::vector<double> >& allfit, 
				double *w, std::vector<std::vector<double> >& WishSample, int nu)
{

std::vector<std::vector<double> > WishMat1;
std::vector<std::vector<double> > epsilon;
std::vector<std::vector<double> > WishMat1Inv;

epsilon.resize(di.n_dim);
WishMat1.resize(di.n_dim);
for(size_t j=0;j<di.n_dim;j++){
	WishMat1[j].resize(di.n_dim);
	epsilon[j].resize(di.n_samp);
}

for(size_t i=0; i<di.n_samp; i++){
	for(size_t k=0; k<di.n_dim; k++){
		epsilon[k][i] = w[i*di.n_dim + k] - allfit[k][i];
	}
}

for(size_t j=0;j<di.n_dim;j++){
	for(size_t k=0;k<di.n_dim;k++){
		WishMat1[j][k] = V[j*di.n_dim + k];
	}
}


for(size_t i=0; i<di.n_samp; i++){
	for(size_t j=0;j<di.n_dim;j++){
		for(size_t k=0;k<di.n_dim;k++){
		WishMat1[j][k] +=epsilon[j][i]*epsilon[k][i];
		}
	}	 
}

dinv(WishMat1 ,di.n_dim,WishMat1Inv);
rWish(WishSample, WishMat1Inv, (int)(nu+di.n_samp),(int)di.n_dim);

}
Ejemplo n.º 4
0
 SpdMatrix WishartModel::simdat(){ return rWish(nu(), sumsq()); }