2011-08-23 39 views
9

Tôi không hiểu tất cả thuật ngữ bên trong R. Tôi chỉ có 100 số liệu thống kê cấp, cố gắng tìm hiểu thêm.Chức năng phần trăm trong CRAN -R

Tôi đoán R có chức năng phần trăm được tích hợp sẵn có tên là một cái gì đó mà tôi không nhận ra hoặc biết cách tìm kiếm.

Tôi có thể viết của riêng mình, nhưng thay vì sử dụng được xây dựng trong một vì lý do rõ ràng.

Đây là một trong tôi đã viết:

percentile <- function(x) return((x - min(x))/(max(x) - min(x)) 
+2

nếu bạn muốn đặt chức năng này thành một tiện ích để sử dụng chung, bạn có thể xem xét thêm 'na.rm = TRUE' vào các cuộc gọi' min' và 'max' để chức năng hoạt động hợp lý khi có' NA 's trong các dữ liệu –

+2

Phần trăm (hoặc' quantiles' trong R) thực sự là một cái gì đó khác với những gì bạn mô tả trong câu hỏi của bạn. Bạn đang mô tả một vấn đề mở rộng quy mô. Trong bốn câu trả lời vào lúc này, chỉ có câu trả lời của @BenBolker trả lời câu hỏi của bạn. – Andrie

Trả lời

7

Nếu bạn đang tìm kiếm để tìm hiểu percentiles cụ thể từ một tập dữ liệu, hãy nhìn vào các quantile chức năng: ?quantile. Bằng cách nhân với 100, bạn sẽ nhận được phần trăm.

Nếu bạn đang xem xét chuyển đổi số thành phần trăm của chúng, hãy xem rank, mặc dù bạn sẽ cần xác định cách xử lý các mối quan hệ. Bạn có thể chỉ đơn giản là rescale từ xếp hạng để định lượng bằng cách chia cho chiều dài của vector.

+0

Tôi đã thử chức năng định lượng trước khi tôi hỏi câu hỏi của mình. Nó không hoàn toàn là những gì tôi đang tìm kiếm.Đề xuất của bạn để xem chức năng xếp hạng là rất hữu ích. Bởi vì tôi chỉ có thể làm xếp hạng (x)/chiều dài (x), cho kết quả tương tự như hàm phần trăm của tôi. Khéo léo! – freewary

+3

@freewary Tôi rất vui vì bạn đã tìm thấy cách mô tả vấn đề của mình ngắn hơn. Nhưng hãy rất cẩn thận. Có thể có một số trường hợp đặc biệt khi 'rank (x)/length (x)' đưa ra kết quả tương tự như câu hỏi ban đầu của bạn, nhưng đây sẽ là ngoại lệ và kết quả của bạn sẽ khác nhau tùy thuộc vào dữ liệu của bạn. – Andrie

+1

@Andrie đúng - hãy cẩn thận. Xếp hạng là sắc thái như là số lượng. Nếu có quan hệ hoặc NA, có thể có một số bất ngờ. – Iterator

6

Chức năng quantile có thể được những gì bạn đang tìm kiếm. Nếu bạn có vector x và bạn muốn biết ngày 25, 43, và 72 percentiles bạn sẽ thực hiện điều này:

quantile(x, c(.25, .43, .72)); 

Các dấu chấm phẩy là, tất nhiên, không bắt buộc.

Xem http://www.r-tutor.com/elementary-statistics/numerical-measures/percentile

+0

Điều này có thể làm việc cho tôi: quantile (phụ nữ $ chiều cao, (1: chiều dài (phụ nữ $ chiều cao))/chiều dài (phụ nữ $ chiều cao)). Lời giải thích của bạn đã giúp tôi hiểu chức năng. Cảm ơn! – freewary

8

Bạn có thể làm điều này thông qua

scale(x,center=min(x,na.rm=TRUE),scale=diff(range(x,na.rm=TRUE))) 

nhưng tôi không chắc chắn có thực sự là một built-in chức năng mà các nhân rộng bạn đang xin.

+0

+1 Để nhận ra OP không hỏi về phần trăm, nhưng tỷ lệ. – Andrie

+0

Đó là loại câu trả lời là lý do tại sao tôi bắt đầu yêu R. Đó không thực sự là những gì tôi đang tìm kiếm, nhưng nó minh họa rằng R khuyến khích rất nhiều cách để tiếp cận bất kỳ câu hỏi nào. – freewary

2

Bạn có thể tìm kiếm cho các chức năng (hoặc cho bất cứ thứ gì khác) thông qua RSiteSearch ví dụ

RSiteSearch("percentile") 
+0

Cảm ơn bạn đã cho tôi một cách mới để tìm kiếm trợ giúp R. – freewary

0

Trên cơ hội ra bạn đang nghĩ về một phần trăm dựa trên một bản phân phối, đây là một câu trả lời khác nhau. Mỗi phân bố xác suất có một tập hợp gồm 4 hàm liên kết với nó: mật độ, phân bố, định lượng và hàm sinh. Đây là các tiền tố của d-, p-, q-, và r-, tương ứng (với cùng một hậu tố dựa trên phân phối). Bạn có một bản phân phối đồng đều và hỏi về phần trăm (phân phối) để bạn muốn punif. Phải mất minmax làm hai đối số của nó.

+0

> punif (phụ nữ $ chiều cao, 1, chiều dài (phụ nữ $ chiều cao)) [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 không chắc chắn cách thực hiện công việc này. Thêm lời khuyên xin vui lòng. – freewary

+2

Để làm điều này, tôi nghĩ bạn sẽ muốn 'punif (phụ nữ $ height, min (phụ nữ $ height), max (phụ nữ $ height)) '(hoặc' với (phụ nữ, punif (height, min (height), max (height))) ' –

0

Tôi đã thực hiện chức năng chức năng này, hãy kiểm tra. Dữ liệu là bất kỳ vectơ, hàng của bất kỳ khung dữ liệu ma trận o nào.

percentiles<-function(Data) return(quantile(Data, seq(0,1, by=.01))) 
Các vấn đề liên quan