仅知道最小值/最大值的数据的统计方法

机器算法验证 生物统计学 人口 界限 间隔审查
2022-02-01 03:59:15

是否有一个统计分支可以处理精确值未知的数据,但对于每个个体,我们知道该值的最大值或最小值

我怀疑我的问题主要源于我正在努力用统计术语表达它,但希望一个例子有助于澄清:

假设有两个相连的种群,这样,在某个时候,成员可能会“过渡”到,但反过来是不可能的。转换的时间是可变的,但不是随机的。例如,可以是“没有后代的个体”,可以是“至少有一个后代的个体”。我对这种进展发生的年龄感兴趣,但我只有横截面数据。对于任何给定的个人,我可以找出他们属于还是我也知道这些人的年龄。对于种群ABABABABA,我知道过渡的年龄将大于他们当前的年龄。同样,对于的成员,我知道过渡的年龄小于他们当前的年龄。但我不知道确切的值。B

假设我有一些其他因素想与过渡年龄进行比较。例如,我想知道一个人的亚种或体型是否会影响第一个后代的年龄。我肯定有一些有用的信息可以为这些问题提供信息:平均而言,在中的个人中,年龄较大的人将有较晚的过渡。信息不完善,尤其是对于年轻人而言。反之亦然AB

是否有既定的方法来处理此类数据我不一定需要如何进行这种分析的完整方法,只需要一些搜索词或有用的资源就可以让我在正确的地方开始!

警告:我正在做一个简化的假设,即从的转换是瞬时的。我还准备假设大多数人在某个时候会进步到,假设他们活得足够长。而且我意识到纵向数据会非常有用,但假设在这种情况下它不可用。ABB

抱歉,如果这是重复的,正如我所说,我的部分问题是我不知道我应该搜索什么。出于同样的原因,请酌情添加其他标签。

样本数据集:Ssp 表示两个亚种之一。后代表示没有后代 ( ) 或至少有一个后代 ( )XYAB

 age ssp offsp
  21   Y     A
  20   Y     B
  26   X     B
  33   X     B
  33   X     A
  24   X     B
  34   Y     B
  22   Y     B
  10   Y     B
  20   Y     A
  44   X     B
  18   Y     A
  11   Y     B
  27   X     A
  31   X     B
  14   Y     B
  41   X     B
  15   Y     A
  33   X     B
  24   X     B
  11   Y     A
  28   X     A
  22   X     B
  16   Y     A
  16   Y     B
  24   Y     B
  20   Y     B
  18   X     B
  21   Y     B
  16   Y     B
  24   Y     A
  39   X     B
  13   Y     A
  10   Y     B
  18   Y     A
  16   Y     A
  21   X     A
  26   X     B
  11   Y     A
  40   X     B
   8   Y     A
  41   X     B
  29   X     B
  53   X     B
  34   X     B
  34   X     B
  15   Y     A
  40   X     B
  30   X     A
  40   X     B

编辑:示例数据集已更改,因为它不是很有代表性

3个回答

这称为当前状态数据您获得了数据的一个横截面视图,并且关于响应,您所知道的是,在每个受试者的观察年龄,事件(在您的情况下:从 A 过渡到 B)已经发生或未发生。这是区间删失的一个特例

为了正式定义它,让是主题的(未观察到的)真实事件时间。为主题的检查时间(在您的情况下:检查年龄)。如果,则数据被右删失否则,数据将被删失我们对建模的分布很感兴趣。对于回归模型,我们感兴趣的是对分布如何随一组协变量变化进行建模。TiiCiiCi<TiTX

要使用区间删失方法对此进行分析,您需要将数据放入一般区间删失格式。也就是说,对于每个主题,我们都有区间,它表示我们知道要包含因此,如果主题在检查时间被正确审查,我们将写作如果在处对其进行审查,我们会将其表示为(li,ri)Tiici(ci,)ci(0,ci)

无耻插件:如果你想使用回归模型来分析你的数据,这可以在 R 中使用icenReg (我是作者)来完成。事实上,在关于当前状态数据的类似问题中,OP 提供了一个很好的使用 icenReg 的演示他首先表明忽略审查部分并使用逻辑回归会导致偏差(重要说明:他指的是使用逻辑回归而不调整年龄。稍后会详细介绍。)

另一个很棒的包是interval,其中包含对数秩统计测试以及其他工具。

编辑:

@EdM 建议使用逻辑回归来回答问题。我不公平地对此不屑一顾,说您将不得不担心时间的功能形式。虽然我支持你应该担心时间的函数形式的说法,但我意识到有一个非常合理的转换可以导致一个合理的参数估计量。

特别是,如果我们在逻辑回归模型中使用 log(time) 作为协变量,我们最终会得到一个具有 log-logistic 基线的比例优势模型。

要看到这一点,首先考虑比例优势回归模型定义为

Odds(t|X,β)=eXTβOddso(t)

