计算R中的LD50,与SAS中的值不同

计算R中的LD50,与SAS中的值不同,r,sas,R,Sas,我试图计算暴露在化合物中的昆虫的LD50、LD90和LD95。我的问题是,我使用不同的程序得到了不同的值,我很难找到代码的不同之处。我使用R中的ecotox包来实现LC_probit函数 下面是我的数据 Dose Mortality Number 10 12 12 1 8 12 0.5 10 12 0.1 9 12 0.05 11 12 0.01 0 12 0.005 0 12 0.001 0 12 在使用新冠病毒之前,我可以访问安装了SAS的计算机,这是我使用的代码(包括我的数据) 这是我为

我试图计算暴露在化合物中的昆虫的LD50、LD90和LD95。我的问题是,我使用不同的程序得到了不同的值,我很难找到代码的不同之处。我使用R中的ecotox包来实现LC_probit函数

下面是我的数据

Dose Mortality Number
10 12 12
1 8 12
0.5 10 12
0.1 9 12
0.05 11 12
0.01 0 12
0.005 0 12
0.001 0 12
在使用新冠病毒之前,我可以访问安装了SAS的计算机,这是我使用的代码(包括我的数据)

这是我为R使用的代码(我确保在NJ_48中不使用控制剂量,因为这是LC_probit的文档所说的)


对于LD50、90和95值,SAS给出0.03092、0.55951和1.27153,而R给出0.0665、0.909和1.91。这种差异从何而来?

在SAS中运行代码会在日志中产生以下警告

警告:0.5340102335的相对梯度收敛标准大于0.0001的限制。这种趋同是值得怀疑的

警告:尽管有上述警告,程序仍在继续。所示结果基于上一次最大似然迭代。模型拟合的有效性值得怀疑

第一个警告甚至出现在结果页面上:


这将表明它无法有效地趋同。在没有达到收敛的情况下,我认为我们不应该期望SAS和R产生相同的结果。

在SAS中运行代码会在日志中产生以下警告

警告:0.5340102335的相对梯度收敛标准大于0.0001的限制。这种趋同是值得怀疑的

警告:尽管有上述警告,程序仍在继续。所示结果基于上一次最大似然迭代。模型拟合的有效性值得怀疑

第一个警告甚至出现在结果页面上:


这将表明它无法有效地趋同。在没有达到收敛的情况下,我认为我们不应该期望SAS和R产生相同的结果。

数据中有一组点在y=0左右,其他点在y=1左右,因此很难得到有意义的拟合。S的中间部分几乎是垂直的。不幸的是,即使是沿着剂量梯度更线性的数据,我也有同样的问题。我知道,如果数据集中的数据是极端的y,那么拟合可能会很奇怪,但我不明白当两个程序都引用相同的概率源时,这两个程序如何计算出不同的拟合度。当你在SAS中运行代码时,你会收到警告,你是如何解决这些问题的?我想我从未注意到任何警告(我对SAS非常不熟悉),所以我想我忽略了它们?会产生什么样的误差?数据有一堆点在y=0附近,其他点在y=1附近,因此很难得到有意义的拟合。S的中间部分几乎是垂直的。不幸的是,即使数据沿剂量gr更线性,我也有同样的问题adient.我知道,如果数据集中的数据是极端的y,那么拟合可能会很奇怪,但我不明白当两个程序都引用相同的probit源时,这两个程序如何计算出不同的拟合度。当你在SAS中运行代码时,你会收到警告,你是如何解决这些问题的?我想我从来没有注意到任何警告(我对SAS非常不熟悉),所以我想我忽略了它们?它会产生什么样的错误?
data CPB;
input conc mort;
number=12;
datalines;
10 12
1 8
0.5 10
0.1 9
0.05 11
0.01 0
0.005 0
0.001 0
0 0
;
*proc sort;
proc probit data=CPB log10 optc inversecl plots=(predpplot ippplot);
model mort/number=conc;
output out=new p=p_hat;
proc print;
run;
NJ_48_probit = LC_probit((Mortality / Number) ~ log10(Dose), data = NJ_48, p = c(50,90,95), weights = Number, het_sig=0.1)