[R] How to estimate the parameter for many variable?

SITI AISYAH ZAKARIA @|@y@hz@k@r|@ @end|ng |rom un|m@p@edu@my
Fri Jul 9 10:53:14 CEST 2021


Dear Rui ang Jim,

Thank you very much.

Thank you Rui Barradas, I already tried using your coding and I'm grateful
I got the answer.

ok now, I have some condition on the location parameter which is cyclic
condition.

So, I will add another 2 variables for the column.

and the condition for location is this one.

 ti[,1] = seq(1, 888, 1)
  ti[,2]=sin(2*pi*(ti[,1])/52)
  ti[,3]=cos(2*pi*(ti[,1])/52)
  fit0<-gev.fit(x[,i], ydat = ti, mul=c(2, 3))

Thank you again.

On Fri, 9 Jul 2021 at 14:38, Rui Barradas <ruipbarradas using sapo.pt> wrote:

> 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/>
> >
>

-- 





"..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}}



More information about the R-help mailing list