其中是时间的基线生存几率。请注意,回归效果与逻辑回归相同。所以我们现在需要做的就是证明基线分布是对数逻辑的。Oddso(t)t

现在考虑以 log(Time) 作为协变量的逻辑回归。然后我们有

P(Y=1|T=t)=exp(β0+β1log(t))1+exp(β0+β1log(t))

通过一些工作,您可以将其视为对数逻辑模型的 CDF(具有参数的非线性变换)。

R证明拟合是等价的:

> library(icenReg)
> data(miceData)
> 
> ## miceData contains current status data about presence 
> ## of tumors at sacrifice in two groups
> ## in interval censored format: 
> ## l = lower end of interval, u = upper end
> ## first three mice all left censored
> 
> head(miceData, 3)
  l   u grp
1 0 381  ce
2 0 477  ce
3 0 485  ce
> 
> ## To fit this with logistic regression, 
> ## we need to extract age at sacrifice
> ## if the observation is left censored, 
> ## this is the upper end of the interval
> ## if right censored, is the lower end of interval
> 
> age <- numeric()
> isLeftCensored <- miceData$l == 0
> age[isLeftCensored] <- miceData$u[isLeftCensored]
> age[!isLeftCensored] <- miceData$l[!isLeftCensored]
> 
> log_age <- log(age)
> resp <- !isLeftCensored
> 
> 
> ## Fitting logistic regression model
> logReg_fit <- glm(resp ~ log_age + grp, 
+                     data = miceData, family = binomial)
> 
> ## Fitting proportional odds regression model with log-logistic baseline
> ## interval censored model
> ic_fit <- ic_par(cbind(l,u) ~ grp, 
+            model = 'po', dist = 'loglogistic', data = miceData)
> 
> summary(logReg_fit)

Call:
glm(formula = resp ~ log_age + grp, family = binomial, data = miceData)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.1413  -0.8052   0.5712   0.8778   1.8767  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)   
(Intercept)  18.3526     6.7149   2.733  0.00627 **
log_age      -2.7203     1.0414  -2.612  0.00900 **
grpge        -1.1721     0.4713  -2.487  0.01288 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 196.84  on 143  degrees of freedom
Residual deviance: 160.61  on 141  degrees of freedom
AIC: 166.61

Number of Fisher Scoring iterations: 5

> summary(ic_fit)

Model:  Proportional Odds
Baseline:  loglogistic 
Call: ic_par(formula = cbind(l, u) ~ grp, data = miceData, model = "po", 
    dist = "loglogistic")

          Estimate Exp(Est) Std.Error z-value        p
log_alpha    6.603 737.2000   0.07747  85.240 0.000000
log_beta     1.001   2.7200   0.38280   2.614 0.008943
grpge       -1.172   0.3097   0.47130  -2.487 0.012880

final llk =  -80.30575 
Iterations =  10 
> 
> ## Comparing loglikelihoods
> logReg_fit$deviance/(-2) - ic_fit$llk
[1] 2.643219e-12

请注意,grp每个模型中的效果是相同的,最终的对数似然仅因数值误差而有所不同。基线参数(即逻辑回归的截距和 log_age,区间删失模型的 alpha 和 beta)是不同的参数化,因此它们不相等。

所以你有它:使用逻辑回归相当于用对数逻辑基线分布拟合比例赔率。如果您可以拟合此参数模型,则逻辑回归是非常合理的。我确实警告说,对于区间删失数据,由于难以评估模型拟合,半参数模型通常受到青睐,如果我真的认为没有完全参数模型的位置,我不会将它们包含在icenReg.

这是审查/粗略数据的情况。假设您认为您的数据来自具有良好连续(等)pdf的分布f(x)和 cdfF(x). 准确时间时事件数据的标准解决方案xi主题的事件i已知的是,似然贡献是f(xi). 如果我们只知道时间大于yi(右删失),则似然贡献为1F(yi)在独立审查的假设下。如果我们知道时间小于zi(左删失),则似然贡献为F(zi). 最后,如果时间落入某个区间(yi,zi],那么可能性贡献将是F(zi)F(yi).

这个问题似乎可以通过逻辑回归很好地处理。

您有两个状态,A 和 B,并且想要检查特定个体是否已从状态 A 不可逆地切换到状态 B 的概率。一个基本的预测变量是观察时的年龄。另一个或多个感兴趣的因素将是额外的预测变量。

然后,您的逻辑模型将使用 A/B 状态、年龄和其他因素的实际观察结果来估计处于状态 B 的概率作为这些预测变量的函数。该概率超过 0.5 的年龄可用作过渡时间的估计值,然后您将检查其他因素对预测的过渡时间的影响。

为回应讨论而补充:

与任何线性模型一样,您需要确保您的预测变量以与结果变量成线性关系的方式进行转换,在这种情况下,是移动到状态 B 的概率的对数几率。这不一定一个微不足道的问题。@CliffAB 的回答显示了如何使用年龄变量的对数转换。