Tôi hy vọng sẽ có cái nhìn sâu sắc hơn về bốn loại xiên từ cộng đồng này.
Các loại tôi đề cập đến được đề cập trong trang trợ giúp http://www.inside-r.org/packages/cran/e1071/docs/skewness .
Phương pháp cũ không được đề cập trong trang trợ giúp, nhưng dù sao tôi cũng đưa nó vào.
require(moments)
require(e1071)
x=rnorm(100)
n=length(x)
hist(x)
###############type=1
e1071::skewness(x,type=1)
sqrt(n) * sum((x-mean(x))^3)/(sum((x - mean(x))^2)^(3/2)) #from e1071::skewness source
m_r=function(x,r) {n=length(x); sum((x - mean(x))^r/n);} ##from e1071::skewness help
g_1=function(x) m_r(x,3)/m_r(x,2)^(3/2)
g_1(x) ##from e1071::skewness help
moments::skewness(x) ##from e1071::skewness help
(sum((x - mean(x))^3)/n)/(sum((x - mean(x))^2)/n)^(3/2) ##from moments::skewness code, exactly as skewness help page
###############type=2
e1071::skewness(x,type=2)
e1071::skewness(x,type=1) * sqrt(n * (n - 1))/(n - 2) #from e1071::skewness source
G_1=function(x) {n=length(x); g_1(x)*sqrt(n*(n-1))/(n-2);} #from e1071::help
G_1(x)
excel.skew=function(x) { n=length(x); return(n/((n-1)*(n-2))*sum(((x-mean(x))/sd(x))^3));}
excel.skew(x)
###############type=3
e1071::skewness(x,type=3)
e1071::skewness(x,type=1) * ((1 - 1/n))^(3/2) #from e1071::skewness source
b_1=function(x) {n=length(x); g_1(x)*((n-1)/n)^(3/2); } #from e1071::skewness help page
b_1(x);
prof.skew=function(x) sum((x-mean(x))^3)/(length(x)*sd(x)^3);
prof.skew(x)
###############very old method that fails in weird cases
(3*mean(x)-median(x))/sd(x)
#I found this to fail on certain data sets as well...
Dưới đây là bài báo mà tác giả của e1071 đề cập đến: http : // onlinel Library.wiley.com/doi/10.1111/1467-9884.00122/pdf Joanes và CA Gill (1998), So sánh các biện pháp về độ lệch mẫu và độ nhiễu.
Từ việc tôi đọc bài báo đó, họ cho rằng loại # 3 có ít lỗi nhất.
Dưới đây là ví dụ về độ lệch từ đoạn mã trên:
e1071::skewness(x,type=1)
-0.1620332
e1071::skewness(x,type=2)
-0.1645113
e1071::skewness(x,type=3)
-0.1596088
#old type:
0.2694532
Tôi cũng nhận thấy rằng tác giả của e1071 đã viết chức năng nghiêng khác với các ghi chú trong trang trợ giúp. Lưu ý sqrt:
sqrt(n) * sum((x-mean(x))^3)/(sum((x - mean(x))^2)^(3/2)) #from e1071::skewness source
(sum((x - mean(x))^3)/n)/(sum((x - mean(x))^2)/n)^(3/2) #from moments and e1071 help page
Bất kỳ ý tưởng tại sao sqrt (n) là trong phương trình đầu tiên? Phương trình nào xử lý tràn / tràn tốt hơn? Bất kỳ ý tưởng khác tại sao chúng khác nhau (nhưng tạo ra kết quả tương tự)?