1000!位数的估计

令1000!=a*10^N,其中0<a<10,则N为1000!的位数

lg(1000!)=∑(1-->1000)lg(i)=lg(a)+N

因为lg(a)为一个小于1的数,可忽略,下面估算N的值:

考虑1000以内的几个特殊数1,10,100,1000,有lg1=0,lg10=1,lg100=2,lg1000=3

大于1小于等于10的数有9个,大于10小于等于100的数有90个,大于100小于等于1000的数有900个

lg(x)为凸的递增函数,则N的上限为9*1+90*2+900*3=2889

N的下限为1*90+2*900=1890

综上,1000!位数应大于2390,小于2889。


上述估算方法理论依据为积分中值定理:

如果函数 f(x) 在积分区间[a, b]上连续,则在 [a, b]上至少存在一个点 ξ,使下式成立

 (a-->b)f(x) dx=f(ξ)(b-a), a≤ξ≤b


下面的解释转自 http://bbs.dlut.edu.cn/nforum/article/SchoGrad/182647

例如, 
m1=10^a1,表示有a1个10相乘,即1后面跟a1个零。 
m2=10^a2,表示有a2个10相乘,即1后面跟a2个零。 
m3=10^a3,表示有a3个10相乘,即1后面跟a3个零。 
... 
mn=10^an 
  
所以, 
m1*m2*m3*...*mn=10^(a1+a2+a3+...+an) 
  
注意到, 
10*10*10 = 10*10*10*1 是一个4位数,1是结果的最高位。 
  
进一步地,对于N进制乘法,应该有类似结论: 
k个N进制数相乘,结果(以N进制表达)的总位数应为每个因子的以N为底的对数之和取临近的最小整数再加1。 


下面的总结转自 http://www.cnblogs.com/ScorpioLove/archive/2007/01/11/617585.html

经过上述两个方法,我猜想求解一个数的位数可以求解该数对其基数的对数(此处是以 10 为基数的),找了几个数写了写,发现可以: 

一个以 b 为基数的数 N,在以 b 为基数的计数系统中的位数 l,可以通过求 N 对 b 的对数求得。
具体为:l=floor[log b (N) + 1],即求对数,结果加 1 后向下取整。


