标签: beta-distribution

促进从"内部测试"轨道发布到生产

只需单击一个按钮,就有可能将Alpha/Beta版本推向生产,但出于某种原因,"内部测试"轨道没有"发布到生产"按钮,只有"发布到alpha/beta".

我找不到关于这个主题的任何文档,并想知道它是否是故意阻止的东西,或者我只是遗漏了一些东西.

现在,解决方法是先将Alpha发布到Alpha,然后再从Alpha升级到生产.但它没有多大意义,因为这些alpha/beta阶段目前不用于任何类型的预发布测试.

或者,我可以每次为生产创建一个单独的版本,只选择相同的APK,但是当"内部测试"版本中已经指定了一些发行说明和其他元数据时,它也没有意义,所有这些信息都应该手动复制.

android beta-distribution google-play-console

14
推荐指数
3
解决办法
1255
查看次数

来自Beta发行版的随机数,C++

我用C++编写了一个模拟,它从特定的概率分布中生成(1,000,000)^ 2个数字,然后用它们做一些事情.到目前为止,我使用了指数,正常,伽玛,均匀和泊松分布.以下是其中一个的代码:

#include <boost/random.hpp>

...main...

    srand(time(NULL)) ;
    seed = rand();
    boost::random::mt19937 igen(seed) ;
    boost::random::variate_generator<boost::random::mt19937, boost::random::normal_distribution<> >
    norm_dist(igen, boost::random::normal_distribution<>(mu,sigma)) ;
Run Code Online (Sandbox Code Playgroud)

现在我需要为Beta发行版运行它.到目前为止,我所做的所有发行都需要10-15个小时.Beta发行版不在boost/random包中,所以我不得不使用boost/math/distributions包.我在StackOverflow上找到了这个提出解决方案的页面.这是(复制粘贴):

#include <boost/math/distributions.hpp> 
using namespace boost::math;  
double alpha, beta, randFromUnif;  
//parameters and the random value on (0,1) you drew  
beta_distribution<> dist(alpha, beta); 
double randFromDist = quantile(dist, randFromUnif); 
Run Code Online (Sandbox Code Playgroud)

我复制它并且它有效.我的模拟的运行时间估计是线性的并且可以准确地预测.他们说这将持续25天.我看到了两种可能性:1.提出的方法不如我以前用于其他发行版的方法2. Beta分布更难以从中生成随机数

请记住,我对C++编码的理解很少,所以我问的问题可能很愚蠢.我不能等待一个月来完成这个模拟,所以我能做些什么来改善它?也许使用我正在使用的初始方法并修改它以使用boost/math/distributions包?我甚至不知道这是否可能.

另一条可能有用的信息是,我需要生成的所有(1,000,000)^ 2个数字的参数相同.我这样说是因为Beta发行版确实有一个讨厌的PDF,也许参数修复的知识可以某种方式用于简化过程?只是随机猜测.

c++ boost boost-random beta-distribution

8
推荐指数
1
解决办法
2747
查看次数

如何在python中正确拟合beta发行版?

我试图找到一个适合beta分布的正确方法.这不是一个现实世界的问题,我只是测试几种不同方法的效果,而这样做的事情令我感到困惑.

这是我正在研究的python代码,其中我测试了3种不同的方法:1>:使用时刻拟合(样本均值和方差).2>:通过最小化负对数似然来拟合(通过使用scipy.optimize.fmin()).3>:只需调用scipy.stats.beta.fit()

from scipy.optimize import fmin
from scipy.stats import beta
from scipy.special import gamma as gammaf
import matplotlib.pyplot as plt
import numpy


def betaNLL(param,*args):
    '''Negative log likelihood function for beta
    <param>: list for parameters to be fitted.
    <args>: 1-element array containing the sample data.

    Return <nll>: negative log-likelihood to be minimized.
    '''

    a,b=param
    data=args[0]
    pdf=beta.pdf(data,a,b,loc=0,scale=1)
    lg=numpy.log(pdf)
    #-----Replace -inf with 0s------
    lg=numpy.where(lg==-numpy.inf,0,lg)
    nll=-1*numpy.sum(lg)
    return nll

#-------------------Sample data-------------------
data=beta.rvs(5,2,loc=0,scale=1,size=500)

#----------------Normalize to [0,1]----------------
#data=(data-numpy.min(data))/(numpy.max(data)-numpy.min(data))

#----------------Fit using moments----------------
mean=numpy.mean(data)
var=numpy.var(data,ddof=1)
alpha1=mean**2*(1-mean)/var-mean
beta1=alpha1*(1-mean)/mean

#------------------Fit using …
Run Code Online (Sandbox Code Playgroud)

python curve-fitting beta-distribution

7
推荐指数
1
解决办法
1万
查看次数

'qbeta'可能没有实现全精度

