Re: [R] Questions regarding integrate function

2006-11-22 Thread Le Wang
A follow-up. Thanks to Matthias, the codes worked very well.

Le

 On 11/18/06, Matthias Kohl [EMAIL PROTECTED] wrote:
  Hello,
 
  your integrand needs to be a function which accepts a numeric vector as
  first argument and returns a vector of the same length (see ?integrate).
  Your function does not fulfill this requirement. Hence, you have to
  rewrite your function or use sapply, apply or friends; something like
 
  newintegrand - function(x) sapply(x, integrand)
 
  By the way you use a very old R version and I would recommend to update
  to R 2.4.0.
 
  hth
  Matthias
 
  Le Wang schrieb:
 
  Hi there. Thanks for your time in advance.
  
  I am using R 2.2.0 and OS: Windows XP.
  
  My final goal is to calculate 1/2*integral of
  (f1(x)^1/2-f2(x)^(1/2))^2dx (Latex codes:
  $\frac{1}{2}\int^{{\infty}}_{\infty}
  (\sqrt{f_1(x)}-\sqrt{f_2(x)})^2dx $.) where f1(x) and f2(x) are two
  marginal densities.
  
  My problem:
  
  I have the following R codes using adapt package. Although adapt
  function is mainly designed for more than 2 dimensions, the manual
  says it will also call up integrate if the number of dimension
  equals one. I feed in the data x1 and x2 and bandwidths h1 and h2.
  These codes worked well when my final goal was to take double
  integrals.
  
 integrand - function(x) {
 # x input is evaluation point for x1 and x2, a 2x1 vector
 x1.eval - x[1]
 x2.eval - x[2]
 # n is the number of observations
 n - length(x1)
 # x1 and x2 are the vectors read from data.dat
 # Compute the marginal densities
 f.x1 - sum(dnorm((x1.eval-x1)/h1))/(n*h1)
 f.x2 - sum(dnorm((x2.eval-x2)/h2))/(n*h2)
 # Return the integrand #
 return((sqrt(f.x1)-sqrt(f.x2))**2)
  
 }
  
 estimate-0.5*adapt(1, lo=lo.default, up=up.default,
 minpts=minpts.default, maxpts=maxpts.default,
 functn=integrand, eps=eps.default, x1, x2,h1,h2)$value
  
  
  But when I used it for one-dimension, it failed. Some of my
  colleagues suggested getting rid of x2.eval in the integrand
  because it is only one integral. But after I changed it, it still
  didn't work. R gave the error msg: evaluation of function gave a
  result of wrong length
  
  I am not a frequent R user..although I looked up the mailing list
  for a while and there were few postings asking similar questions, I
  can't still figure out why my codes won't work. Any help will be
  appreciated.
  
  Le
  -
  ~~
  Le Wang, Ph.D
  Population Center
  University of Minnesota
  
  __
  R-help@stat.math.ethz.ch 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.
  
  
 
 
  --
  Dr. rer. nat. Matthias Kohl
  E-Mail: [EMAIL PROTECTED]
  Home: www.stamats.de
 
-- 
~~
Le Wang, Ph.D
Population Center
University of Minnesota

__
R-help@stat.math.ethz.ch 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.


[R] Questions regarding integrate function

2006-11-18 Thread Le Wang
Hi there. Thanks for your time in advance.

I am using R 2.2.0 and OS: Windows XP.

My final goal is to calculate 1/2*integral of
(f1(x)^1/2-f2(x)^(1/2))^2dx (Latex codes:
$\frac{1}{2}\int^{{\infty}}_{\infty}
(\sqrt{f_1(x)}-\sqrt{f_2(x)})^2dx $.) where f1(x) and f2(x) are two
marginal densities.

My problem:

I have the following R codes using adapt package. Although adapt
function is mainly designed for more than 2 dimensions, the manual
says it will also call up integrate if the number of dimension
equals one. I feed in the data x1 and x2 and bandwidths h1 and h2.
These codes worked well when my final goal was to take double
integrals.

   integrand - function(x) {
   # x input is evaluation point for x1 and x2, a 2x1 vector
   x1.eval - x[1]
   x2.eval - x[2]
   # n is the number of observations
   n - length(x1)
   # x1 and x2 are the vectors read from data.dat
   # Compute the marginal densities
   f.x1 - sum(dnorm((x1.eval-x1)/h1))/(n*h1)
   f.x2 - sum(dnorm((x2.eval-x2)/h2))/(n*h2)
   # Return the integrand #
   return((sqrt(f.x1)-sqrt(f.x2))**2)

   }

   estimate-0.5*adapt(1, lo=lo.default, up=up.default,
   minpts=minpts.default, maxpts=maxpts.default,
   functn=integrand, eps=eps.default, x1, x2,h1,h2)$value


But when I used it for one-dimension, it failed. Some of my
colleagues suggested getting rid of x2.eval in the integrand
because it is only one integral. But after I changed it, it still
didn't work. R gave the error msg: evaluation of function gave a
result of wrong length

