1

我们实际上是在尝试在 R 中重现模型的结果,该模型已在 SAS 中编码。模型如下所示:ln(Duration)=X'B+S*e,其中 X 是 10 个自变量的矩阵,B 是系数向量,S 是尺度参数,e 是误差项。

我们使用的数据集在这里

在那里您也可以找到 SAS 代码。

第一次尝试如下所示:

Dur <- survreg(Surv(Duration, Censor==0) ~ Acq_Expense + Acq_Expense_SQ + Ret_Expense +  Ret_Expense_SQ + Crossbuy + Frequency + Frequency_SQ + Industry + Revenue + Employees, dist='weibull', data = daten [daten$Acquisition==1, ])
summary(Dur)

但是这个模型中的系数是不正确的。在下中,您可以看到左侧的 R 输出和右侧的正确 SAS 输出:

在此处输入图像描述

我们检测到平方项(Acq_Expense_SQ,Ret_Expense_SQ)存在问题,因为当我们排除这些项时,所有其他估计都更接近正确值。因此,我们尝试将平方项缩小 0.001 倍。

    Acq_Expense_SQ2 <- data.frame(0.001*daten$Acq_Expense_SQ)
    colnames(Acq_Expense_SQ2) <- c("Acq_Expense_SQ2")
    daten["Acq_Expense_SQ2"] <- Acq_Expense_SQ2
    date3 <- subset(daten, daten$Acquisition==1)

    Ret_Expense_SQ2 <- data.frame(0.001*daten$Ret_Expense_SQ)
    colnames(Ret_Expense_SQ2) <- c("Ret_Expense_SQ2")
    daten["Ret_Expense_SQ2"] <- Ret_Expense_SQ2
    date3 <- subset(daten, daten$Acquisition==1)

    Dur <- survreg(Surv(Duration, Censor == 0, type = 'right') ~ Acq_Expense + Acq_Expense_SQ2 + Ret_Expense + Ret_Expense_SQ2 + Crossbuy + Frequency + Frequency_SQ + Industry + Revenue + Employees, dist='weibull', scale = 0, data = date3)
    summary(Dur)

现在,系数更接近正确的系数,但我不知道为什么。这个问题有可能的解释吗?或者您是否发现我们的代码存在另一个问题?

4

0 回答 0