我在使用Windows 7旗舰版(英特尔酷睿i5-2400 3GHz处理器,8.00GB内存)的PC上运行R版本2.14.0.如果需要其他规格,请告诉我.

我试图模拟相关的beta分布式数据.我使用的方法是本文所写内容的扩展:

http://onlinelibrary.wiley.com/doi/10.1002/asmb.901/pdf

  1. 基本上,我首先模拟多元正常数据(使用mvrnorm()MASS中的函数).
  2. 然后我使用pnorm()probit变换应用于这些数据,以便我的新数据向量存在于(0,1).并且根据之前的陈述仍然相关.
  3. 然后给出这些概率转换数据,我应用qbeta()具有某些shape1和shape2参数的函数,以获得具有特定均值和色散属性的相关β数据.

我知道存在生成相关beta数据的其他方法.我感兴趣的是为什么qbeta()导致这种方法失败的某些"种子".以下是我收到的错误消息.

Warning message:
In qbeta(probit_y0, shape1 = a0, shape2 = b0) :
  full precision may not have been achieved in 'qbeta'
Run Code Online (Sandbox Code Playgroud)

这是什么意思?怎么可以避免?当它确实发生在更大模拟的上下文中时,确保此问题不会终止整个源(使用source())模拟代码的最佳方法是什么?

我为1:1000的整数种子运行了以下代码.种子= 899是唯一给我带来问题的价值.虽然如果它在这里有问题,它也不可避免地会对其他种子造成问题.

library(MASS)
set.seed(899)
n0 <- 25  
n1 <- 25    
a0 <- 0.25    
b0 <- 4.75    
a1 <- 0.25    
b1 <- 4.75    
varcov_mat <- matrix(rep(0.25,n0*n0),ncol=n0)
diag(varcov_mat) <- 1
y0 <- mvrnorm(1,mu=rep(0,n0),Sigma=varcov_mat)
y1 <- mvrnorm(1,mu=rep(0,n1),Sigma=varcov_mat)
probit_y0 <- pnorm(y0)
probit_y1 <- pnorm(y1)
beta_y0 <- …
Run Code Online (Sandbox Code Playgroud)

simulation r beta-distribution

6
推荐指数
1
解决办法
1011
查看次数

python 中 beta 二项式分布的高效采样

对于随机模拟,我需要绘制大量贝塔二项式分布的随机数。

目前我是这样实现的(使用python):

import scipy as scp
from scipy.stats import rv_discrete

class beta_binomial(rv_discrete):
       """
       creating betabinomial distribution by defining its pmf
       """
       def _pmf(self, k, a, b, n):
          return scp.special.binom(n,k)*scp.special.beta(k+a,n-k+b)/scp.special.beta(a,b)
Run Code Online (Sandbox Code Playgroud)

因此可以通过以下方式对随机数 x 进行采样:

betabinomial = beta_binomial(name="betabinomial")
x = betabinomial.rvs(0.5,0.5,3) # with some parameter 
Run Code Online (Sandbox Code Playgroud)

问题是,对一个随机数进行采样大约需要 10 分钟。0.5ms,在我的例子中,它主导了整个模拟速度。限制因素是 beta 函数(或其中的 gamma 函数)的评估。

有谁知道如何加快采样速度?

python random distribution stochastic beta-distribution

5
推荐指数
1
解决办法
1451
查看次数

R 中的四参数 beta 分布

R 中是否有内置函数可以计算四参数 beta 分布?即,具有两个形状参数和两个边界参数的分布,因此它不受 [0,1] 的限制?

我自己做了一个,但很好奇这个功能是否已经存在。无需重新发明轮子。

shp1 <- 20
shp2 <- 5
X <- seq(0,1,length.out = 100)
Y <- dbeta(x = X,shape1 = shp1, shape2 = shp2)
plot(X,Y)
# scaled between two boundaries
dbeta4param <- function(x,shp1,shp2,bnd1,bnd2){
  mask = (x>=bnd1 & x<=bnd2)
  xScale = (x-bnd1)/(bnd2-bnd1)
  mask * dbeta(xScale,shape1=shp1,shape2=shp2)/(bnd2-bnd1)
}
bnd1 <- 2
bnd2 <- 4
X2 <- seq(bnd1,bnd2,length.out = 100)
Y2 <- dbeta4param(x=X2, shp1 = shp1, shp2 = shp2, bnd1 = bnd1, bnd2 = bnd2)
plot(X2,Y2)
Run Code Online (Sandbox Code Playgroud)

r beta-distribution

4
推荐指数
1
解决办法
1530
查看次数

找到beta和正态分布之间的交集

我有2个发行版 - 1 beta和1 normal,我需要找到他们的pdf的交集.我知道两者的参数,并且能够直观地看到交叉点,但我正在寻找R计算精确点的方法.有人知道怎么做吗?

