我想使用负对数似然作为目标函数,对带有正确检查条件的粗略高斯数据建模。我的目标函数如下所示,但是我不确定如何得出用于计算的标准偏差。通常,我们只是将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))
答案 0 :(得分:0)
仅将响应变量的标准偏差用作此处的标准偏差是否安全?
绝对不能,因为正确的审查数据点,观察到的分布不适合用于计算摘要统计量。
必须同时计算平均值和标准偏差的MLE。您的代码在其中,但让我帮忙:
import numpy as np
from scipy.stats import norm
def censored_nll(params, events, durations):
mu, std_dev = params
observed_durations = durations[events==1] # or events==True
censored_durations = durations[~(events==1)] # or events==True
return -(np.log(norm.pdf(observed_durations, loc=mu, scale=std_dev)).sum() \
+ np.log(norm.sf(censored_durations, loc=mu, scale=std_dev)).sum())
scipy.optimize.minimize(censored_nll, x0=np.array([0,1]), args=(events, durations))