मैंने एक साथ कई लवन मॉडल (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
0
Dominique Maciejewski 28 जिंदा 2021, 13:15
हाय डोमिनिक, स्वागत है :) मैं वास्तव में समझ नहीं पा रहा हूं कि आप क्या पूछ रहे हैं। ऐसा लगता है कि आप पहले से ही गुणांक तक पहुंचने में सक्षम हैं, क्या गुम है?
 – 
WurmD
28 जिंदा 2021, 14:22
नमस्ते, मैं अनुमानों तक पहुँचता हूँ, हाँ। लेकिन क्या लूप या कुछ और लिखने का कोई तरीका है, क्योंकि अब मैं सब कुछ 5 बार कॉपी और पेस्ट करता हूं।
 – 
Dominique Maciejewski
28 जिंदा 2021, 15:15

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)
1
rps1227 28 जिंदा 2021, 15:35
नमस्ते, बहुत बहुत धन्यवाद! 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
 – 
Dominique Maciejewski
28 जिंदा 2021, 16:17
ठीक है, क्षमा करें, आपका अंतिम कोड काम कर गया आपने मुझे बहुत काम बचा लिया!
 – 
Dominique Maciejewski
28 जिंदा 2021, 16:22
चीयर्स! जहां तक ​​आपकी त्रुटि का संबंध है, parameterEstimates को सीधे मॉडल फिट करने की आवश्यकता है। चूंकि आप अपने परिणामों में मॉडल फिट और सारांश संग्रहीत करते हैं, इसलिए आपको पहले फिट ऑब्जेक्ट को निकालने की आवश्यकता है या मॉडल अनुमान के लिए अपने फ़ंक्शन को केवल मॉडल फिट वापस करने के लिए संशोधित करना होगा।
 – 
rps1227
28 जिंदा 2021, 16:33