只需单击一个按钮,就有可能将Alpha/Beta版本推向生产,但出于某种原因,"内部测试"轨道没有"发布到生产"按钮,只有"发布到alpha/beta".
我找不到关于这个主题的任何文档,并想知道它是否是故意阻止的东西,或者我只是遗漏了一些东西.
现在,解决方法是先将Alpha发布到Alpha,然后再从Alpha升级到生产.但它没有多大意义,因为这些alpha/beta阶段目前不用于任何类型的预发布测试.
或者,我可以每次为生产创建一个单独的版本,只选择相同的APK,但是当"内部测试"版本中已经指定了一些发行说明和其他元数据时,它也没有意义,所有这些信息都应该手动复制.
我用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,也许参数修复的知识可以某种方式用于简化过程?只是随机猜测.
我试图找到一个适合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) 我在使用Windows 7旗舰版(英特尔酷睿i5-2400 3GHz处理器,8.00GB内存)的PC上运行R版本2.14.0.如果需要其他规格,请告诉我.
我试图模拟相关的beta分布式数据.我使用的方法是本文所写内容的扩展:
http://onlinelibrary.wiley.com/doi/10.1002/asmb.901/pdf
mvrnorm()
MASS中的函数).pnorm()
probit变换应用于这些数据,以便我的新数据向量存在于(0,1).并且根据之前的陈述仍然相关.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) 对于随机模拟,我需要绘制大量贝塔二项式分布的随机数。
目前我是这样实现的(使用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 函数)的评估。
有谁知道如何加快采样速度?
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) 我有2个发行版 - 1 beta和1 normal,我需要找到他们的pdf的交集.我知道两者的参数,并且能够直观地看到交叉点,但我正在寻找R计算精确点的方法.有人知道怎么做吗?
我在定量和科学编程方面非常陌生,并且遇到了 scipy 的最小化函数scipy.optimize.fmin
。有人可以为非工程专业的学生解释这个函数的基本直觉吗?
Letz 说我想最小化以下功能:
def f(x): x**2
Run Code Online (Sandbox Code Playgroud)
1)最小化器实际上最小化了什么?因变量还是自变量?
2)什么之间的区别scipy.optimize.fmin
和scipy.optimize.minimize
?
在 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 中完成?
我想知道这里有人可以帮助我.
我试图将beta GLM与betareg
包相匹配,因为我的因变量是一个比例(500米网格大小的鲸鱼的相对密度)从0到1不等.我有三个协变量:
我的因变量有很多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 中包的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的包中的相同数据建模时不会发生这种情况。什么可能导致这种差异?
我正在尝试模拟一些数据,其中响应可能是正确的 (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) r ×6
python ×4
distribution ×3
numpy ×2
scipy ×2
android ×1
boost ×1
boost-random ×1
c++ ×1
gam ×1
glm ×1
math ×1
matplotlib ×1
mgcv ×1
optimization ×1
random ×1
sigmoid ×1
simulation ×1
stochastic ×1