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

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Fri Jul 9 11:18:29 CEST 2021


Hello,

With the condition for the location it can be estimated like the following.


fit_list2 <- gev_fit_list <- lapply(Ozone_weekly2, gev.fit, ydat = ti, 
mul = c(2, 3), show = FALSE)
mle_params2 <- t(sapply(fit_list2, '[[', 'mle'))
# assign column names
colnames(mle_params2) <- c("location", "scale", "shape", "mul2", "mul3")
head(mle_params2)


Hope this helps,

Rui Barradas

Às 09:53 de 09/07/21, SITI AISYAH ZAKARIA escreveu:
> 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 
> <mailto: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>
>      > <mailto: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>
>      >     <mailto: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>
>     <mailto: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>
>      >     <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>
>      >     <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>
>     <mailto: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>
>      >     <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>
>      >     <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> <http://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 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