Ошибка в getMethod (резюме, подпись = FitDiff)

Я сравниваю лавовые объекты, используя semTools::compareFit. Выдает очень странное сообщение об ошибке.

Я попробовал также следующий воспроизводимый пример:

data("HolzingerSwineford1939",package="lavaan")
HS.modelA <- ' visual  =~ x1 + x2 + x3
              textual =~ x4 + x5 + x6
              speed   =~ x7 + x8 + x9'

HS.modelB<- ' visual  =~ x1 + x2
              textual =~ x4 + x5 + x6
              speed   =~ x7 + x8 + x9'
fit.A<- cfa(HS.modelA, data = HolzingerSwineford1939)
fit.B<- cfa(HS.modelB, data = HolzingerSwineford1939)
semTools::compareFit(fit.A,fit.B)

Он возвращает:

Ошибка в getMethod(summary, signal = FitDiff): не найден метод для функции 'summary' и подписи FitDiff.

Кроме того, поскольку код находится внутри функции, но я хотел бы, чтобы вывод выводился на экран, я также включил:

result<-semTools::compareFit(fit.A,fit.B)
semTools::saveFile(result, file="",what="summary", tableFormat=FALSE)

Это возвращает

Режим класса длины

  1 FitDiff      S4

Я вижу упоминание в первом сообщении об ошибке что-то связанное с summary и методами... У меня есть некоторые методы S3 summary, пытаюсь оформить в пакете для личного пользования... не уверен, что это связано... возможно ли, что я что-то напутал? Это происходит более чем в одном проекте в установке RStudio... У меня такое впечатление, что раньше это работало...

Я ценю любую помощь.


person hamagust    schedule 24.07.2020    source источник
comment
ваш код отлично работает для меня. Вероятно, у вас есть другой пакет, который в настоящее время перезаписывает сводку функций (я думаю, это ваш пакет для личного использования). Попробуйте перезапустить R, нажав: Ctrl + Shift + F10. Вы отключите все библиотеки.   -  person Edo    schedule 25.07.2020
comment
Я имею ту же самую проблему. Любые идеи о том, как решить эту проблему?   -  person JPMD    schedule 04.08.2020
comment
не совсем, @JPMD... Я начал верить, что это действительно что-то со спецификацией метода S3... когда я переустановил (а не просто перезагрузил) пакет semTools, он снова некоторое время работал... даже используя это новые сводные методы, которые я кодировал... но они возвращаются позже...   -  person hamagust    schedule 06.08.2020
comment
@JPMD, я включил код, как обойти проблему. Возможно, это не идеальное решение, поскольку оно не решает проблему для всех методов s4, но оно позволило мне решить конкретную проблему...   -  person hamagust    schedule 26.08.2020
comment
Спасибо @hamagust. Это работает для дельты хи-квадрата. Как заставить его работать с Delta CFI, Delta RMSEA и т. д.?   -  person JPMD    schedule 15.10.2020
comment
Привет @JPMD, ты имеешь в виду значимость проверки различий в других показателях соответствия? Единственный статистический тест предназначен для хи-квадрата. Итак, semtool показывает только тест на хи-квадрат... Другие меры соответствия показаны в таблице для каждой из протестированных моделей, но без теста значимости.   -  person hamagust    schedule 16.10.2020
comment
Привет @хамагуст. Да, я знаю, что вы получаете значения p только для теста дельта-хи-квадрат. Но я не получал Delta CFI, RMSEA,... в полной таблице (это была параметризация на выходе из RStudio). Спасибо!   -  person JPMD    schedule 16.10.2020


Ответы (1)


Я сообщаю здесь, как я обошел проблему.

Вывод из того, что здесь происходит:

Это действительно проблема с методами S3, которые портят отправку метода S4.

Если я загружаю showMethods(summary) перед загрузкой пакета semTools, я получаю:

Function "summary":
 <not an S4 generic function>)

Но если я загружаю showMethods(summary) после загрузки, я получаю:

Function: summary (package base)
object="ANY"
object="FitDiff"
    (inherited from: object="ANY")
object="lavaan"
object="lavaanList"
object="mle"

Итак, решение:

Учитывая структуру объекта FitDiff, я создал метод summary.FitDiff (s3):

summary.FitDiff<-function(object){
          print(object@nested)
          return(object@fit)
}

и этот метод summary используется с объектом FitDiff:

a<-semTools::compareFit(fit.A,fit.B)
summary(a)

Это не идеальное решение, идеальное решение должно включать что-то в том, как указать методы s3, не испортив все возможные методы s4, но у меня недостаточно знаний о методах s4... На данный момент это решило мою проблему...

person hamagust    schedule 26.08.2020
comment
У меня была такая же проблема, и ваше решение решило ее. Хотя я не уверен, что вполне понимаю, что происходит. Кроме того, проблема начала проявляться сравнительно недавно. Любые мысли о том, как решить эту проблему более постоянно? - person msoftrain; 16.12.2020
comment
Привет, @msoftrain, еще нет... Я тоже очень запутался... мои гипотезы связаны с тем, что метод сводки S3 испортил что-то в функции SemTools S4... Но мои знания о функциях S4 все еще очень ограничены... Если это это правда, любой пакет может испортить эту функцию... так как я считаю, что сводная функция S3 обычно используется в нескольких пакетах... - person hamagust; 16.12.2020