Paul Menzel
2011-Aug-02 21:27 UTC
[R] How to find the parameter of a power function to fit simulation data to it for the tail?
Dear R folks, having simulation data in a vector n2off, I know that they should be similar to a power function f [1], f(n) = n^(-1/r), r ? ?\{0}, and I want to find the value for r best fitting the simulation data. Furthermore I know that this is only true for big n, that means n2off(n) ~ f(n) ? n2off(n)/f(n) ? 1 for n ? ?. (The vector n2off is considered a function n2off(n).) I came up with the following example where I artificially munch(?) the values of a known function, n^(-?), and the fit should hopefully return r = 2, that means n^(-?). > n <- 1:10 # Should be more data points, but not useful for including into an email. > n [1] 1 2 3 4 5 6 7 8 9 10 > n2 <- n**(-0.5) > n2 [1] 1.0000000 0.7071068 0.5773503 0.5000000 0.4472136 0.4082483 0.3779645 [8] 0.3535534 0.3333333 0.3162278 > set.seed(1); n2off <- n2 + runif(1)/100 # for greater n the divisor should also be increased I guess. > n2off [1] 1.0026551 0.7097619 0.5800054 0.5026551 0.4498687 0.4109034 0.3806196 [8] 0.3562085 0.3359884 0.3188829 Weighting fits(?) larger n higher or only from certain n on, for example n ? 100, is not considered in this example. And probably the data points are too small in this function. I have to admit that I am new to this topic and I am just overwhelmed what I have found when searching for ?gafit? in the r-help archive [2] and ?curve parameter fitting? in rseek.org [3]. Reading ?nlm, ?nlminb, ?opitimze and ?optim there are just too many options there. Reading about gafit [4] it says that it is not maintained. Additionally I am not sure if this could be turned into a linear model using log(n^(-1/r)) = -1/r log(n). Somewhere it said that linear regression models have to fulfill certain assumptions. So if somebody of you experienced users could point me to the ?best? function or package to use here and some literature regarding this issue (fit only for big n) that would be much appreciated. Thank you in advance, Paul PS: Is that question too long for sending to the list and should I be less elaborate for further problems? [1] https://secure.wikimedia.org/wikipedia/en/wiki/Power_function [2] http://tolstoy.newcastle.edu.au/~rking/R/ [3] http://www.rseek.org/ [4] http://cran.r-project.org/web/packages/gafit/gafit.pdf -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110802/c469e6b0/attachment.bin>
David Winsemius
2011-Aug-03 00:14 UTC
[R] How to find the parameter of a power function to fit simulation data to it for the tail?
From a search at Barons site with "fitting distribution truncated power" http://finzi.psych.upenn.edu/R/library/brainwaver/html/fitting.html http://finzi.psych.upenn.edu/R/library/gamlss/doc/gamlss-manual.pdf http://finzi.psych.upenn.edu/R/library/bipartite/html/degreedistr.html http://finzi.psych.upenn.edu/R/Rhelp02a/archive/90168.html -- David. On Aug 2, 2011, at 5:27 PM, Paul Menzel wrote:> Dear R folks, > > > having simulation data in a vector n2off, I know that they should be > similar to a power function f [1], f(n) = n^(-1/r), r ? ?\{0}, > and I > want to find the value for r best fitting the simulation data. > Furthermore I know that this is only true for big n, that means > n2off(n) > ~ f(n) ? n2off(n)/f(n) ? 1 for n ? ?. (The vector n2off is > considered a > function n2off(n).) > > I came up with the following example where I artificially munch(?) the > values of a known function, n^(-?), and the fit should hopefully > return > r = 2, that means n^(-?). > >> n <- 1:10 # Should be more data points, but not useful for >> including into an email. >> n > [1] 1 2 3 4 5 6 7 8 9 10 >> n2 <- n**(-0.5) >> n2 > [1] 1.0000000 0.7071068 0.5773503 0.5000000 0.4472136 > 0.4082483 0.3779645 > [8] 0.3535534 0.3333333 0.3162278 >> set.seed(1); n2off <- n2 + runif(1)/100 # for greater n the divisor >> should also be increased I guess. >> n2off > [1] 1.0026551 0.7097619 0.5800054 0.5026551 0.4498687 > 0.4109034 0.3806196 > [8] 0.3562085 0.3359884 0.3188829 > > Weighting fits(?) larger n higher or only from certain n on, for > example > n ? 100, is not considered in this example. And probably the data > points > are too small in this function. > > I have to admit that I am new to this topic and I am just overwhelmed > what I have found when searching for ?gafit? in the r-help archive > [2] > and ?curve parameter fitting? in rseek.org [3]. > > Reading ?nlm, ?nlminb, ?opitimze and ?optim there are just too many > options there. Reading about gafit [4] it says that it is not > maintained. > > Additionally I am not sure if this could be turned into a linear model > using log(n^(-1/r)) = -1/r log(n). Somewhere it said that linear > regression models have to fulfill certain assumptions. > > So if somebody of you experienced users could point me to the > ?best? > function or package to use here and some literature regarding this > issue > (fit only for big n) that would be much appreciated. > > > Thank you in advance, > > Paul > > > PS: Is that question too long for sending to the list and should I be > less elaborate for further problems? > > > [1] https://secure.wikimedia.org/wikipedia/en/wiki/Power_function > [2] http://tolstoy.newcastle.edu.au/~rking/R/ > [3] http://www.rseek.org/ > [4] http://cran.r-project.org/web/packages/gafit/gafit.pdf > ______________________________________________ > 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.David Winsemius, MD West Hartford, CT