Hi, I have some data that have this behaviour: | |******* | * | * | * | * |---------------- What is the best and simpler way to fit this in R? Thanks Ronaldo -- Ela pilotava um Continenal 2001 com igni????o autom??tica Magiclic... -- |> // | \\ [***********************************] | ( ?? ?? ) [Ronaldo Reis J??nior ] |> V [UFV/DBA-Entomologia ] | / \ [36570-000 Vi??osa - MG ] |> /(.''`.)\ [Fone: 31-3899-4007 ] | /(: :' :)\ [chrysopa at insecta.ufv.br ] |>/ (`. `'` ) \[ICQ#: 5692561 | LinuxUser#: 205366 ] | ( `- ) [***********************************] |>> _/ \_Powered by GNU/Debian Woody/Sarge
You might want to look at the "segmented" package on http://cran.r-project.org and the accompanying paper. Some important questions are: is the point at which the data changes from flat to decreasing known? (I presume not...) Does it correspond to some change in the process being measured? Do you want to estimate it? Reid Huntsinger -----Original Message----- From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Ronaldo Reis-Jr. Sent: Friday, September 09, 2005 1:55 PM To: R-Help Subject: [R] best way to fit a model Hi, I have some data that have this behaviour: | |******* | * | * | * | * |---------------- What is the best and simpler way to fit this in R? Thanks Ronaldo -- Ela pilotava um Continenal 2001 com igni????o autom??tica Magiclic... -- |> // | \\ [***********************************] | ( ?? ?? ) [Ronaldo Reis J??nior ] |> V [UFV/DBA-Entomologia ] | / \ [36570-000 Vi??osa - MG ] |> /(.''`.)\ [Fone: 31-3899-4007 ] | /(: :' :)\ [chrysopa at insecta.ufv.br ] |>/ (`. `'` ) \[ICQ#: 5692561 | LinuxUser#: 205366 ] | ( `- ) [***********************************] |>> _/ \_Powered by GNU/Debian Woody/Sarge ______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
On Fri, 9 Sep 2005 14:55:04 -0300 Ronaldo Reis-Jr. wrote:> Hi, > > I have some data that have this behaviour: > > | > |******* > | * > | * > | * > | * > |---------------- > > What is the best and simpler way to fit this in R?If the changepoint is known, then this is straightforward using lm: ## generate example data set.seed(20050909) x <- seq(0, 10, by = 0.25) y.mean <- ifelse(x >= 5, x, 5) y <- y.mean + rnorm(41) plot(y ~ x) lines(y.mean ~ x) ## fit linear model with break fm <- lm(y ~ I((x-5) * (x >= 5))) fm y.fit1 <- fitted(fm) lines(y.fit1 ~ x, col = 2) If it is unknown, it can be estimated using Vito Muggeo's segmented package: ## estimate change point in x library("segmented") sfm <- segmented(lm(y ~ x), x, 6) sfm y.fit2 <- fitted(sfm) lines(y.fit2 ~ x, col = 3) This fits a continuous mean function. Alternatively, breakpoints() in strucchange can be used to estimate a break point: ## estimate break point in x library("strucchange") bp <- breakpoints(y ~ x) summary(bp) y.fit3 <- fitted(bp) lines(y.fit3 ~ x, col = 4) This does not enforce that the line is continuous, hence the jump in the fitted mean. Of course, the estimated breakpoint could be used to fit a continuous line model, but this is not what is optimized in breakpoints(). Z> Thanks > Ronaldo > -- > Ela pilotava um Continenal 2001 com igni????o autom??tica Magiclic... > -- > |> // | \\ [***********************************] > | ( ?? ?? ) [Ronaldo Reis J??nior ] > |> V [UFV/DBA-Entomologia ] > | / \ [36570-000 Vi??osa - MG ] > |> /(.''`.)\ [Fone: 31-3899-4007 ] > | /(: :' :)\ [chrysopa at insecta.ufv.br ] > |>/ (`. `'` ) \[ICQ#: 5692561 | LinuxUser#: 205366 ] > | ( `- ) [***********************************] > |>> _/ \_Powered by GNU/Debian Woody/Sarge > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html >