An embedded and charset-unspecified text was scrubbed... Name: not available Url: https://stat.ethz.ch/pipermail/r-help/attachments/20071212/2d726286/attachment.pl
what does cut(data, breaks=n) actually do?
3 messages · melissa cline, Peter Dalgaard, Domenico Vistocco
melissa cline wrote:
Hello, I'm trying to bin a quantity into 2-3 bins for calculating entropy and mutual information. One of the approaches I'm exploring is the cut() function, which is what the mutualInfo function in binDist uses. When it's called in the format cut(data, breaks=n), it somehow splits the data into n distinct bins. Can anyone tell me how cut() decides where to cut?
This is one case where reading the actual R code is easier that
explaining what it does. From cut.default
if (length(breaks) == 1) {
if (is.na(breaks) | breaks < 2)
stop("invalid number of intervals")
nb <- as.integer(breaks + 1)
dx <- diff(rx <- range(x, na.rm = TRUE))
if (dx == 0)
dx <- rx[1]
breaks <- seq.int(rx[1] - dx/1000, rx[2] + dx/1000, length.out = nb)
}
so basically it takes the range, extends it a bit and splits in into
<breaks> equally long segments.
(For the sometimes more attractive option of splitting into groups of
roughly equal size, there is cut2 in the Hmisc package, or use quantile())
O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
cut(data, breaks=n)
splits the data in n bins of (approximately) the same size.
The used size is obtained by:
max(data) - min(data)
------------------------------------
n
> x=rnorm(x)
> cut(x,breaks=3)
[1] (1.79,9.97] (-6.39,1.79] (9.97,18.2] (9.97,18.2] (-6.39,1.79]
[6] (1.79,9.97] (-6.39,1.79] (1.79,9.97] (-6.39,1.79] (-6.39,1.79]
Levels: (-6.39,1.79] (1.79,9.97] (9.97,18.2]
Then you have:
> 18.2-9.97
[1] 8.23
> 9.97-1.79
[1] 8.18
> 1.79+6.39
[1] 8.18
>
> (max(x)-min(x))/3
[1] 8.164187
I don't know the reasons for the little differences (I am wondering about).
I hope it is useful.
domenico
melissa cline wrote:
Hello, I'm trying to bin a quantity into 2-3 bins for calculating entropy and mutual information. One of the approaches I'm exploring is the cut() function, which is what the mutualInfo function in binDist uses. When it's called in the format cut(data, breaks=n), it somehow splits the data into n distinct bins. Can anyone tell me how cut() decides where to cut? Thanks, Melissa --------------------------------------------------------------- Melissa Cline, Independent Investigator MCD Biology, UCSC [[alternative HTML version deleted]]
______________________________________________ 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.