I am not a frequent R user..although I looked up the mailing list
for a while and there were few postings asking similar questions, I
can't still figure out why my codes won't work. Any help will be
appreciated.

Le
-
~~
Le Wang, Ph.D
Population Center
University of Minnesota

__
R-help@stat.math.ethz.ch 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.


Re: [R] Questions regarding integrate function

2006-11-18 Thread Matthias Kohl
Hello,

your integrand needs to be a function which accepts a numeric vector as 
first argument and returns a vector of the same length (see ?integrate). 
Your function does not fulfill this requirement. Hence, you have to 
rewrite your function or use sapply, apply or friends; something like

newintegrand - function(x) sapply(x, integrand)

By the way you use a very old R version and I would recommend to update 
to R 2.4.0.

hth
Matthias

Le Wang schrieb:

Hi there. Thanks for your time in advance.

I am using R 2.2.0 and OS: Windows XP.

My final goal is to calculate 1/2*integral of
(f1(x)^1/2-f2(x)^(1/2))^2dx (Latex codes:
$\frac{1}{2}\int^{{\infty}}_{\infty}
(\sqrt{f_1(x)}-\sqrt{f_2(x)})^2dx $.) where f1(x) and f2(x) are two
marginal densities.

My problem:

I have the following R codes using adapt package. Although adapt
function is mainly designed for more than 2 dimensions, the manual
says it will also call up integrate if the number of dimension
equals one. I feed in the data x1 and x2 and bandwidths h1 and h2.
These codes worked well when my final goal was to take double
integrals.

   integrand - function(x) {
   # x input is evaluation point for x1 and x2, a 2x1 vector
   x1.eval - x[1]
   x2.eval - x[2]
   # n is the number of observations
   n - length(x1)
   # x1 and x2 are the vectors read from data.dat
   # Compute the marginal densities
   f.x1 - sum(dnorm((x1.eval-x1)/h1))/(n*h1)
   f.x2 - sum(dnorm((x2.eval-x2)/h2))/(n*h2)
   # Return the integrand #
   return((sqrt(f.x1)-sqrt(f.x2))**2)

   }

   estimate-0.5*adapt(1, lo=lo.default, up=up.default,
   minpts=minpts.default, maxpts=maxpts.default,
   functn=integrand, eps=eps.default, x1, x2,h1,h2)$value


But when I used it for one-dimension, it failed. Some of my
colleagues suggested getting rid of x2.eval in the integrand
because it is only one integral. But after I changed it, it still
didn't work. R gave the error msg: evaluation of function gave a
result of wrong length

I am not a frequent R user..although I looked up the mailing list
for a while and there were few postings asking similar questions, I
can't still figure out why my codes won't work. Any help will be
appreciated.

Le
-
~~
Le Wang, Ph.D
Population Center
University of Minnesota

__
R-help@stat.math.ethz.ch 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.
  



-- 
Dr. rer. nat. Matthias Kohl
E-Mail: [EMAIL PROTECTED]
Home: www.stamats.de

__
R-help@stat.math.ethz.ch 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.


[R] questions regarding integrate function in R

2006-11-17 Thread Le Wang
Hi there. Thanks for your time in advance.

My final goal is to calculate 1/2*integral of
(f1(x)^1/2-f2(x)^(1/2))^2dx (Latex codes:
$\frac{1}{2}\int^{{\infty}}_{\infty}
(\sqrt{f_1(x)}-\sqrt{f_2(x)})^2dx $.) where f1(x) and f2(x) are two
marginal densities.

My problem:

I have the following R codes using adapt package. Although adapt
function is mainly designed for more than 2 dimensions, the manual
says it will also call up integrate if the number of dimension
equals one. I feed in the data x1 and x2 and bandwidths h1 and h2.
These codes worked well when my final goal was to take double
integrals.

integrand - function(x) {
# x input is evaluation point for x1 and x2, a 2x1 vector
x1.eval - x[1]
x2.eval - x[2]
# n is the number of observations
n - length(x1)
# x1 and x2 are the vectors read from data.dat
# Compute the marginal densities
f.x1 - sum(dnorm((x1.eval-x1)/h1))/(n*h1)
f.x2 - sum(dnorm((x2.eval-x2)/h2))/(n*h2)
# Return the integrand #
return((sqrt(f.x1)-sqrt(f.x2))**2)

}

estimate-0.5*adapt(1, lo=lo.default, up=up.default,
minpts=minpts.default, maxpts=maxpts.default,
functn=integrand, eps=eps.default, x1, x2,h1,h2)$value


But when I used it for one-dimension, it failed. Some of my
colleagues suggested getting rid of x2.eval in the integrand
because it is only one integral. But after I changed it, it still
didn't work. R gave the error msg: evaluation of function gave a
result of wrong length

I am not a frequent R user..although I looked up the mailing list
for a while and there were few postings asking similar questions, I
can't still figure out why my codes won't work. Any help will be
appreciated.

__
R-help@stat.math.ethz.ch 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.