Re: [R] Reading Data from mle into excel?

From: Hugh Patience <h_a_patience_at_hotmail.com>
Date: Mon, 23 May 2011 22:53:20 +0000

Hi Scott,  

Thanks for this.  

Got some questions below:  

Thanks  

Hugh  

Date: Mon, 23 May 2011 17:32:52 -0500
From: scttchamberlain4_at_gmail.com
To: h_a_patience_at_hotmail.com
CC: r-help_at_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_at_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]]

______________________________________________
R-help_at_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.
Received on Tue 24 May 2011 - 04:16:45 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 24 May 2011 - 04:20:09 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive