我如何找到用 R 编写回归包的标准?
How do I find out about the standards for writing regression packages in R?
作为我工作的一部分,我需要拟合一堆 'generalised logistic' (GL)* 回归模型(有一些与这个问题无关的特殊限制)。目前没有允许我这样做的包,所以我编写了自己的函数来优化可能性。它很乱,目前还不是那么笼统,因为它是针对我需要它完成的特定工作量身定制的。
我在想把它变成一个更通用的包,这将是我写的第一个包。
我的问题是:
1) 我是否遗漏了一个技巧,是否可以将我自己的 link 函数附加到 GLM 而不是从头开始编写?
2) 他们的信息是否符合回归包预期的标准,例如预期的 "summary" 输出、输出的标准化名称、标准公式输入等?
3) 有什么好的"how to write a package in R"资源可以推荐吗?
如果需要,我很乐意提供更具体的信息。非常感谢任何回复。
最佳。
应该可以创建您自己的 GLM link 函数。您可以执行以下操作:
my_link_function <- function(mu)
{
# Body of your link function
}
my_inverse_link_function <- function(eta)
{
# Body of your inverse link function
}
my_derivative_function <- function(eta)
{
# function describing dmu / delta
}
my_valid_eta_function <- function(eta)
{
# return TRUE if eta is in domain of inverse_link_function, otherwise FALSE
}
my_link <- list(linkfun = my_link_function,
linkinv = my_inverse_link_function,
mu.eta = my_derivative_function,
valideta = my_valid_eta_function,,
name = "my_link")
class(my_link) <- "link-glm"
现在您可以这样做了:
glm(my_var1 ~ my_var2, family = binomial(my_link))
作为我工作的一部分,我需要拟合一堆 'generalised logistic' (GL)* 回归模型(有一些与这个问题无关的特殊限制)。目前没有允许我这样做的包,所以我编写了自己的函数来优化可能性。它很乱,目前还不是那么笼统,因为它是针对我需要它完成的特定工作量身定制的。
我在想把它变成一个更通用的包,这将是我写的第一个包。
我的问题是:
1) 我是否遗漏了一个技巧,是否可以将我自己的 link 函数附加到 GLM 而不是从头开始编写?
2) 他们的信息是否符合回归包预期的标准,例如预期的 "summary" 输出、输出的标准化名称、标准公式输入等?
3) 有什么好的"how to write a package in R"资源可以推荐吗?
如果需要,我很乐意提供更具体的信息。非常感谢任何回复。
最佳。
应该可以创建您自己的 GLM link 函数。您可以执行以下操作:
my_link_function <- function(mu)
{
# Body of your link function
}
my_inverse_link_function <- function(eta)
{
# Body of your inverse link function
}
my_derivative_function <- function(eta)
{
# function describing dmu / delta
}
my_valid_eta_function <- function(eta)
{
# return TRUE if eta is in domain of inverse_link_function, otherwise FALSE
}
my_link <- list(linkfun = my_link_function,
linkinv = my_inverse_link_function,
mu.eta = my_derivative_function,
valideta = my_valid_eta_function,,
name = "my_link")
class(my_link) <- "link-glm"
现在您可以这样做了:
glm(my_var1 ~ my_var2, family = binomial(my_link))