
Hi Scott,
 
Thanks for this.
 
Got some questions below: 
 
Thanks
 
Hugh
 


Date: Mon, 23 May 2011 17:32:52 -0500
From: scttchamberlain4@gmail.com
To: h_a_patience@hotmail.com
CC: r-help@r-project.org
Subject: Re: [R] Reading Data from mle into excel?



I would read the datasets into a list first, something like this which will make a list of dataframes:
filenames <- dir() # where only filenames you want to read in are in this directory 
dataframelist <- lapply(filenames, read.csv, header = TRUE, sep = ",")


OK I tried the code you suggest and I get:
 
 filenames<-dir("C:/Documents and Settings/Hugh/My Documents/PhD/Swaption vols.csv")
> dataframelist<-lapply(filenames, read.csv, header = TRUE, sep = ",")
> 
> dataframelist
list()
> list
function (...)  .Primitive("list")

Is this correct?
 
I only actually need one file, all the time series are stored in seperate columns.
 
vols=read.csv(file="C:/Documents and Settings/Hugh/My Documents/PhD/Swaption vols.csv" 
, header=TRUE, sep=",")
X<-ts(vols[,2])

Can I still use this format?





You should be able to put the whole procedure, after reading in dataframes, into one lapply perhaps, e.g., 


lapply(dataframelist, yourfunction)
 
 
 
 
as for my function the function mle involves calls to other functions?
 
dcOU<-function(x,t,x0,theta,log=FALSE){
Ex<-theta[1]/theta[2]+(x0-theta[1]/theta[2])*exp(-theta[2]*t)
Vx<-theta[3]^2*(1-exp(-2*theta[2]*t))/(2*theta[2])
dnorm(x,mean=Ex,sd=sqrt(Vx),log=log)
}
OU.lik<-function(theta1,theta2,theta3){
n<-length(X)
dt<-deltat(X)
-sum(dcOU(X[2:n],dt,X[1:(n-1)],c(theta1,theta2,theta3),log=TRUE))
}
require(stats4)
require(sde)
set.seed(1)
#X<-sde.sim(model="OU",theta=c(3,1,2),N=10000,delta=1)
mle(OU.lik,start=list(theta1=1,theta2=1,theta3=1),
method="L-BFGS-B",lower=c(-Inf,-Inf,-Inf),upper=c(Inf,Inf,Inf))->fit
summary(fit)
 
 
 
Should I store each function is a seperate script?
If so how do I then make sure that they are available in the "workspace"?
 
Assuming that vols contains the dataframelist who would I call the mle function using lapply like you showed?
 
 
 
 
 
 


where dataframelist is a list of dataframes, and yourfunction is a function that does all the procedures for one dataset. The function 'yourfunction' will be applied to each dataset in the list separately, then the results output into a list. 


Then, if the results from each dataset will have the same dimensions, you can do something like ldply using package plyr 
ldply(output, 'identity') # where 'output' is the output list of results from the lapply call above
This will give you a  data frame of all the results. 







Scott Chamberlain
Rice University, EEB Dept.
On Monday, May 23, 2011 at 4:32 PM, Bazman76 wrote:


Hi there,

I ran the following code:

vols=read.csv(file="C:/Documents and Settings/Hugh/My Documents/PhD/Swaption
vols.csv" 
, header=TRUE, sep=",")
X<-ts(vols[,2])
#X


dcOU<-function(x,t,x0,theta,log=FALSE){
Ex<-theta[1]/theta[2]+(x0-theta[1]/theta[2])*exp(-theta[2]*t)
Vx<-theta[3]^2*(1-exp(-2*theta[2]*t))/(2*theta[2])
dnorm(x,mean=Ex,sd=sqrt(Vx),log=log)
}
OU.lik<-function(theta1,theta2,theta3){
n<-length(X)
dt<-deltat(X)
-sum(dcOU(X[2:n],dt,X[1:(n-1)],c(theta1,theta2,theta3),log=TRUE))
}

require(stats4)
require(sde)
set.seed(1)
#X<-sde.sim(model="OU",theta=c(3,1,2),N=10000,delta=1)
mle(OU.lik,start=list(theta1=1,theta2=1,theta3=1),
method="L-BFGS-B",lower=c(-Inf,-Inf,-Inf),upper=c(Inf,Inf,Inf))->fit
summary(fit)

#ex3.01 R
prof<-profile(fit)
par(mfrow=c(1,3))
plot(prof)
par(mfrow=c(1,1))
vcov(fit)

I run the code above and I get:



summary(fit)
Maximum likelihood estimation

Call:
mle(minuslogl = OU.lik, start = list(theta1 = 1, theta2 = 1, 
theta3 = 1), method = "L-BFGS-B", lower = c(-Inf, -Inf, -Inf), 
upper = c(Inf, Inf, Inf))

Coefficients:
Estimate Std. Error
theta1 0.03595581 0.013929892
theta2 4.30910365 1.663781710
theta3 0.02120220 0.004067477

-2 log L: -5136.327 

I need to run the same analysis for 40 different time series.

I want to be able to collate all the estimates of theta and the associated
stadard errors and then transfer them into excel?

Can someone please point me to some R code that will allow me to do this?

Thanks



--
View this message in context: http://r.789695.n4.nabble.com/Reading-Data-from-mle-into-excel-tp3545569p3545569.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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]]

