[R] How to estimate the parameter for many variable?
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Fri Jul 9 08:38:00 CEST 2021
Hello,
The following lapply one-liner fits a GEV to each column vector, there
is no need for the double for loop. There's also no need to create a
data set x.
library(ismev)
library(mgcv)
library(EnvStats)
Ozone_weekly2 <- read.table("~/tmp/Ozone_weekly2.txt", header = TRUE)
# fit a GEV to each column
gev_fit_list <- lapply(Ozone_weekly2, gev.fit, show = FALSE)
# extract the parameters MLE estimates
mle_params <- t(sapply(gev_fit_list, '[[', 'mle'))
# assign column names
colnames(mle_params) <- c("location", "scale", "shape")
# see first few rows
head(mle_params)
The OP doesn't ask for plots but, here they go.
y_vals <- function(x, params){
loc <- params[1]
scale <- params[2]
shape <- params[3]
EnvStats::dgevd(x, loc, scale, shape)
}
plot_fit <- function(data, vec, verbose = FALSE){
fit <- gev.fit(data[[vec]], show = verbose)
x <- sort(data[[vec]])
hist(x, freq = FALSE)
lines(x, y_vals(x, params = fit$mle))
}
# seems a good fit
plot_fit(Ozone_weekly2, 1) # column number
plot_fit(Ozone_weekly2, "CA01") # col name, equivalent
# the data seems gaussian, not a good fit
plot_fit(Ozone_weekly2, 4) # column number
plot_fit(Ozone_weekly2, "CA08") # col name, equivalent
Hope this helps,
Rui Barradas
Às 00:59 de 09/07/21, SITI AISYAH ZAKARIA escreveu:
> Dear all,
>
> Thank you very much for the feedback.
>
> Sorry for the lack of information about this problem.
>
> Here, I explain again.
>
> I use this package to run my coding.
>
> library(ismev)
> library(mgcv)
> library(nlme)
>
> The purpose of this is I want to get the value of parameter estimation
> using MLE by applying the GEV distribution.
>
> x <- data.matrix(Ozone_weekly2) x refers to my data
> that consists of 19 variables. I will attach the data together.
> x
> head(gev.fit)[1:4]
> ti = matrix(ncol = 3, nrow = 888)
> ti[,1] = seq(1, 888, 1)
> ti[,2]=sin(2*pi*(ti[,1])/52)
> ti[,3]=cos(2*pi*(ti[,1])/52)
>
> /for(i in 1:nrow(x))
> + { for(j in 1:ncol(x)) the problem in
> here, i don't no to create the coding. i target my output will come out
> in matrix that
> + {x[i,j] = 1}} show the
> parameter estimation for 19 variable which have 19 row and 3 column/
> / row --
> refer to variable (station) ; column -- refer to parameter estimation
> for GEV distribution
>
> /thank you.
>
> On Thu, 8 Jul 2021 at 18:40, Rui Barradas <ruipbarradas using sapo.pt
> <mailto:ruipbarradas using sapo.pt>> wrote:
>
> Hello,
>
> Also, in the code
>
> x <- data.matrix(Ozone_weekly)
>
> [...omited...]
>
> for(i in 1:nrow(x))
> + { for(j in 1:ncol(x))
> + {x[i,j] = 1}}
>
> not only you rewrite x but the double for loop is equivalent to
>
>
> x[] <- 1
>
>
> courtesy R's vectorised behavior. (The square parenthesis are needed to
> keep the dimensions, the matrix form.)
> And, I'm not sure but isn't
>
> head(gev.fit)[1:4]
>
> equivalent to
>
> head(gev.fit, n = 4)
>
> ?
>
> Like Jim says, we need more information, can you post Ozone_weekly2 and
> the code that produced gev.fit? But in the mean time you can revise
> your
> code.
>
> Hope this helps,
>
> Rui Barradas
>
>
> Às 11:08 de 08/07/21, Jim Lemon escreveu:
> > Hi Siti,
> > I think we need a bit more information to respond helpfully. I
> have no
> > idea what "Ozone_weekly2" is and Google is also ignorant.
> "gev.fit" is
> > also unknown. The name suggests that it is the output of some
> > regression or similar. What function produced it, and from what
> > library? "ti" is known as you have defined it. However, I don't know
> > what you want to do with it. Finally, as this is a text mailing list,
> > we don't get any highlighting, so the text to which you refer cannot
> > be identified. I can see you have a problem, but cannot offer any
> help
> > right now.
> >
> > Jim
> >
> > On Thu, Jul 8, 2021 at 12:06 AM SITI AISYAH ZAKARIA
> > <aisyahzakaria using unimap.edu.my
> <mailto:aisyahzakaria using unimap.edu.my>> wrote:
> >>
> >> Dear all,
> >>
> >> Can I ask something about programming in marginal distribution
> for spatial
> >> extreme?
> >> I really stuck on my coding to obtain the parameter estimation for
> >> univariate or marginal distribution for new model in spatial
> extreme.
> >>
> >> I want to run my data in order to get the parameter estimation
> value for 25
> >> stations in one table. But I really didn't get the idea of the
> correct
> >> coding. Here I attached my coding
> >>
> >> x <- data.matrix(Ozone_weekly2)
> >> x
> >> head(gev.fit)[1:4]
> >> ti = matrix(ncol = 3, nrow = 888)
> >> ti[,1] = seq(1, 888, 1)
> >> ti[,2]=sin(2*pi*(ti[,1])/52)
> >> ti[,3]=cos(2*pi*(ti[,1])/52)
> >> for(i in 1:nrow(x))
> >> + { for(j in 1:ncol(x))
> >> + {x[i,j] = 1}}
> >>
> >> My problem is highlighted in red color.
> >> And if are not hesitate to all. Can someone share with me the
> procedure,
> >> how can I map my data using spatial extreme.
> >> For example:
> >> After I finish my marginal distribution, what the next
> procedure. It is I
> >> need to get the spatial independent value.
> >>
> >> That's all
> >> Thank you.
> >>
> >> --
> >>
> >>
> >>
> >>
> >>
> >> "..Millions of trees are used to make papers, only to be thrown away
> >> after a couple of minutes reading from them. Our planet is at
> stake. Please
> >> be considerate. THINK TWICE BEFORE PRINTING THIS.."
> >>
> >> DISCLAIMER: This email \ and any files transmitte...{{dropped:24}}
> >>
> >> ______________________________________________
> >> R-help using r-project.org <mailto:R-help using r-project.org> mailing list
> -- To UNSUBSCRIBE and more, see
> >> https://stat.ethz.ch/mailman/listinfo/r-help
> <https://stat.ethz.ch/mailman/listinfo/r-help>
> >> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> <http://www.R-project.org/posting-guide.html>
> >> and provide commented, minimal, self-contained, reproducible code.
> >
> > ______________________________________________
> > R-help using r-project.org <mailto:R-help using r-project.org> mailing list
> -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> <https://stat.ethz.ch/mailman/listinfo/r-help>
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> <http://www.R-project.org/posting-guide.html>
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
>
>
> "..Millions of trees are used to make papers, only to be thrown away
> after a couple of minutes reading from them. Our planet is at stake.
> Please be considerate. THINK TWICE BEFORE PRINTING THIS.."
>
> *DISCLAIMER:* This email and any files transmitted with it are
> confidential and intended solely for the use of the individual orentity
> to whom they are addressed. If you have received this email in error
> please notify the UniMAP's Email Administrator. Please note that any
> views or opinions presented in this email are solely those of the author
> and do not necessarily represent those of the university. Finally, the
> recipient should check this email and any attachments for the presence
> of viruses.The university accepts no liability for any damage caused by
> any virus transmitted by this email.
>
> Universiti Malaysia Perlis (UniMAP) | Digital Management & Development
> Centre (DMDC), Universiti Malaysia Perlis (UniMAP), Pauh Putra Campus,
> 02600 Arau, Perlis, MALAYSIA | www.unimap.edu.my <http://www.unimap.edu.my/>
>
More information about the R-help
mailing list