Как установлено, quasi()
принимает только свои предопределенные функции дисперсии, которые являются "mu (1-mu)", "mu", "mu ^ 2", "mu ^ 3" и "constant».Если вы хотите использовать один из них, вам просто нужно указать его в виде строки для аргумента variance =
.
Если вы хотите указать собственную функцию дисперсии: «Квази-семейство приметбуквенная символьная строка (или без кавычек как имя / выражение) спецификации "константа", "му (1-му)", "му", "му ^ 2" и "му ^ 3", символьный вектор длины один, принимающий единицуиз этих значений или список, содержащий компоненты varfun, validmu, dev.resids, initialize и name . "
Это из файла справки!Как я пропустил это раньше?В любом случае, все равно было бы полезно взглянуть на саму функцию quasi
, чтобы увидеть, как она определяет каждый из этих компонентов для своих предварительно установленных функций дисперсии.
Если вы хотите указать функцию дисперсиисвоего собственного создания, вам нужно посмотреть, что возвращает функция quasi()
:
structure(list(family = "quasi", link = linktemp, linkfun = stats$linkfun,
linkinv = stats$linkinv, variance = varfun, dev.resids = dev.resids,
aic = aic, mu.eta = stats$mu.eta, initialize = initialize,
validmu = validmu, valideta = stats$valideta, varfun = variance_nm),
class = "family")
Если вы наберете quasi
в консоли (без скобок), вы сможете увидеть, как эта функция создаетэта структура.Вы можете создать практически любое «семейство», которое захотите, изменив эту структуру и передав ее в аргумент glm()
family =
.На самом деле создание новой семьи, которая работает, как хотелось бы, - путь из моей глубины, но вот как ты это сделал.Будьте лектором.