- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望找到使用 R 的 fitdistr 函数 (MLE) 截断的分布的威 bool 形状和尺度参数。使用树木直径数据样本(最小为 2.8):
data<-c(42.7,18.8,30.0,20.3,32.5,18.8,16.0,42.9,18.8,17.3,21.1,23.4,15.0,16.8,15.2,15.0,14.7,17.3,20.1,18.3,16.0,15.7,21.3,
19.1,17.3,17.0,17.3,17.5,21.6,15.7,12.7,13.2,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,2.8,2.8,2.8,2.8,2.8,
2.8,2.8,2.8,2.8,2.8,2.8,2.8,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,4.3,4.3,4.3,4.3,4.3,4.3,
4.3,4.3,4.3,4.3,4.3,4.3,2.8,2.8,2.8,2.8,2.8,2.8,2.8,2.8,2.8,2.8,2.8,2.8,5.6,5.6,5.6,5.6,5.6,5.6,5.6,5.6,5.6,5.6,
5.6,5.6,18.0,16.3,34.8,17.5,6.1,6.1,6.1,6.1,6.1,6.1,6.1,6.1,6.1,6.1,6.1,6.1,6.3,6.3,6.3,6.3,6.3,6.3,6.3,6.3,6.3,
6.3,6.3,6.3,9.4,9.4,9.4,9.4,9.4,9.4,9.4,9.4,9.4,9.4,9.4,9.4,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8)
library(MASS)
wb<-fitdistr(data,'weibull',lower=0.1) # MLE for weibull parameter determination
wb
结果:形状比例
1.36605920 9.97356797
鉴于数据分布,人们会期望出现负单调曲线(例如形状<1)。然而,这些结果表明 shape>1,因为 fitdistr 没有考虑数据被截断的事实。在其他地方,提出了以下建议:
ltwei<-function(x,shape,scale=1,log=FALSE){dweibull(x,shape,scale,log)/pweibull(1,shape,scale,lower=FALSE) }
ltweifit<-fitdistr(data,ltwei,start=list(shape=1,scale=10))
ltweifit
但这会导致更大的威 bool 形状值。如何生成考虑数据左截断的分布的形状和尺度参数?非常感谢。
最佳答案
这是对给出的建议的修改,因为我认为分母不正确。尝试将分母更改为 1-pweibull(trunc, ...)
看看这是否会产生更好的拟合:
> ptwei <- function(x, shape, scale , log = FALSE)
+ pweibull(x, shape, scale, log)/(1-
+ pweibull(2.8, shape, scale, lower=FALSE))
> dtwei <- function(x, shape, scale , log = FALSE)
+ dweibull(x, shape, scale, log)/(1-
+ pweibull(2.8, shape, scale, lower=FALSE))
> fitdist(data, dtwei, start=list(shape=1.2, scale=4))
Fitting of the distribution ' twei ' by maximum likelihood
Parameters:
estimate Std. Error
shape 0.4555414 0.02660275
scale 0.8751571 0.12236256
我现在意识到 Ripley 教授正在使用 lower 参数来实现我上面所做的事情,因此只要使用 lower 调用
ltwei
函数,原始代码就可以工作=假
这是遵循 Brian Ripley 教授在 2008 年 10 月 7 日的 Rhelp 帖子中发现的建议:
ltwei <- function(x, shape, scale = 1, log = FALSE)
dweibull(x, shape, scale, log)/
pweibull(2.8, shape, scale, lower=FALSE)
威 bool 密度通过除以截断点处的 CMF 进行归一化。 (当 lower=FALSE 时,pweibull 函数返回从截断点到 Inf
的积分密度。)
library(MASS)
wb<-fitdistr(data,ltwei,start=list(shape=1,scale=1) )
There were 50 or more warnings (use warnings() to see the first 50)
> wb
shape scale
1.81253163 12.72912552
( 0.07199877) ( 0.54855731)
> warnings()[1:5]
Warning messages:
1: In dweibull(x, shape, scale, log) : NaNs produced
2: In pweibull(2.8, shape, scale, lower = FALSE) : NaNs produced
3: In dweibull(x, shape, scale, log) : NaNs produced
4: In pweibull(2.8, shape, scale, lower = FALSE) : NaNs produced
5: In dweibull(x, shape, scale, log) : NaNs produced
> library(MASS)
> wb<-fitdistr(data,ltwei,start=list(shape=1.1,scale=10) )
> wb
shape scale
1.81253113 12.72912870
( 0.07199877) ( 0.54855782)
您可以看到某些起始值生成警告,但算法仍然成功。如果您从更接近“真实值”的值开始,则不会出现警告。恐怕没有达到您的期望。有时,威 bool 分布的参数化会令人困惑,因为它们的处理方式有不同的约定。这是 Terry Therneau 在他的 Survival::survreg 帮助页面中的内容:
# There are multiple ways to parameterize a Weibull distribution. The survreg
# function imbeds it in a general location-scale familiy, which is a
# different parameterization than the rweibull function, and often leads
# to confusion.
# survreg's scale = 1/(rweibull shape)
# survreg's intercept = log(rweibull scale)
# For the log-likelihood all parameterizations lead to the same value.
由于您似乎对 fitdistr
的结果不满意,我还从“fitdistrplus”包中运行了 fitdist
并得到了几乎相同的答案。我仍然认为您需要检查参数的解释,并且可能还需要检查这必然是威 bool 分布的数据的关键假设:
dtwei <- function(x, shape, scale , log = FALSE)
dweibull(x, shape, scale, log)/
pweibull(2.8, shape, scale, lower=FALSE)
ptwei <- function(x, shape, scale , log = FALSE)
pweibull(x, shape, scale, log)/
pweibull(2.8, shape, scale, lower=FALSE)
fitdist(data, dtwei, start=list(shape=1.2, scale=4))
#----------------
Fitting of the distribution ' twei ' by maximum likelihood
Parameters:
estimate Std. Error
shape 1.812706 0.07199987
scale 12.728087 0.54839034
关于r - 如何使用 fitdistr 确定左截断分布的威 bool 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28095125/
我有两个项目。一个项目正在运行,没有任何问题。它是从 gitlab 下载的。另一个项目是从 github 下载的。 github项目有这个问题。我想使用默认的 gradle 分布。我想知道我做错了什么
我正在通过我学习的大学提供的 VNC 软件(远程访问)使用 IBM bigInsights,但我无法通过该桌面访问 Internet。为了使用互联网上的一些数据样本,我决定安装 Hadoop 在我的笔
所以,这非常简单,我有一个包含嵌套列表的列表,如下所示: List( *list1* List(List("n1", "n3"), List("n1", "n4"), List("n3", "n4")
我有以下示例。 prefix = ['blue ','brown '] suffix = [('dog','shoes','bike'), ('tree','cat','car')] 我想获得一个如下
我创建了一项调查并将其发送出去。该调查要求用户提供电子邮件,然后要求他们从包含 8 个不同选项的下拉菜单中选择要吃哪顿饭。有些人使用同一封电子邮件多次填写调查,但食物选择不同。 我有一个如下所示的 M
我在 Python 中使用 plotly 来创建由某些分类变量着色的美国县的等值线。由于县非常小,因此图像中的边界线占主导地位。我怎样才能摆脱它们(或将它们的宽度设置为零)? 到目前为止的代码和输出(
我们有qgamma在 R 和 gamm.inv在 excel 中,我无法使用 invgamma 获得相同的结果python中的函数。例如在excel中GAMMA.INV(0.99,35,0.08)=4
过去几年我经常使用 Docker,但对于 Kubernetes 来说我还是个新手。我从今天开始,与我以前使用 Docker swarm 的方式相比,我正在努力思考 Pod 概念的实用性。 假设我有一个
我有一个 UIStackView然而,subViews的第一个 View 是 UILabel它没有相应地调整它的大小。 我的代码如下; private let stackView: UIStackVi
我想绘制自由度为 1、2、5 和 10 的 Student t 分布;所有在一个图中,并为图中的每个分布使用不同的颜色。此外,在 Canvas 的左上角创建一个图例,并增加 df = 1 的曲线线宽。
我对 Python 很陌生,我在互联网上浏览过,但找不到任何可以帮助我解决问题的逻辑。 我在图中有降水值,现在我需要根据图中的这些值拟合 GEV 分布。每个值等于从 1974 年到 2017 年的一年
我正在尝试复制此图 https://wind-data.ch/tools/weibull.php 我编写的代码是 import matplotlib.pyplot as plt import nump
对于家庭作业,我必须绘制文本的词频并将其与最佳 zipf 分布进行比较。 根据对数对数图中的排名绘制文本的词频计数似乎效果很好。 但是我在计算最佳 zipf 分布时遇到了麻烦。结果应该如下所示: 我不
Mathematica 具有四参数广义逆 Gamma 分布: http://reference.wolfram.com/mathematica/ref/InverseGammaDistribution
正在用 C 语言开发一个学校项目,使用 Pthreads 将一维数组分解为 tRows 和 tCols 的子矩阵。整个数组的大小为 wRows 和 wCols。假设 wCols = 4、wRows =
有没有办法得到制服int32_t没有警告的分发?我用这个uniform_int_distribution在我的代码中,但我收到警告: 54988961.cpp: In function ‘int ma
在花了相当多的时间试图了解如何在 postgresql 数据库服务器之间实现负载平衡(分配数据库处理负载)之后,我来到这里。 我有一个 postgresql 系统,每秒吸引大约 100 笔交易,而且这
所以标题已经说明了一切。我们正在开发一个开始获得大量依赖项的项目。到目前为止,我们一直在使用 setuptools,但越来越多的依赖项要么不容易安装(例如 wxPython),要么在某些使用 easy
我有以下代码: #include #include #include using namespace boost::numeric; using namespace interval_lib;
我有一个对象列表,我想以随机顺序连续访问这些对象。 我想知道是否有一种方法可以确保随机值并不总是相似。 例子。 我的列表是队列列表,我试图交错这些值以生成用于测试的真实场景。 我并不是特别想要队列 1
我是一名优秀的程序员,十分优秀!