Hello, I have been checking the prior postings and responses, which likely enables me to make some shifts in my code in a desirable way. I have been running sim() code using simulation data in order to use the functions, getPower and findpower.
While running the sim(), I received an error message such that
Error in lav_data_full(data = data, group = group, cluster = cluster, :
lavaan ERROR: grouping variable ‘re_edu’ not found;
variable names found in data frame are:
bi pin pdn dnc dn_n group
Error in vnames(lav, type = "ov.ord", group = group.values[g]) :
lavaan ERROR: group column does not contain value `NA'
In addition: Warning message:
In (function (model = NULL, model.type = "sem", meanstructure = FALSE, :
lavaan WARNING: some regression coefficients are unspecified and will be set to zero
It is a multi-group path analysis consisting of 1 continuous dependent variable, 3 continuous mediators and 1 nominal independent variable. The grouping variable is "re_edu” with two categories in the dataset.
Here is the code I was using. Please help me let me know how to correct the code in order to work it out.
library(readxl)
nfscm <- read_excel("~/Desktop/numeric.xls")
View(nfscm)
nfscm <- data.frame(nfscm)
#population model
pop.model.numeric.low <- "
# regression part
dv ~ .482*med3 + .437*med2 + -.417*med1 + .085*iv
med3 ~ .443*med2
med2 ~ .778*med1
med1 ~ .606*iv
# variance part
dv ~~ 0.622*dv
med3 ~~ 0.804*med3
med2 ~~ 0.395*med2
med1 ~~ 0.633*med1"
pop.model.numeric.high <- "
# regression part
dv ~ .04*med3 + .693*med2 + -.346*med1 + .278*iv
med3 ~ .523*med2
med2 ~ .701*med1
med1 ~ .403*iv
# variance part
dv ~~ 0.603*dv
med3 ~~ 0.726*med3
med2 ~~ 0.509*med2
med1 ~~ 0.837*med1"
##Simulate population models for each group and combine into dataframe
pop.data.low <- simulateData(pop.model.numeric.low, sample.nobs = 100000 )
pop.data.high <- simulateData(pop.model.numeric.high, sample.nobs = 100000)
pop.data <- rdvnd(pop.data.low, pop.data.high)
pop.data <- data.frame(pop.data, group = rep(c(0,1), each = 100000))
#analysismodel
model.numeric <- "
group:0 #group low
#regression part
dv ~ med3 + med2 + med1 + iv
med3 ~ med2
med2 ~ med1
med1 ~ iv
# variance part
dv ~~ dv
med3 ~~ med3
med2 ~~ med2
med1 ~~ med1
group:1 #group high
#regression part
dv ~ med3 + med2 + med1 + iv
med3 ~ med2
med2 ~ med1
med1 ~ iv
# variance part
dv ~~ dv
med3 ~~ med3
med2 ~~ med2
med1 ~~ med1"
Output <- sim(2, model = model.numeric, n = list(48, 48), rawData = pop.data, data = nfscm, group = "re_edu", std.lv = TRUE, lavaanfun = "lavaan") #testing with small replications
Output <- sim(10000, model = model.numeric, n = list(48, 48), rawData = pop.data, data = nfscm, group = "re_edu", std.lv = TRUE, lavaanfun = "lavaan")
summary(Output)
power.edu1 <- getPower(Output, alpha = 0.05)
power.edu2 <- getPower(Output, nVal = c(48, 59))
summary(power.edu1)
summary(power.edu2)
power.edu1 <- data.frame(power.edu1)
power.edu2 <- data.frame(power.edu2)
findPower(power.edu1, "N", 0.80)
findPower(power.edu2, "N", 0.80)
--
You received this message because you are subscribed to the Google Groups "lavaan" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/e0104f4b-6895-406d-96ad-27c2815bb278n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/CAKpMYbJeifr%2BQy7P4Bw9kn%2B4Bm2CmTzw%3DVYj5g%2BmCOrgLTLhYA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/97F2E0B0-F1B4-420D-9B40-7BD977A9A4C5%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/CAKpMYb%2Bsrm3xcS_GY5_US2KpugH6295k2kvXvMzpw%3D3FV_7-Xw%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/A7275ABB-3DE7-490A-9B50-ACB7662162F6%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/A7275ABB-3DE7-490A-9B50-ACB7662162F6%40gmail.com.
On May 17, 2022, at 2:16 AMCDT, Hyeseung Koh <thedinosa...@gmail.com> wrote:
I can generate random numbers to make a dataset for this case. I excluded other variables except for the needed variables in the file.
<2022-05-17 numeric.xlsx>
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/CAKpMYbJVEmKiNvm2gtJv2O_jDVduPYmP7g-6rfQUnQZLCbsuBA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/138D3E97-7376-4743-B56A-CCF967DEB86F%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/CAKpMYb%2B7vuNn1FwKmjiQAJ8C7Mwds7fEMECXRej4%3DD%3DtcMwVxQ%40mail.gmail.com.
In this thread, I received this corrected code below and got an error message for each group.
When running this part, respectively, R showed the following error message, respectively:
> findPower(power.edu1, "N", 0.80)
Error in powerTable[, ivCol] : incorrect number of dimensions
> findPower(power.edu2, "N", 0.80)
Error in powerTable[, ivCol] : incorrect number of dimensions
When I put the power.edu1 to data.frame, power.edu1 <- data.frame(power.edu1), which I observed in this Google group, and then ran the code, findPower(power.edu1, "N", 0.80), it showed:
> power.edu1 <- data.frame(power.edu1)
> findPower(power.edu1, "N", 0.80)
Error in findPower(power.edu1, "N", 0.8) :
Cannot find the specified target column
> power.edu2 <- data.frame(power.edu2)
> findPower(power.edu2, "N", 0.80)
Error in findPower(power.edu2, "N", 0.8) :
Cannot find the specified target column
The findPower works when I use Output1 <- sim(nRep = NULL, model = pop.model, n=100:500, generate = pop.model.numeric.low, std.lv=TRUE, lavaanfun = "lavaan",seed="free number") while it did not work when I shifted the nRep = "free number" from nRep = NULL, and n="free number" from n=100:500. To shift the number of repetition, I need to change the format of n.
Is this Output11 <- sim(nRep = "free number", model = pop.model, n="free number", generate = pop.model.numeric.low, std.lv=TRUE, lavaanfun = "lavaan",seed="free number") available code for this analysis in R?
Would you let me know how to make the findPower work with Output11 <- sim(nRep = "free number", model = pop.model, n="free number", generate = pop.model.numeric.low, std.lv=TRUE, lavaanfun = "lavaan",seed="free number") when it is available code for this analysis in R?
Here is the code I used.
library(lavaan)
library(simsem)
#data
random_numeric
#################### population model
pop.model <-"
#regression part
dv ~ med3 + med2 + med1 + iv
med3 ~ med2
med2 ~ med1
med1 ~ iv
# variance part
dv ~~ dv
med3 ~~ med3
med2 ~~ med2
med1 ~~ med1
"
################# data generation based on the parameters for low group
#(i think parameters are from your real data so your data contribute to random sample generation)
pop.model.numeric.low <-
"# regression part
dv ~ .482*med3 + .437*med2 + -.417*med1 + .085*iv
med3 ~ .443*med2
med2 ~ .778*med1
med1 ~ .606*iv
# variance part
dv ~~ 0.622*dv
med3 ~~ 0.804*med3
med2 ~~ 0.395*med2
med1 ~~ 0.633*med1"
Output1 <- sim(nRep = NULL, model = pop.model, n=100:500, generate = pop.model.numeric.low,
std.lv=TRUE, lavaanfun = "lavaan",seed="free number")
Output11<- sim(nRep = "free number", model = pop.model, n="free number", generate = pop.model.numeric.low, std.lv=TRUE, lavaanfun = "lavaan",seed="free number")
summary(Output1)
summary(Output11)
############################### power for different parameters and sample size in Output1
power.edu1 <- getPower(Output1)
power.edu11 <- getPower(Output11)
power.edu1
power.edu11
getPower(Output1, nVal = 150)
getPower(Output11, nVal = 150)
findPower(power.edu1, "N", 0.80)
findPower(power.edu11, "N", 0.80)
############################## data generation based on the parameters for high group
#(i think parameters are from your real data in high group so your data contribute to random sample generation)
pop.model.numeric.high <-"
# regression part
dv ~ .04*med3 + .693*med2 + -.346*med1 + .278*iv
med3 ~ .523*med2
med2 ~ .701*med1
med1 ~ .403*iv
# variance part
dv ~~ 0.603*dv
med3 ~~ 0.726*med3
med2 ~~ 0.509*med2
med1 ~~ 0.837*med1"
Output2 <- sim(nRep = NULL, model = pop.model, n =100:500, generate = pop.model.numeric.high,
std.lv=TRUE, lavaanfun = "lavaan",seed="free number")
Output22<- sim(nRep = "free number", model = pop.model, n="free number", generate = pop.model.numeric.high, std.lv=TRUE, lavaanfun = "lavaan",seed="free number")
summary(Output2)
summary(Output22)
######################power for different parameters and sample size in Output2
power.edu2 <- getPower(Output2)
power.edu22 <- getPower(Output22)
power.edu2
power.edu22
getPower(Output2, nVal = 150)
getPower(Output22, nVal = 150)
findPower(power.edu2, "N", 0.80)
findPower(power.edu22, "N", 0.80)
In addition, I would like to make sure whether this is for the power analysis for a multi-group analysis. Otherwise, may I ask which parts would need to be corrected?
--
You received this message because you are subscribed to the Google Groups "lavaan" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/3477b5a2-53e0-4184-8b48-5a80f046fabbn%40googlegroups.com.