आप मॉडल मापदंडों के महत्व का परीक्षण कर सकते हैं, अनुमानित आत्मविश्वास अंतराल की मदद से जिसके लिए lme4 पैकेज में confint.merMod
फ़ंक्शन है।
बूटस्ट्रैपिंग (उदाहरण के लिए देखें बूटस्ट्रैप से कॉन्फिडेंस इंटरवल )
> confint(m, method="boot", nsim=500, oldNames= FALSE)
Computing bootstrap confidence intervals ...
2.5 % 97.5 %
sd_(Intercept)|participant_id 0.32764600 0.64763277
cor_conditionexperimental.(Intercept)|participant_id -1.00000000 1.00000000
sd_conditionexperimental|participant_id 0.02249989 0.46871800
sigma 0.97933979 1.08314696
(Intercept) -0.29669088 0.06169473
conditionexperimental 0.26539992 0.60940435
संभावना प्रोफाइल (उदाहरण के लिए देखें प्रोफ़ाइल संभावना और विश्वास अंतराल के बीच संबंध क्या है? )
> confint(m, method="profile", oldNames= FALSE)
Computing profile confidence intervals ...
2.5 % 97.5 %
sd_(Intercept)|participant_id 0.3490878 0.66714551
cor_conditionexperimental.(Intercept)|participant_id -1.0000000 1.00000000
sd_conditionexperimental|participant_id 0.0000000 0.49076950
sigma 0.9759407 1.08217870
(Intercept) -0.2999380 0.07194055
conditionexperimental 0.2707319 0.60727448
एक विधि भी है 'Wald'
लेकिन इसे केवल निश्चित प्रभावों के लिए लागू किया जाता है।
पैकेज में कुछ प्रकार के एनोवा (संभावना अनुपात) प्रकार के अभिव्यक्ति भी मौजूद हैं lmerTest
जिन्हें नाम दिया गया है ranova
। लेकिन मुझे इससे कोई मतलब नहीं लग सकता है। LogLikelihood में मतभेदों का वितरण, जब शून्य परिकल्पना (यादृच्छिक प्रभाव के लिए शून्य विचरण) सच है , ची-स्क्वायर वितरित नहीं किया गया है (संभवतः जब प्रतिभागियों और परीक्षणों की संख्या अधिक हो तो संभावना अनुपात परीक्षण समझ में आ सकता है)।
विशिष्ट समूहों में भिन्नता
उन विशिष्ट समूहों में विचरण के लिए परिणाम प्राप्त करने के लिए जिन्हें आप पुन: एकत्रित कर सकते हैं
# different model with alternative parameterization (and also correlation taken out)
fml1 <- "~ condition + (0 + control + experimental || participant_id) "
जहां हमने डेटा-फ्रेम में दो कॉलम जोड़े (यह केवल तभी आवश्यक है जब आप गैर-सहसंबंधित 'नियंत्रण' और 'प्रायोगिक' (0 + condition || participant_id)
का मूल्यांकन करना चाहते हैं, तो यह फ़ंक्शन गैर-सहसंबद्ध के रूप में विभिन्न कारकों के मूल्यांकन की ओर नहीं ले जाएगा)
#adding extra columns for control and experimental
d <- cbind(d,as.numeric(d$condition=='control'))
d <- cbind(d,1-as.numeric(d$condition=='control'))
names(d)[c(4,5)] <- c("control","experimental")
अब lmer
विभिन्न समूहों के लिए विचरण करेगा
> m <- lmer(paste("sim_1 ", fml1), data=d)
> m
Linear mixed model fit by REML ['lmerModLmerTest']
Formula: paste("sim_1 ", fml1)
Data: d
REML criterion at convergence: 2408.186
Random effects:
Groups Name Std.Dev.
participant_id control 0.4963
participant_id.1 experimental 0.4554
Residual 1.0268
Number of obs: 800, groups: participant_id, 40
Fixed Effects:
(Intercept) conditionexperimental
-0.114 0.439
और आप इन पर प्रोफाइल विधियों को लागू कर सकते हैं। उदाहरण के लिए, अब कॉन्फिडेंस नियंत्रण और बाह्य भिन्नता के लिए विश्वास अंतराल देता है।
> confint(m, method="profile", oldNames= FALSE)
Computing profile confidence intervals ...
2.5 % 97.5 %
sd_control|participant_id 0.3490873 0.66714568
sd_experimental|participant_id 0.3106425 0.61975534
sigma 0.9759407 1.08217872
(Intercept) -0.2999382 0.07194076
conditionexperimental 0.1865125 0.69149396
सादगी
आप अधिक उन्नत तुलना प्राप्त करने के लिए संभावना फ़ंक्शन का उपयोग कर सकते हैं, लेकिन सड़क के साथ सन्निकटन बनाने के कई तरीके हैं (जैसे आप एक रूढ़िवादी एनोवा / लार्ट-टेस्ट कर सकते हैं, लेकिन क्या आप चाहते हैं?)।
इस बिंदु पर यह मुझे आश्चर्यचकित करता है कि वास्तव में क्या है (यह इतना सामान्य नहीं है) विभिन्नताओं के बीच तुलना। मुझे आश्चर्य है कि क्या यह बहुत परिष्कृत होने लगता है। भिन्नताओं (जो शास्त्रीय F- वितरण से संबंधित है) के अनुपात के बजाय भिन्नताओं के बीच अंतर क्यों है ? सिर्फ आत्मविश्वास के अंतराल की रिपोर्ट क्यों नहीं? हमें एक कदम पीछे ले जाने की जरूरत है, और डेटा और उस कहानी को स्पष्ट करना चाहिए, जो उन्नत पथों में जाने से पहले बताई जाती है, जो कि सांख्यिकीय मामले और सांख्यिकीय विचारों के साथ अति स्पर्श और ढीले स्पर्श हो सकते हैं जो वास्तव में मुख्य विषय हैं।
मुझे आश्चर्य है कि क्या किसी को केवल आत्मविश्वास अंतराल बताते हुए बहुत कुछ करना चाहिए (जो वास्तव में एक परिकल्पना परीक्षण की तुलना में बहुत अधिक बता सकता है। एक परिकल्पना परीक्षण हां में कोई जवाब नहीं देता है लेकिन जनसंख्या के वास्तविक प्रसार के बारे में कोई जानकारी नहीं दी गई है। किसी भी मामूली अंतर को महत्वपूर्ण अंतर के रूप में रिपोर्ट किया जाना चाहिए)। मामले में अधिक गहराई से जाने के लिए (जो भी उद्देश्य के लिए), आवश्यकता है, मेरा मानना है कि उचित सरलीकरण बनाने के लिए गणितीय मशीनरी का मार्गदर्शन करने के लिए एक अधिक विशिष्ट (संकीर्ण रूप से परिभाषित) शोध प्रश्न (भले ही एक सटीक गणना संभव हो या कब हो) यह सिमुलेशन / बूटस्ट्रैपिंग द्वारा अनुमानित किया जा सकता है, तब भी कुछ सेटिंग्स में इसे अभी भी कुछ उपयुक्त व्याख्या की आवश्यकता होती है)। (विशेष रूप से) टेबल (आकस्मिक तालिकाओं के बारे में) को हल करने के लिए फिशर के सटीक परीक्षण से तुलना करें,
सरल उदाहरण है
सादगी का एक उदाहरण प्रदान करने के लिए जो संभव है मैं एक तुलना (सिमुलेशन द्वारा) के नीचे दिखाता हूं, जिसमें दो समूह भिन्नताओं के बीच अंतर का एक सरल मूल्यांकन है, जो एफ-परीक्षण के आधार पर अलग-अलग माध्य प्रतिक्रियाओं में भिन्नताओं की तुलना करके किया जाता है और तुलना के साथ किया जाता है। मिश्रित मॉडल का भिन्न रूप है।
j
Y^i,j∼N(μj,σ2j+σ2ϵ10)
σϵσjj={1,2}
आप इसे नीचे दिए गए ग्राफ़ के अनुकरण में देख सकते हैं, जहां नमूना के आधार पर एफ-स्कोर के लिए अलग-अलग मॉडल से पूर्वानुमानित संस्करण (या वर्ग त्रुटि के योग) के आधार पर एक एफ-स्कोर की गणना की जाती है।
σj=1=σj=2=0.5σϵ=1
आप देख सकते हैं कि कुछ अंतर है। यह अंतर इस तथ्य के कारण हो सकता है कि मिश्रित प्रभाव रैखिक मॉडल एक अलग तरीके से चुकता त्रुटि (यादृच्छिक प्रभाव के लिए) की राशि प्राप्त कर रहा है। और इन चुकता त्रुटि शब्दों (अब) अच्छी तरह से एक साधारण ची-चुकता वितरण के रूप में व्यक्त नहीं कर रहे हैं, लेकिन अभी भी निकट से संबंधित हैं और उन्हें अनुमानित किया जा सकता है।
σj=1≠σj=2Y^i,jσjσϵ
σj=1=0.5σj=2=0.25σϵ=1
इसलिए साधनों पर आधारित मॉडल बहुत सटीक है। लेकिन यह कम शक्तिशाली है। इससे पता चलता है कि सही रणनीति इस बात पर निर्भर करती है कि आपको क्या चाहिए / क्या चाहिए।
ऊपर दिए गए उदाहरण में जब आप 2.1 और 3.1 पर सही पूंछ की सीमा निर्धारित करते हैं, तो आपको समान विचरण के मामले में लगभग 1% आबादी मिलती है (10 000 के मामलों में 103 और 104 के संबंध में), लेकिन असमान विचरण के मामले में ये सीमाएँ भिन्न होती हैं बहुत कुछ (मामलों के 5334 और 6716)
कोड:
set.seed(23432)
# different model with alternative parameterization (and also correlation taken out)
fml1 <- "~ condition + (0 + control + experimental || participant_id) "
fml <- "~ condition + (condition | participant_id)"
n <- 10000
theta_m <- matrix(rep(0,n*2),n)
theta_f <- matrix(rep(0,n*2),n)
# initial data frame later changed into d by adding a sixth sim_1 column
ds <- expand.grid(participant_id=1:40, trial_num=1:10)
ds <- rbind(cbind(ds, condition="control"), cbind(ds, condition="experimental"))
#adding extra columns for control and experimental
ds <- cbind(ds,as.numeric(ds$condition=='control'))
ds <- cbind(ds,1-as.numeric(ds$condition=='control'))
names(ds)[c(4,5)] <- c("control","experimental")
# defining variances for the population of individual means
stdevs <- c(0.5,0.5) # c(control,experimental)
pb <- txtProgressBar(title = "progress bar", min = 0,
max = n, style=3)
for (i in 1:n) {
indv_means <- c(rep(0,40)+rnorm(40,0,stdevs[1]),rep(0.5,40)+rnorm(40,0,stdevs[2]))
fill <- indv_means[d[,1]+d[,5]*40]+rnorm(80*10,0,sqrt(1)) #using a different way to make the data because the simulate is not creating independent data in the two groups
#fill <- suppressMessages(simulate(formula(fml),
# newparams=list(beta=c(0, .5),
# theta=c(.5, 0, 0),
# sigma=1),
# family=gaussian,
# newdata=ds))
d <- cbind(ds, fill)
names(d)[6] <- c("sim_1")
m <- lmer(paste("sim_1 ", fml1), data=d)
m
theta_m[i,] <- m@theta^2
imeans <- aggregate(d[, 6], list(d[,c(1)],d[,c(3)]), mean)
theta_f[i,1] <- var(imeans[c(1:40),3])
theta_f[i,2] <- var(imeans[c(41:80),3])
setTxtProgressBar(pb, i)
}
close(pb)
p1 <- hist(theta_f[,1]/theta_f[,2], breaks = seq(0,6,0.06))
fr <- theta_m[,1]/theta_m[,2]
fr <- fr[which(fr<30)]
p2 <- hist(fr, breaks = seq(0,30,0.06))
plot(-100,-100, xlim=c(0,6), ylim=c(0,800),
xlab="F-score", ylab = "counts [n out of 10 000]")
plot( p1, col=rgb(0,0,1,1/4), xlim=c(0,6), ylim=c(0,800), add=T) # means based F-score
plot( p2, col=rgb(1,0,0,1/4), xlim=c(0,6), ylim=c(0,800), add=T) # model based F-score
fr <- seq(0, 4, 0.01)
lines(fr,df(fr,39,39)*n*0.06,col=1)
legend(2, 800, c("means based F-score","mixed regression based F-score"),
fill=c(rgb(0,0,1,1/4),rgb(1,0,0,1/4)),box.col =NA, bg = NA)
legend(2, 760, c("F(39,39) distribution"),
lty=c(1),box.col = NA,bg = NA)
title(expression(paste(sigma[1]==0.5, " , ", sigma[2]==0.5, " and ", sigma[epsilon]==1)))