Python 删失数据的负对数似然

Python 删失数据的负对数似然,python,machine-learning,statistics,survival-analysis,Python,Machine Learning,Statistics,Survival Analysis,我想使用负对数似然函数作为目标函数,用右截尾对大致高斯数据进行建模。我的目标函数如下所示,但我不确定如何计算出用于计算的标准偏差。通常情况下,我们只是最小化高斯最大似然的RMSE,标准偏差降低到可以安全忽略的常数。当使用1-CDF计算截尾数据的可能性时,不清楚标准偏差是否不重要。使用响应变量的标准偏差作为标准偏差是否安全 我真的不想使用一致性指数建模,我更喜欢使用非参数技术,而不是简单的cox比例风险模型 import numpy as np from scipy.stats import no

我想使用负对数似然函数作为目标函数,用右截尾对大致高斯数据进行建模。我的目标函数如下所示,但我不确定如何计算出用于计算的标准偏差。通常情况下,我们只是最小化高斯最大似然的RMSE,标准偏差降低到可以安全忽略的常数。当使用1-CDF计算截尾数据的可能性时,不清楚标准偏差是否不重要。使用响应变量的标准偏差作为标准偏差是否安全

我真的不想使用一致性指数建模,我更喜欢使用非参数技术,而不是简单的cox比例风险模型

import numpy as np
from scipy.stats import norm
def censored_nll(event, value, prediction, std_dev):
    if event:
        return -np.log(norm.pdf(value, prediction, std_dev))
    return -np.log(norm.sf(value, prediction, std_dev))
使用响应变量的标准偏差作为标准偏差是否安全

绝对不是,观察到的分布不适合计算汇总统计数据,因为有正确的截尾数据点

必须以数值方式计算平均值和标准偏差的最大似然误差。您的代码已经完成了一半,但让我帮您一把:

将numpy导入为np
从scipy.stats导入norm
def审查(参数、事件、持续时间):
mu,std_dev=params
观察到的持续时间=持续时间[事件==1]#或事件==True
删失_持续时间=持续时间[~(events==1)]#或events==True
返回-(np.log(norm.pdf(观察到的持续时间,loc=mu,scale=std\U dev)).sum()\
+np.log(norm.sf(截尾持续时间,loc=mu,scale=std\u dev)).sum()
scipy.optimize.minimize(截尾的,x0=np.array([0,1]),args=(事件,持续时间))

我的建议是咬紧牙关,写出完整的n.l.l.,并最大化mu和sigma^2。在某种逐步方案中,您首先将wrt优化为mu,然后再优化sigma^2,然后再优化mu,诸如此类,这可能是有道理的。这是一个好问题,但可能更适合stats.stackexchange.com。谢谢。关于更多内容,我想使用负对数似然函数作为目标函数来拟合非参数模型,不仅仅是计算汇总统计数据。我很好奇你是如何用参数似然建立一个非参数模型的?在随机森林或梯度增强树中的非参数模型与线性模型的比较。