Skip to content
Prev 79626 / 398502 Next

Beginner question on apply()

Dear all,

I am an beginner with R and I have a question concerning apply(). My problem
is as follows:

I have data on four variables (x1,x2,x3,x4) with missing values for x1 and
x2.
x1 x2 x3 x4
1  NA NA 10  1
2  NA NA  8  3
3  NA NA 13  7
4   9  9  9  9
5  11 14 20 10
6  14 14 14 15
7   6  6  6  8
8   4  4  4 19
9  12 12 12  8
.....

I would like to replace the missing values by values sampled from the
conditional distribution p(x1,x2|x3,x4) of x1 and x2, given the observed
data on x3 and x4.
This conditional distribution is specified as a product of two normals:
p1(x1|x2,x3,x4)*p2(x2|x3,x4), where the mean of p1 is given by 
a1*x2+a2*x3+a4*x4 and for p2 the mean is b1*x3+b2*x4.(Note that the means
change for every observation)

I use Adaptive Rejection Metropolis Sampling (function arms() from package
HI) to draw values from p(x1,x2|x3,x4). My code is:

### Begin of function
###  1. Step: Definition of my log density
log(p1(x1|x2,x3,x4)*p2(x2|x3,x4)), assuming values for (a1,a2,a3) and
(b1,b2)
+ log(prod(dnorm(x[1], mean=0.1*x[2]+0.4*x3+0.9*x4), dnorm(x[2],
mean=2*x3-3.1*x4)))}

###  2. Step: Drawing 1000 samples from this density
###  3. Step: replacing the missing values by the sampled values
1000))
}
### End of function


To apply this procedure to every observation (row) with missing data on x1
and x2, I use:
x2=x2, x3=x3, x4=x4))

After this I get the error message

Error in FUN(newX[, i], ...) : unused argument(s) ( ...)


I have no idea about the meaning of this message and where the error is
(contained in the "ifelse"-statement or already in the definiton of
"myfunction"?)

Any help is highly appreciated!!

Best wishes,
Thomas


-------
Thomas M??hlmann
Department of Economics
University of Cologne
Albertus-Magnus Platz
50923 Koeln
Germany
Tel: (0049) +221-4702628
Fax: (0049) +221-4702305
Email: maehlmann at wiso.uni-koeln.de