[R] Warning message

Dennis Murphy
Mon, 10 May 2010 06:49:26 -0000

Hi:

A univariate t-distribution with 1 df is equivalent to the standard Cauchy
distribution, for
which it is well established that the population mean does not exist. You're
basically
simulating a vector version of the Cauchy distribution (an IID 8-dimensional
version),
so the same problem is likely to arise. This is exhibited in the tail
behavior of the
(simulated) distribution of means.

It's a little more convenient to do this in terms of arrays rather than
lists:

library(mvtnorm)

# Generate 10 multivariate t samples in 8D and replicate the process 1000
times
# result is a 3D array of size 10 x 8 x 1000.
rs <- array(replicate(1000, rmvt(10, sigma = diag(8), df = 1)), c(10, 8,
1000))

# Average over the 10 samples in each replicate, yielding an 8 x 1000 matrix
-
# i.e., average over the first dimension of the array
rsm <- apply(rs, c(2, 3), mean)

# Transpose the matrix, convert it to a data frame, and melt it using the
# reshape package; this generates an 8000 x 2 data frame, where the first
# variable is an indicator for each component of the vector (V1 - V8) and
# the value represents the sample values.
library(reshape)
rr <- melt(as.data.frame(t(rsm)))

# Use the histogram function in lattice to generate the histograms for each
# component of the sample vector:
library(lattice)
histogram(~ value | variable, data = rr, xlab = 'x', type =
'density')

Since your original post averaged over the entire matrix in each replicate,
let's do that - just because...

rmns <- apply(rs, 3, mean)
hist(rmns, breaks = 20, probability = TRUE)
#or in lattice,
histogram(~ rmns, breaks = 20, density = TRUE)

[Hint: If you use the median rather than the mean as an estimator, its
         sampling distribution will behave somewhat closer to what you
         may expect...]

HTH,
Dennis

On Sun, May 9, 2010 at 10:37 PM, Shant Ch <sha1one@yahoo.com> wrote:

> Hello,
>
> I want to draw a histogram of the mean of sample observations drawn from
> multivariate t distribution. I am getting the following error corresponding
> to the code I used. Though I am getting the graph, but I am curious to know
> the warning message.
>
> Warning messages:
> 1: In if (freq) x$counts else { :
>  the condition has length > 1 and only the first element will be used
> 2: In if (!freq) "Density" else "Frequency" :
>  the condition has length > 1 and only the first element will be used
>
>
-----------------------------------------------------------------------------------
> library(mvtnorm);
> s12<-c(1:1000);
> var21<-lapply(s12,function(x){
>     rs<-rmvt(10, sigma=diag(8), df=1);
>     my<-mean(rs);
>     sy<-sqrt(var(rs))
>     return(cbind(my,sy))
> });
> data1<-do.call(rbind,var21);
> dataMat<-data.frame(data1);
> W<-dataMat$my;
> hist(W,breaks=20,probability=T)
>
>
-----------------------------------------------------------------------------------
>
> Thanks.
>
> Shant
>
>
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]