मैंने एक साथ कई लवन मॉडल (5 अलग-अलग डेटासेट से) चलाने के लिए एक फ़ंक्शन लिखा था। आउटपुट में मुझे 5 अलग-अलग आउटपुट मिलते हैं। हालांकि, मैं इनमें से प्रत्येक मॉडल से एक विशिष्ट अनुमान निकालना चाहूंगा, क्योंकि मैं इनका उपयोग मेटा-विश्लेषण में कर रहा हूं (और मेरे पास कई और मॉडल हैं)
यहाँ मॉडल चलाने के लिए मेरा कोड है:
df_list <- list ('Y1'=emo_dyn_1,'Y2'=emo_dyn_2,'Y3'=emo_dyn_3,'Y4'=emo_dyn_4,'Y5'=emo_dyn_5)
model <- 'DepB ~ isdNA + imeanNA + sex + age'
fun = function(emo_dyn){
fit=sem(model,
data=emo_dyn,
estimator = "MLR",
missing = "ml.x")
summ = summary(fit, standardized = TRUE)
list(fit = fit,summary = summ)
}
results <- lapply(df_list,fun)
names(results) <- names(df_list)
results
और इस तरह मैं गुणांक निकालता हूं। यह थोड़े इसे डेटाफ्रेम बनाता है और फिर मैं इससे विशिष्ट मूल्य निकालता हूं। सुनिश्चित नहीं है कि यह सबसे अच्छा विकल्प है। यह एक विशिष्ट पथ के मानकीकृत अनुमान के बारे में है। लेकिन यह सिर्फ कॉपी और पेस्ट है और मुझे यकीन है कि यह आसान हो जाता है, लेकिन मुझे नहीं पता कि इस लूप को कैसे लिखना है।
emo_dyn_1_est<-standardizedSolution(results$Y1$fit) # Standardised coefficients
emo_dyn_1_est_1<-emo_dyn_1_est[1, 4]
emo_dyn_1_est_1
emo_dyn_2_est<-standardizedSolution(results$Y2$fit) # Standardised coefficients
emo_dyn_2_est_2<-emo_dyn_2_est[1, 4]
emo_dyn_2_est_2
emo_dyn_3_est<-standardizedSolution(results$Y3$fit) # Standardised coefficients
emo_dyn_3_est_3<-emo_dyn_3_est[1, 4]
emo_dyn_3_est_3
emo_dyn_4_est<-standardizedSolution(results$Y4$fit) # Standardised coefficients
emo_dyn_4_est_4<-emo_dyn_4_est[1, 4]
emo_dyn_4_est_4
emo_dyn_5_est<-standardizedSolution(results$Y5$fit) # Standardised coefficients
emo_dyn_5_est_5<-emo_dyn_5_est[1, 4]
emo_dyn_5_est_5
1 उत्तर
lavaan
में parameterEstimates
फ़ंक्शन है जिससे आप कुछ ऐसा कर सकते हैं:
df_list <- list ('Y1'=emo_dyn_1,'Y2'=emo_dyn_2,'Y3'=emo_dyn_3,'Y4'=emo_dyn_4,'Y5'=emo_dyn_5)
model <- 'DepB ~ isdNA + imeanNA + sex + age'
fun <- function(emo_dyn){
fit <- sem(model,
data=emo_dyn,
estimator = "MLR",
missing = "ml.x")
fit
}
results <- lapply(df_list,fun)
names(results) <- names(df_list)
## Get a specific parameter
get_param <- function(fit, coef_pos) {
param <- parameterEstimates(fit, standardized = TRUE)[coef_pos, "std.lv"]
param
}
lapply(results, get_param, coef_pos = 1)
मैंने एक बदलाव किया: आपके lapply
में परिणाम प्राप्त करने के लिए मैंने केवल मॉडल को फिट रखा। यदि आप सभी सारांश चाहते हैं तो आप केवल lapply(results, summary)
कर सकते हैं। get_param
फ़ंक्शन मानता है कि आप अपने इच्छित पैरामीटर की परिणाम तालिका में स्थिति जानते हैं।
यदि आप परिणामों के लिए अपने मौजूदा lapply
को रखना चाहते हैं तो कुछ इस तरह काम करेगा:
results_fit_only <- lapply(results, "[[", "fit")
lapply(results_fit_only, get_param, coef_pos = 1)
lapply(results, get_param, coef_pos = 1)
में, मुझे एक त्रुटि मिलती है। आपने कहा था कि मुझे यह जानने की जरूरत है कि पैरामीटर कहां है। क्या आप जानते हैं कि मुझे यह कैसे पता चला? क्योंकि अभी मुझे त्रुटि मिलती है Error in parameterEstimates(fit, standardized = TRUE) : trying to get slot "Options" from an object of a basic class ("list") with no slots
parameterEstimates
को सीधे मॉडल फिट करने की आवश्यकता है। चूंकि आप अपने परिणामों में मॉडल फिट और सारांश संग्रहीत करते हैं, इसलिए आपको पहले फिट ऑब्जेक्ट को निकालने की आवश्यकता है या मॉडल अनुमान के लिए अपने फ़ंक्शन को केवल मॉडल फिट वापस करने के लिए संशोधित करना होगा।