You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R语言与Weibull分布的在役轮胎剩余寿命预测

解决Weibull分布下在役轮胎剩余寿命蒙特卡洛模拟的条件分析问题

你遇到的核心问题是忽略了在役轮胎已经存活到当前使用时长t0这个关键条件——直接生成的原始Weibull样本包含了那些在t0之前就失效的情况,而这些情况在现实中已经被排除了(毕竟你的轮胎现在还在用)。正确的做法是基于「失效时间T > t0」的条件分布来生成剩余寿命样本,下面是两种可行的R实现方案:

方法1:接受-拒绝法(简单直观)

这种方法直接生成原始Weibull分布样本,只保留那些大于t0的有效样本,适合t0远小于η的场景(此时无效样本占比低,效率可接受)。

# 定义Weibull分布参数
beta <- 1.09
eta <- 2750

# 单条轮胎当前使用时长
t0 <- 1000
# 蒙特卡洛模拟次数
n_sim <- 10000

# 生成足够多的候选样本,筛选出大于t0的有效失效时间
valid_fail_times <- c()
while(length(valid_fail_times) < n_sim) {
  candidates <- rweibull(n_sim * 2, shape = beta, scale = eta)
  valid_fail_times <- c(valid_fail_times, candidates[candidates > t0])
}
valid_fail_times <- valid_fail_times[1:n_sim]

# 计算剩余寿命
remaining_life <- valid_fail_times - t0

# 查看剩余寿命分布
summary(remaining_life)
hist(remaining_life, breaks = 30, main = "剩余寿命分布(接受-拒绝法)")

方法2:逆变换法(高效最优)

利用Weibull条件分布的逆CDF直接生成剩余寿命样本,无需丢弃任何样本,效率更高,适合所有场景。

推导后的生成公式:
对于当前使用时长t0,剩余寿命X可通过以下公式生成:
$$X = \eta \times \left( \left( \frac{t0}{\eta} \right)^\beta - \ln(1 - U) \right)^{1/\beta} - t0$$
其中U是[0,1]区间的均匀分布随机数。

R代码实现:

beta <- 1.09
eta <- 2750
t0 <- 1000
n_sim <- 10000

# 生成均匀随机数
u <- runif(n_sim)

# 计算剩余寿命
remaining_life <- eta * ( (t0/eta)^beta - log(1 - u) )^(1/beta) - t0

# 查看结果
summary(remaining_life)
hist(remaining_life, breaks = 30, main = "剩余寿命分布(逆变换法)")

批量处理1427条在役轮胎

针对你的1427条轮胎数据,可以用向量化操作快速完成批量模拟:

set.seed(123) # 设置随机种子保证结果可复现
# 假设t0_vec是你的1427条轮胎当前使用时长向量
t0_vec <- sample(500:3000, 1427, replace = TRUE) 
n_sim <- 10000

# 生成n_sim行、1427列的均匀随机数矩阵
u_matrix <- matrix(runif(n_sim * length(t0_vec)), nrow = n_sim, ncol = length(t0_vec))

# 向量化计算所有轮胎的剩余寿命模拟值
remaining_life_matrix <- eta * ( (t0_vec/eta)^beta - log(1 - u_matrix) )^(1/beta) - t0_vec

# 计算每条轮胎未来三个月(假设为2160小时)内失效的概率
# 即剩余寿命≤2160的模拟次数占比
fail_prob <- colMeans(remaining_life_matrix <= 2160)

# 查看失效概率的分布情况
summary(fail_prob)
hist(fail_prob, breaks = 30, main = "未来三个月失效概率分布")

为什么之前的方法不对?

你之前直接用rweibull()生成的失效时间如果小于t0,本质是生成了一个「已经失效的轮胎」样本,但你的数据集是在役轮胎,这些样本完全不符合现实场景——因为这些轮胎已经用了t0小时还没坏,所以它们的真实失效时间必然大于t0。要么丢弃这些无效样本(接受-拒绝法),要么直接用条件分布生成有效样本(逆变换法),后者显然是更优的选择。

内容的提问来源于stack exchange,提问作者kelsey Kiser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:36:20