一、 偏度
1.1 计算公式
k-阶中心矩为:
u
k
=
1
n
∑
i
=
1
n
(
x
i
−
x
‾
)
k
u_k=\frac1n\sum^n_{i=1}{(x_i-\overline{x})^k}
uk=n1i=1∑n(xi−x)k
偏度公式:
g
1
=
n
2
u
3
(
n
−
1
)
(
n
−
2
)
s
3
g_1=\frac{n^2u_3}{(n-1)(n-2)s^3}
g1=(n−1)(n−2)s3n2u3
1.2 自定义函数以及调用
(一)R语言中实现
编写skew函数
skew <- function(x)
{
n <- length(x) #长度
meanx <- mean(x) #均值
s <-sd(x) #均方差
u <- sum((x-meanx)^3 )/n #3阶中心矩
g1 <- (n^2*u)/((n-1)*(n-2)*s^3) #偏度
return(g1) #输出结果
}
调用函数以及测试结果
setwd("E:/R")
#测试偏度函数
source('skew.R')
datastudent <- c(11,2,4,5,8,9,10)
skew(datastudent)
得到的结果为: -0.366937
(二)Python中实现
在Python有现成的函数,导入相应的库之后使用skew函数即可求出偏度。
import pandas as pd
import numpy as np
da = [11,2,4,5,8,9,10]
das = pd.Series(da)
das.skew()
得到的结果为:-0.36693703063253225
二、峰度
2.1 计算公式
峰度公式:
g
2
=
n
2
(
n
+
1
)
u
4
(
n
−
1
)
(
n
−
2
)
(
n
−
3
)
s
4
−
3
(
n
−
1
)
2
(
n
−
2
)
(
n
−
3
)
g_2=\frac{n^2(n+1)u_4}{(n-1)(n-2)(n-3)s^4}-3\frac{(n-1)^2}{(n-2)(n-3)}
g2=(n−1)(n−2)(n−3)s4n2(n+1)u4−3(n−2)(n−3)(n−1)2
2.2 自定义函数以及调用
(一)R语言中实现
kurt <- function(y)
{
s<- sd(y) #均方差
n<- length(y) #长度
uk4 <- sum((y-mean(y))^4)/n #4阶中心矩
g2 <- (n^2*(n+1)*uk4)/((n-1)*(n-2)*(n-3)*s^4)-((3*(n-1)^2)/((n-2)*(n-3))) #峰度
return(g2) #输出结果
}
调用函数以及测试结果
#测试峰度函数
source('kurt.R')
datastudent <- c(11,2,4,5,8,9,10)
kurt(datastudent)
得到的结果为:-1.490657
(二)Python中实现
import pandas as pd
import numpy as np
da = [11,2,4,5,8,9,10]
das = pd.Series(da)
das.kurt()
得到的结果为:-1.490657439446367
三、参考资料
[1].「量学堂-3」统计矩

本文介绍了如何在R和Python中计算偏度和峰度,包括计算公式和自定义函数的实现。在R中,通过自定义`skew`函数计算得到偏度为-0.366937,峰度为-1.490657;而在Python中,使用内置`skew`函数得出相同的数据结果。

9531

被折叠的 条评论
为什么被折叠?



