Skip to main content
 首页 » 编程设计

python之将 R 代码转换为 Python 脚本

2025年05月04日10shanyou

我得到了以下 R 代码,我需要将它转换为 python 并在 python 环境中运行它,基本上我是用 rpy2 模块完成的,但是用 python 做同样的事情看起来有点乏味,所以有人能找到吗使用 rpy2 模块将以下 R 代码重写为等效的 python 脚本的更好方法?

mymad <- function (x)  
{ 
    center <- median(x) 
    y <- abs(x - center) 
    n <- length(y) 
    if (n == 0)  
        return(NA) 
    half <- (n + 1)/2 
    1.4826 * if (n%%2 == 1) { 
        sort(y, partial = half)[half] 
    } 
    else { 
        sum(sort(y, partial = c(half, half + 1))[c(half, half +  
            1)])/2 
    } 
} 

请您参考如下方法:

您可以说明函数的用途,即 Median Absolute Deviation .您所说的 mymad 是基于正态分布变量的大样本假设的总体标准差的近似值。

根据 this website :

def median(pool): 
    copy = sorted(pool) 
    size = len(copy) 
    if size % 2 == 1: 
        return copy[(size - 1) / 2] 
    else: 
        return (copy[size/2 - 1] + copy[size/2]) / 2 

因此,您需要一个函数 mad 来验证:

mad(x) == median(abs(x-median(x))) 

感谢 Elenaher(提供他的评论),这是代码:

def mad(x): 
    return median([abs(val-median(x)) for val in x]) 

然后,我相信您正在计算:

def mymad(x): 
    return 1.4826*mad(x)