Santiago Guallar
2013-Feb-19 14:49 UTC
[R] Cramer von Mises test for a discrete distribution
Hi, ? I'm trying to carry out Cramer von Mises tests between pairs of vectors belonging to a discrete distribution (concretely frequencies from 0 to 200). However, the program crashes in the attempt. The problem seems to be that these vectors only have positive integer numbers (+ zero). When I add a random very small positive decimal to the non-decimal part everything works fine (files prm1 & prpmr1). I attach two of these vectors so you can run the following code. I've also thought to divide both vectors by a real constant such as pi. Do you think these two approaches are acceptable? ? setwd("") require(CvM2SL2Test) prm = scan('prm.txt') prpmr = scan('prpmr.txt') ct1 = cvmts.test(prm, prpmr) # here R crashes ct1 cvmts.pval( ct1, length(prm), length(prpmr) ) ? ? Thank you for your help, ? Santi -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: prm.txt URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130219/a543b86c/attachment.txt> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: prpmr.txt URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130219/a543b86c/attachment-0001.txt> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: prm1.txt URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130219/a543b86c/attachment-0002.txt> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: prpmr1.txt URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130219/a543b86c/attachment-0003.txt>
Barry Rowlingson
2013-Feb-19 17:20 UTC
[R] Cramer von Mises test for a discrete distribution
On Tue, Feb 19, 2013 at 2:49 PM, Santiago Guallar <sguallar at yahoo.com> wrote:> Hi, > > I'm trying to carry out Cramer von Mises tests between pairs of vectors belonging to a discrete distribution (concretely frequencies from 0 to 200). However, the program crashes in the attempt. The problem seems to be that these vectors only have positive integer numbers (+ zero). When I add a random very small positive decimal to the non-decimal part everything works fine (files prm1 & prpmr1). I attach two of these vectors so you can run the following code. I've also thought to divide both vectors by a real constant such as pi. Do you think these two approaches are acceptable?> > setwd("") > require(CvM2SL2Test) > prm = scan('prm.txt') > prpmr = scan('prpmr.txt') > ct1 = cvmts.test(prm, prpmr) # here R crashes For you maybe. For me, works fine, and: > ct1 [1] 30.20509 > cvmts.pval( ct1, length(prm), length(prpmr) ) - this is taking a bit longer. I gave up and killed it. Maybe it would have eventually "crashed R", but you said the other function call crashed R. Your two mistakes are: 1. Saying "R crashes" without showing us any kind of crash report or error message. 2. Not listing your system and package versions. Ah, your three mistakes are... 3. Not reading http://www.r-project.org/posting-guide.html Barry
Barry Rowlingson
2013-Feb-20 12:36 UTC
[R] Cramer von Mises test for a discrete distribution
On Wed, Feb 20, 2013 at 10:03 AM, Santiago Guallar <sguallar at yahoo.com> wrote:> Thanks Barry, > > Following your list order > 1) It pops up a window saying R for windows GUI front-end crashed. Below > three options: look for on-line solutions; shut down the program; debug the > program (I'm translating from Spanish)That's good - often people say "crash" when all they have seen is a "stop" from R.> 2) The processor of my laptop is an Intel Core duo 1,60GHz with ram= 4 GB, > 32 bits. The R version I have installed is 2.15.2 (2012-10-26)Nicely up to date...> 3) I read the posting-guide. Ok, it may be basic statistics. Question > withdrawnOh don't do that! You're not asking how to do basic statistics, you are trying to do it yourself and getting a crash. Fair question for starters...> I made an additional mistake: I attached the wrong files. Please run the > code with these, and you'll see the problem.Will I, will I, will I....> ct1 = cvmts.test(prm, prpmr) # here R crashes*** caught segfault *** address 0x5620e458, cause 'memory not mapped' Traceback: 1: .C("CvMTestStat", as.double(x), as.integer(length(x)), as.double(y), as.integer(length(y)), testscore = double(1)) 2: cvmts.test(prm, prpmr) Possible actions: 1: abort (with core dump, if enabled) 2: normal R exit 3: exit R without saving workspace 4: exit R saving workspace Selection: Yes! This looks like a bug in that package function, a bit of investigation seems to blame it on when you have repeated values in the vectors:> cvmts.test(1:10,1:10)[1] 0.025> cvmts.test(rep(1,10),rep(1,10))[1] 0.955> cvmts.test(rep(1,10),rep(2,10))*** caught segfault *** address 0x514daba8, cause 'memory not mapped' Traceback: 1: .C("CvMTestStat", as.double(x), as.integer(length(x)), as.double(y), as.integer(length(y)), testscore = double(1)) 2: cvmts.test(rep(1, 10), rep(2, 10)) Possible actions: 1: abort (with core dump, if enabled) 2: normal R exit 3: exit R without saving workspace 4: exit R saving workspace Functions shouldn't crash like this - so time for you to email the maintainer:> packageDescription("CvM2SL2Test")$Maintainer[1] "Yuanhui Xiao <yxiao at gsu.edu>" The function disappears into C code, but I suspect its dividing by zero somewhere... Barry