gpt4 book ai didi

python - python中模仿 'ppoints' R函数

转载 作者:太空狗 更新时间:2023-10-30 00:07:25 25 4
gpt4 key购买 nike

R ppoints 函数描述为:

Ordinates for Probability Plotting

Description:

Generates the sequence of probability points ‘(1:m - a)/(m +
(1-a)-a)’ where ‘m’ is either ‘n’, if ‘length(n)==1’, or
‘length(n)’.

Usage:

ppoints(n, a = ifelse(n <= 10, 3/8, 1/2))
...

我一直在尝试在 python 中复制这个函数我有几个疑问。

1- 第一个 m(1:m - a)/(m + (1-a)-a)始终是一个整数:int(n) (即:n整数)如果length(n)==1length(n)否则。

2- 第二个 m如果 length(n)==1 在同一个等式中 不是 一个整数(它假定 n 的实际值)并且它一个整数 ( length(n) ) 否则。

3- na = ifelse(n <= 10, 3/8, 1/2)真实n如果length(n)==1整数 length(n)否则。

这一点在描述中根本没有说清楚,如果有人能确认是这种情况,我将不胜感激。


添加

最初发布于 https://stats.stackexchange.com/因为我希望得到使用 ppoints 的静态专家的意见功能。由于它已迁移到此处,我将粘贴到我编写的用于复制 ppoints 的函数下方。在 python .我已经对其进行了测试,两者似乎都返回了相同的结果,但如果有人可以澄清上面提出的观点,我会很棒,因为函数的描述根本没有明确说明这些观点。

def ppoints(vector):
'''
Mimics R's function 'ppoints'.
'''

m_range = int(vector[0]) if len(vector)==1 else len(vector)

n = vector[0] if len(vector)==1 else len(vector)
a = 3./8. if n <= 10 else 1./2

m_value = n if len(vector)==1 else m_range
pp_list = [((m+1)-a)/(m_value+(1-a)-a) for m in range(m_range)]

return pp_list

最佳答案

我会用 numpy 实现这个:

import numpy as np
def ppoints(n, a):
""" numpy analogue or `R`'s `ppoints` function
see details at http://stat.ethz.ch/R-manual/R-patched/library/stats/html/ppoints.html
:param n: array type or number"""
try:
n = np.float(len(n))
except TypeError:
n = np.float(n)
return (np.arange(n) + 1 - a)/(n + 1 - 2*a)

示例输出:

>>> ppoints(5, 1./2)
array([ 0.1, 0.3, 0.5, 0.7, 0.9])
>>> ppoints(5, 1./4)
array([ 0.13636364, 0.31818182, 0.5 , 0.68181818, 0.86363636])
>>> n = 10
>>> a = 3./8. if n <= 10 else 1./2
>>> ppoints(n, a)
array([ 0.06097561, 0.15853659, 0.25609756, 0.35365854, 0.45121951,
0.54878049, 0.64634146, 0.74390244, 0.84146341, 0.93902439])

可以使用 R fiddle测试实现。

关于python - python中模仿 'ppoints' R函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com