Как вы запускаете нелинейную модерацию, используя пакет nlsem в R? - PullRequest
0 голосов
/ 26 марта 2020

Я просто пытаюсь узнать, как использовать пакет nlsem в R для подгонки нелинейного SEMM, но я продолжаю сталкиваться с ошибкой "Постериальная вероятность не может быть правильно рассчитана. Выберите другие начальные параметры", когда я пытаюсь создать Res Res. Я пытаюсь оценить нелинейную модель, в которой скрытая переменная tas предсказывает скрытую переменную cts, модерируемую скрытой переменной ams. Я все еще довольно плохо знаком с R и очень плохо знаком с нелинейным анализом, поэтому любая помощь будет приветствоваться!

Мой код пока:

    ##nonlinear SEM
    #Select data
    FPerpSEMM<-subset(FPerp,
                select=(c("tas1", "tas3", "tas6", "tas7", "tas9", "tas13","tas14", "AMSEscalate",
                          "AMSNegAttribution", "AMSSelfAware", "AMSCalming", "cts_5", "cts_25", 
                          "cts_29", "cts_35", "cts_49", "cts_65", "cts_67", "cts_69")))
    FPerpSEMM$x1<-FPerpSEMM$tas1
    FPerpSEMM$x2<-FPerpSEMM$tas3
    FPerpSEMM$x3<-FPerpSEMM$tas6
    FPerpSEMM$x4<-FPerpSEMM$tas7
    FPerpSEMM$x5<-FPerpSEMM$tas9
    FPerpSEMM$x6<-FPerpSEMM$tas13
    FPerpSEMM$x7<-FPerpSEMM$tas14
    FPerpSEMM$x8<-FPerpSEMM$AMSEscalate
    FPerpSEMM$x9<-FPerpSEMM$AMSNegAttribution
    FPerpSEMM$x10<-FPerpSEMM$AMSSelfAware
    FPerpSEMM$x11<-FPerpSEMM$AMSCalming
    FPerpSEMM$y1<-FPerpSEMM$cts_5
    FPerpSEMM$y2<-FPerpSEMM$cts_25
    FPerpSEMM$y3<-FPerpSEMM$cts_29
    FPerpSEMM$y4<-FPerpSEMM$cts_35
    FPerpSEMM$y5<-FPerpSEMM$cts_49
    FPerpSEMM$y6<-FPerpSEMM$cts_65
    FPerpSEMM$y7<-FPerpSEMM$cts_67
    FPerpSEMM$y8<-FPerpSEMM$cts_69
    FPerpSEMMr1<-subset(FPerpSEMM,
                      select=(c("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11",
                                "y1","y2","y3","y4","y5","y6","y7","y8")))
    #Create dataframe containing only complete cases
    FPerpSEMMcc<-na.omit(FPerpSEMMr1) 
    # load data
    dat <- as.matrix(FPerpSEMMcc[, c(12:19, 1:7, 8:11)])
    # specify model of class SEMM
    model<- specify_sem(num.x = 11, num.y = 8, num.xi = 2, num.eta = 1,
                         xi = "x1-x7,x8-x11", eta = "y1-y8",
                     num.classes = 3, interaction = "xi1:xi2", rel.lat = "eta1~xi1+xi2",
                constraints = "direct1")
    class(model)
    #fit model
    dat <- as.matrix(FPerpSEMMcc[, c(12:19, 1:7, 8:11)])
    set.seed(911)
    pars.start <- runif(count_free_parameters(model))
    res <- em(model, dat, pars.start, convergence = 0.1, max.iter = 200)
    summary(res)
    plot(res)
...