मैं एक lme वस्तु, कुछ दोहराया उपायों से निर्मित है पोषक तत्व सेवन डेटा (RespondentID प्रति दो 24 घंटे का सेवन अवधि):अवलोकन द्वारा मैं हल्के निश्चित प्रभाव कैसे निकालें?
Male.lme2 <- lmer(BoxCoxXY ~ -1 + AgeFactor + IntakeDay + (1|RespondentID),
data = Male.Data,
weights = SampleWeight)
और मैं सफलतापूर्वक ranef(Male.lme1)
का उपयोग कर RespondentID
द्वारा यादृच्छिक प्रभाव प्राप्त कर सकते हैं। मैं RespondentID
द्वारा निश्चित प्रभावों का परिणाम भी एकत्र करना चाहता हूं। जैसा कि मैंने नीचे दिखाया है, coef(Male.lme1)
बिल्कुल वही प्रदान नहीं करता है जो मुझे चाहिए।
> summary(Male.lme1)
Linear mixed model fit by REML
Formula: BoxCoxXY ~ AgeFactor + IntakeDay + (1 | RespondentID)
Data: Male.Data
AIC BIC logLik deviance REMLdev
9994 10039 -4990 9952 9980
Random effects:
Groups Name Variance Std.Dev.
RespondentID (Intercept) 0.19408 0.44055
Residual 0.37491 0.61230
Number of obs: 4498, groups: RespondentID, 2249
Fixed effects:
Estimate Std. Error t value
(Intercept) 13.98016 0.03405 410.6
AgeFactor4to8 0.50572 0.04084 12.4
AgeFactor9to13 0.94329 0.04159 22.7
AgeFactor14to18 1.30654 0.04312 30.3
IntakeDayDay2Intake -0.13871 0.01809 -7.7
Correlation of Fixed Effects:
(Intr) AgFc48 AgF913 AF1418
AgeFactr4t8 -0.775
AgeFctr9t13 -0.761 0.634
AgFctr14t18 -0.734 0.612 0.601
IntkDyDy2In -0.266 0.000 0.000 0.000
मैं अपने डेटा को फिट परिणाम संलग्न है, head(Male.Data)
से पता चलता
NutrientID RespondentID Gender Age SampleWeight IntakeDay IntakeAmt AgeFactor BoxCoxXY lmefits
2 267 100020 1 12 0.4952835 Day1Intake 12145.852 9to13 15.61196 15.22633
7 267 100419 1 14 0.3632839 Day1Intake 9591.953 14to18 15.01444 15.31373
8 267 100459 1 11 0.4952835 Day1Intake 7838.713 9to13 14.51458 15.00062
12 267 101138 1 15 1.3258785 Day1Intake 11113.266 14to18 15.38541 15.75337
14 267 101214 1 6 2.1198688 Day1Intake 7150.133 4to8 14.29022 14.32658
18 267 101389 1 5 2.1198688 Day1Intake 5091.528 4to8 13.47928 14.58117
coef(Male.lme1)
से लाइनों के पहले दो हैं:
$RespondentID
(Intercept) AgeFactor4to8 AgeFactor9to13 AgeFactor14to18 IntakeDayDay2Intake
100020 14.28304 0.5057221 0.9432941 1.306542 -0.1387098
100419 14.00719 0.5057221 0.9432941 1.306542 -0.1387098
100459 14.05732 0.5057221 0.9432941 1.306542 -0.1387098
101138 14.44682 0.5057221 0.9432941 1.306542 -0.1387098
101214 13.82086 0.5057221 0.9432941 1.306542 -0.1387098
101389 14.07545 0.5057221 0.9432941 1.306542 -0.1387098
प्रदर्शित करने के लिए कैसे coef
परिणाम से संबंधित Male.Data में फिट अनुमान (जिन्हें Male.Data$lmefits <- fitted(Male.lme1)
का उपयोग करके पकड़ा गया था, पहले RespondentID के लिए, जिसकी आयु है फैक्टर स्तर 9-13: - सज्जित मूल्य 15.22633
है, जो बराबर होती है - coeffs से - (Intercept) + (AgeFactor9-13) = 14.28304 + 0.9432941
वहाँ एक चतुर आदेश मुझे इस्तेमाल के लिए है कि क्या करेंगे मैं अपने आप चाहते हैं, जो निश्चित प्रभाव को निकालने के लिए है प्रत्येक विषय के लिए अनुमान, या क्या मुझे if
की श्रृंखला का सामना करना पड़ रहा है, जिसमें इंटरसेप्ट से यादृच्छिक प्रभाव योगदान को कम करने के बाद, सही निश्चित प्रभाव अनुमान प्राप्त करने के लिए प्रत्येक विषय में सही आयुफैक्टर स्तर लागू करने का प्रयास किया गया है?
अद्यतन, क्षमा, मैं आउटपुट पर कटौती करने की कोशिश कर रहा था और str() के बारे में भूल गया था। आउटपुट है:
>str(Male.Data)
'data.frame': 4498 obs. of 11 variables:
$ NutrientID : int 267 267 267 267 267 267 267 267 267 267 ...
$ RespondentID: Factor w/ 2249 levels "100020","100419",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Gender : int 1 1 1 1 1 1 1 1 1 1 ...
$ Age : int 12 14 11 15 6 5 10 2 2 9 ...
$ BodyWeight : num 51.6 46.3 46.1 63.2 28.4 18 38.2 14.4 14.6 32.1 ...
$ SampleWeight: num 0.495 0.363 0.495 1.326 2.12 ...
$ IntakeDay : Factor w/ 2 levels "Day1Intake","Day2Intake": 1 1 1 1 1 1 1 1 1 1 ...
$ IntakeAmt : num 12146 9592 7839 11113 7150 ...
$ AgeFactor : Factor w/ 4 levels "1to3","4to8",..: 3 4 3 4 2 2 3 1 1 3 ...
$ BoxCoxXY : num 15.6 15 14.5 15.4 14.3 ...
$ lmefits : num 15.2 15.3 15 15.8 14.3 ...
वजन और लिंग इस्तेमाल किया जा रहा नहीं कर रहे हैं (यह पुरुषों डेटा है, इसलिए सभी लिंग मान ही कर रहे हैं) और NutrientID इसी तरह के डेटा के लिए तय हो गई है।
मैं भयानक ifelse कथन कर रहा हूं जो मैंने पोस्ट किया है, इसलिए तुरंत आपके सुझाव का प्रयास करेंगे। :)
अद्यतन 2: यह मेरे वर्तमान डेटा के साथ पूरी तरह से काम करता है और इसके लिए टिप्पणी में अतिरिक्त सहायता के लिए डीडब्ल्यूएन के लिए धन्यवाद, नए डेटा के लिए भविष्य के सबूत होना चाहिए। :)
AgeLevels <- length(unique(Male.Data$AgeFactor))
Temp <- as.data.frame(fixef(Male.lme1)['(Intercept)'] +
c(0,fixef(Male.lme1)[2:AgeLevels])[
match(Male.Data$AgeFactor, c("1to3", "4to8", "9to13","14to18", "19to30","31to50","51to70","71Plus"))] +
c(0,fixef(Male.lme1)[(AgeLevels+1)])[
match(Male.Data$IntakeDay, c("Day1Intake","Day2Intake"))])
names(Temp) <- c("FxdEffct")
मदद के लिए धन्यवाद, मैं सिर्फ चारों ओर (अवरोधन) नाम बोली में संशोधन किया। मैं सभी आयु समूहों पर लागू करने के लिए एक सामान्य आर विश्लेषण तैयार कर रहा हूं, वर्तमान डेटा फ्रेम में सिर्फ बच्चे हैं, मैं खोज के लिए कॉलम इंडेक्स को कैसे समायोजित कर सकता हूं, जब मुझे यह नहीं पता होगा कि मॉडल में कितने आयु कारक स्तर होंगे? मैं जितना संभव हो सके विश्लेषण को स्वचालित करने की कोशिश कर रहा हूं – Michelle
'लंबाई (अद्वितीय (Male.Data $ AgeFactor)) 'आपको स्तरों की संख्या देगा, और आप इंडेक्स प्राप्त करने के लिए 4 के बजाय उस नंबर प्लस 1 का उपयोग कर सकते हैं एजफैक्टर का, आपको स्पष्ट रूप से इंटेकडे प्रभावों के सूचकांक के लिए उचित रूप से उच्च मूल्य का उपयोग करने की आवश्यकता होगी। –