<think>我们拥有100个样本数据,目标是预测10000个产品中的最差值(即最小值)。在统计学中,处理极值(最小值或最大值)预测的一种常用方法是极值理论(ExtremeValueTheory,EVT),特别是针对分位数估计。这里我们关注最小值,但可以通过变换(取负值)将其转化为最大值问题,然后应用极值理论。常用的方法包括:1.直接使用样本最小值作为估计:但这种方法可能不稳定,因为样本量只有100,而我们要预测10000个的最小值,样本最小值可能低估。2.分位数估计:通过估计分布函数,然后推导出10000个样本的最小值的分布。3.极值理论(EVT):使用广义极值分布(GEV)或广义帕累托分布(GPD)来建模尾部分布。具体步骤:方法一:基于分位数的简单估计假设我们有100个独立同分布的样本,要预测10000个样本的最小值,我们可以考虑:第10000个样本的最小值对应的分位数大约是1/10000=0.0001。因此,我们需要估计原始分布的分位数点x,使得F(x)=0.0001。但是,我们只有100个数据点,直接估计0.0001分位数显然不可靠(因为数据没有提供这么尾部的信息)。因此,我们可以用以下方法:使用经验分布函数,但经验分布函数在超出样本范围的地方无法估计。所以,我们需要对尾部进行建模。方法二:极值理论(EVT)方法步骤:1.将原始问题转化为最大值问题:令Y=-X,则原问题的最小值转化为Y的最大值。2.使用块最大值法(BlockMaxima)或超阈值法(PeaksOverThreshold,POT)来建模Y的尾部。这里我们采用POT方法,因为它利用所有超过某个阈值的观测值,效率更高。具体步骤:a.选择一个合适的阈值u(例如,取Y的90%分位数)。b.对超过阈值u的超出量(Y-u)进行建模,使用广义帕累托分布(GPD)。c.估计GPD的参数(形状参数ξ和尺度参数β)。d.利用估计的GPD,我们可以计算超过阈值u的条件分布,进而得到整个分布的尾部估计。e.计算Y的T分位数(这里T=10000),即我们期望在10000个样本中最大值对应的分位数。注意:10000个样本的最大值的分布可以用极值分布近似,其分位数公式为:$$Q(p)=u+\frac{\beta}{\xi}\left[\left(\frac{n(1-p)}{N_u}\right)^{-\xi}-1\right]$$其中,n是样本量(10000),N_u是原始样本中超过阈值u的个数,p是分位数的概率水平(例如,我们可能取p=0.95来预测一个比较保守的值)。f.由于我们关注的是最小值,将Y的最大值分位数取负得到原始X的最小值分位数。方法三:参数法如果我们假设数据来自某个参数分布(如正态分布、威布尔分布等),则可以通过拟合分布参数,然后推导10000个样本的最小值的分布。最小值分布为:$$F_{\min}(x)=1-[1-F(x)]^n$$其中n=10000。然后求F_min的某个分位数(例如中位数,或95%分位数)作为预测。由于我们不知道数据的分布,通常先用QQ图等方法判断分布类型,或者使用非参数方法(如EVT)。根据实际数据,我们有三列,但用户没有指定使用哪一列,这里假设使用第一列(Z3)的数据。下面我们结合搜索到的知识,给出具体操作步骤:步骤1:数据准备使用100个样本数据(第一列:同心度0.08[3],即Z3列)。步骤2:数据转换(对于最小值问题,转换为最大值问题)令Y=-X,这样原始数据的最小值对应Y的最大值。步骤3:选择阈值阈值选择是POT方法的关键。通常选择足够高的阈值,使得超过阈值的观测值大约占10%-15%。这里我们可以取Y的85%或90%分位数。步骤4:拟合广义帕累托分布(GPD)对超过阈值的超出量(Y-u)进行GPD分布拟合。GPD的累积分布函数为:$$G(z;\xi,\beta)=1-\left(1+\frac{\xiz}{\beta}\right)^{-1/\xi}\quad\text{for}\quad\xi\neq0$$当ξ=0时,$G(z;0,\beta)=1-\exp(-z/\beta)$步骤5:估计位数我们想要估计10000个Y样本的最大值的分位数。在极值理论中,T个观测值的最大值的分布可以用广义极值分布(GEV)近似,其分位数(即VaR)为:$$VaR_p=u+\frac{\beta}{\xi}\left[\left(\frac{T}{n_u}(1-p)\right)^{-\xi}-1\right]$$其中,T=10000,n_u是原始样本中超过阈值u的样本数,p是概率(例如p=0.95,表示我们预测的最大值有95%的概率不超过这个VaR)。注意:这里(1-p)表示超过VaR_p的概率。通常我们关心的是最大值不会超过的某个值,即VaR_p是最大值的p分位数。由于我们关注的是最小值,所以原始X的最小值的最小值分位数(即最大值分位数取负)为:$$\text{min_quantile}=-VaR_p$$步骤6:考虑不确定性由于参数估计有误差,我们可以使用Bootstrap方法计算置信区间。下面给出一个Python代码示例,用于实现上述步骤(使用第一列数据):</think>### 基于分位数估计的极值预测方法 #### **分位数估计核心原理** 根据极值理论,n个独立同分布样本的最小值分布可表示为: $$ F_{\min}(x) = 1 - [1 - F(x)]^n $$ 其中$F(x)$是基础分布的累积分布函数。当$n=10000$时,预测最小值需估计尾部$F(x)$在$[0, 0.0001]$区间的行为。 #### **具体实施步骤** **1. 数据转换与阈值选择** 将原始数据$X$转换为$Y = -X$,使最小值问题转化为最大值问题 选择阈值$u$为样本第90百分位数: ```python import numpy as np data = [0.096, 0.115, ..., 0.1] # 第一列100个观测值 neg_data = -np.array(data) u = np.quantile(neg_data, 0.9) ``` **2. 广义帕累托分布(GPD)拟合** 对超出量$Z = \{ Y_i - u | Y_i > u \}$拟合GPD: $$ G(z;\xi,\beta) = 1 - \left(1 + \frac{\xi z}{\beta}\right)^{-1/\xi} $$ ```python from scipy.stats import genpareto exceedances = neg_data[neg_data > u] - u shape, loc, scale = genpareto.fit(exceedances, floc=0) ``` **3. 10000样本最小值预测** 计算$p=0.95$分位的最差值: $$ Q_{\min} = - \left[ u + \frac{\scale}{\shape} \left( (n(1-p))^{\shape} - 1 \right) \right] $$ ```python n = 10000 p = 0.95 quantile_y = u + scale/shape * ((n*(1-p))**(-shape) - 1) min_quantile = -quantile_y ``` **4. Bootstrap不确定性量化** 通过重采样评估预测可靠性: ```python bootstrap_mins = [] for _ in range(1000): sample = np.random.choice(data, size=100, replace=True) # 重复上述步骤计算样本最小值预测 bootstrap_mins.append(sample_min_pred) ci = np.quantile(bootstrap_mins, [0.025, 0.975]) ``` #### **验证与优化** - **分布诊断**:通过QQ图验证GPD拟合优度 ```python import statsmodels.api as sm sm.qqplot(exceedances, dist=genpareto, sparams=(shape, loc, scale)) ``` - **阈值敏感性分析**:在$[0.85, 0.95]$区间变动$u$值,观察预测稳定性 - **模型比较**:并行使用Weibull分布拟合,通过AIC指标选择最优模型 #### **结果解释** - **点估计**:基于当前数据,10000产品最差值预计为$Q_{\min}$(具体数值需实际计算) - **95%置信区间**:$[CI_{lower}, CI_{upper}]$ - **失效概率**:$P(X < \text{规格限}) = 1 - [1 - \hat{F}(\text{规格限})]^{10000}$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值