在R和Python中求峰度和偏度

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

一、 偏度

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=1n(xix)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=n1(n2)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=(n1)(n2)(n3)s4n2(n+1)u43(n2)(n3)(n1)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」统计矩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值