r distribution normal-distribution beta-distribution

2
推荐指数
1
解决办法
310
查看次数

最小化器背后的直觉

我在定量和科学编程方面非常陌生,并且遇到了 scipy 的最小化函数scipy.optimize.fmin。有人可以为非工程专业的学生解释这个函数的基本直觉吗?

Letz 说我想最小化以下功能:

def f(x): x**2
Run Code Online (Sandbox Code Playgroud)

1)最小化器实际上最小化了什么?因变量还是自变量?

2)什么之间的区别scipy.optimize.fminscipy.optimize.minimize

python math optimization scipy beta-distribution

2
推荐指数
1
解决办法
163
查看次数

如何在 Python 中集成 beta 发行版

在 R 中,以下用于计算参数为 10 和 20 的 beta 分布上点 0 和 0.5 之间的积分:

 integrate(function(p) dbeta(p,10,20),0,0.5)
Run Code Online (Sandbox Code Playgroud)

结果是:

0.9692858 absolute error < 6.6e-08
Run Code Online (Sandbox Code Playgroud)

这如何在 Python 中完成?

python numpy r scipy beta-distribution

2
推荐指数
1
解决办法
1271
查看次数

比例建模 - Betareg错误

我想知道这里有人可以帮助我.

我试图将beta GLM与betareg包相匹配,因为我的因变量是一个比例(500米网格大小的鲸鱼的相对密度)从0到1不等.我有三个协变量:

  • 深度(以米为单位,以4到100米为单位),
  • 到海岸的距离(以米为单位测量,范围从0到21346米)和
  • 到船只的距离(以米为单位,从0到20621).

我的因变量有很多0,许多值太接近于0(如7.8e-014).当我尝试拟合模型时,以下错误显示:

invalid dependent variable, all observations must be in (0, 1). 
Run Code Online (Sandbox Code Playgroud)

从我之前的讨论看来,这似乎是由数据集中的0引起的(我不应该有任何0或1).当我将所有0改为正定(例如0.0000000000000001)时,我得到的错误信息是:

Error in chol.default(K) : 
  the leading minor of order 2 is not positive definite
In addition: Warning messages:
1: In digamma(mu * phi) : NaNs produced
2: In digamma(phi) : NaNs produced
Error in chol.default(K) : 
  the leading minor of order 2 is not positive definite
In addition: Warning messages:
1: In betareg.fit(X, Y, Z, weights, offset, link, …
Run Code Online (Sandbox Code Playgroud)

r beta-distribution glm

1
推荐指数
1
解决办法
4415
查看次数

Gam 模型中的 Beta 系列拟合值大于 1 且小于 0。这是怎么回事?(mgcv)

我正在使用R 中包的gam函数将 gam 拟合到区间 (0,1) 上的数据mgcv。我的模型代码如下所示:

mod <- gam(y ~ x1 + x2 + s(latitude, longitude), faimly=betar(link='logit'), data = data)
Run Code Online (Sandbox Code Playgroud)

模型拟合得很好,但是当我绘制拟合值与观察值时,它看起来像这样:

plot(data$y ~ fitted(mod), ylab='observed',xlab='fitted')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

显然,该模型拟合了大于 1 且小于 0 的值。这不应该发生。它违反了 beta 分布的假设。当我betareg为 R的包中的相同数据建模时不会发生这种情况。什么可能导致这种差异?

r beta-distribution gam mgcv

1
推荐指数
1
解决办法
1083
查看次数

如何获得 0 到 1 之间的 sigmoid 函数以获得正确答案的概率?

我正在尝试模拟一些数据,其中响应可能是正确的 (1) 或错误的 (0)。因此,我试图找到一个分布,其中有四个条件(在本例中为圆的度数)。

因此,x 轴是 pi/2, pi, pi 1.5, 2 pi。我已将其从 0 标准化为 1 以使其更容易。在 y 轴上,我希望回答正确的概率是 0-1 或 0-100 等。我试图生成/绘制一个 sigmoid 函数,这样当条件接近 1 时概率更高,当条件接近 1 时概率更低条件更接近于 0。

我似乎无法在 0 和 1 之间生成 sigmoid,它只会给我一条直线,除非我设置 x = np.linspace (-10,10,10)。我怎样才能做到这一点?我目前拥有的代码如下。谢谢!

我最初打算使用 beta 分布,因为它更适合(因为它是围绕一个圆的度数),但似乎无法将其变成我想要的形状。任何帮助将不胜感激!

def sigmoid(x,x0=0,k=0.5):
            return (1 / (1 + np.exp(-x)))
x = np.linspace(0,1,10)
Run Code Online (Sandbox Code Playgroud)

numpy distribution matplotlib beta-distribution sigmoid

1
推荐指数
1
解决办法
1772
查看次数