使用BCNPower变换(car)和emmeans

使用BCNPower变换(car)和emmeans,r,lsmeans,R,Lsmeans,R中的car包使用非正片(BCN)实现盒式Cox。这不是一个标准的Box-Cox变换,尽管它建立在它的基础上 emmeans包可以处理转换后的数据。如果定义了适当的函数,它可以进行反向变换。make.tran下有内置转换。这是emmeans使用的接口 make.tran返回一个列表,其中包含变换、其逆、雅可比矩阵和用于测试域的函数 如何将BCN转换添加到内置转换 这只是简单地创建一个具有适当内容的新列表(如make.tran指定的)并在调用emmeans的环境中使用它的问题吗 谢谢这里有一些有用

R中的car包使用非正片(BCN)实现盒式Cox。这不是一个标准的Box-Cox变换,尽管它建立在它的基础上

emmeans包可以处理转换后的数据。如果定义了适当的函数,它可以进行反向变换。make.tran下有内置转换。这是emmeans使用的接口

make.tran返回一个列表,其中包含变换、其逆、雅可比矩阵和用于测试域的函数

如何将BCN转换添加到内置转换

这只是简单地创建一个具有适当内容的新列表(如make.tran指定的)并在调用emmeans的环境中使用它的问题吗


谢谢

这里有一些有用的东西。您需要将全局变量
lambda
gamma
设置为等于
car::bcnPower()
的相应参数值

tran=list(
linkfun=功能(mu){
s=sqrt(μ^2+γ^2)
if(绝对绝对值(λ)<1e-10)对数(.5*(μ+s))
else((0.5*(mu+s))^lambda-1)/lambda},
linkinv=功能(eta){
q=if(abs(λ)<1e-10)2*exp(eta)
其他2*(λ*eta+1)^(1/λ)
(q^2-伽马^2)/(2*q)},
mu.eta=功能(eta){
如果(abs(lambda)<1e-10){q=2*exp(eta);dq=q}
否则{q=2*(lambda*eta+1)^(1/lambda)
dq=2*(λ*eta+1)^(1/lambda-1)}
0.5*(1+(伽马/q)^2)*dq},
valideta=功能(eta)全部(eta>0),
参数=c(λ,伽马),
name=paste0(“bcnPower(,signif(lambda,3),”,“,signif(gamma,3),”)
)
然后使用
tran
,就像是通过
make.tran()
创建的一样

一个月或更长时间后,当下一个版本上载到CRAN时,将通过
make.tran(“bcnPower,c(lambda,gamma))
的方式提供