आर में कैसे ठीक करें: वेरिएबल के लिए अमान्य प्रकार (सूची)।


R में आपके सामने एक त्रुटि आ सकती है:

 Error in model.frame.default(formula = y ~ x, drop.unused.levels = TRUE): 
  invalid type (list) for variable 'x' 

यह त्रुटि आम तौर पर तब होती है जब आप आर में एक प्रतिगमन मॉडल या एनोवा मॉडल को फिट करने का प्रयास करते हैं और वेक्टर के बजाय किसी एक चर के लिए एक सूची का उपयोग करते हैं।

यह ट्यूटोरियल बताता है कि व्यवहार में इस त्रुटि को कैसे ठीक किया जाए।

त्रुटि को पुन: उत्पन्न कैसे करें

मान लीजिए मैं आर में एक सरल रैखिक प्रतिगमन मॉडल फिट करने की कोशिश कर रहा हूं:

 #define variables
x <- list(1, 4, 4, 5, 7, 8, 9, 10, 13, 14)
y <- c(10, 13, 13, 14, 18, 20, 22, 24, 29, 31)

#attempt to fit regression model
model <- lm(y ~ x)

Error in model.frame.default(formula = y ~ x, drop.unused.levels = TRUE): 
  invalid type (list) for variable 'x'

मुझे एक त्रुटि मिल रही है क्योंकि lm() फ़ंक्शन केवल वैक्टर को इनपुट के रूप में ले सकता है और वेरिएबल x वर्तमान में एक सूची है।

त्रुटि से कैसे बचें

इस त्रुटि से बचने का सबसे आसान तरीका सूची चर को वेक्टर में बदलने के लिए अनलिस्ट() फ़ंक्शन का उपयोग करना है:

 #define variables
x <- list(1, 4, 4, 5, 7, 8, 9, 10, 13, 14)
y <- c(10, 13, 13, 14, 18, 20, 22, 24, 29, 31)

#attempt to fit regression model
model <- lm(y ~ unlist(x))

#view the model output
summary(model)

Call:
lm(formula = y ~ unlist(x))

Residuals:
    Min 1Q Median 3Q Max 
-1.1282 -0.4194 -0.1087 0.2966 1.7068 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 6.58447 0.55413 11.88 2.31e-06 ***
unlist(x) 1.70874 0.06544 26.11 4.97e-09 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8134 on 8 degrees of freedom
Multiple R-squared: 0.9884, Adjusted R-squared: 0.987 
F-statistic: 681.8 on 1 and 8 DF, p-value: 4.97e-09

ध्यान दें कि हम इस बार बिना किसी त्रुटि के सरल रैखिक प्रतिगमन मॉडल को फिट करने में सक्षम हैं क्योंकि हमने वेरिएबल x को वेक्टर में परिवर्तित करने के लिए अनलिस्ट() का उपयोग किया था।

ध्यान दें कि यदि आप एक मल्टीपल लीनियर रिग्रेशन मॉडल को फिट कर रहे हैं और आपके पास कई प्रेडिक्टर वैरिएबल हैं जो वर्तमान में सूची ऑब्जेक्ट हैं, तो आप रिग्रेशन मॉडल को फिट करने से पहले उनमें से प्रत्येक को वैक्टर में बदलने के लिए अनलिस्ट() का उपयोग कर सकते हैं:

 #define variables
x1 <- list(1, 4, 4, 5, 7, 8, 9, 10, 13, 14)
x2 <- list(20, 16, 16, 15, 16, 12, 10, 8, 8, 4)
y <- c(10, 13, 13, 14, 18, 20, 22, 24, 29, 31)

#fit multiple linear regression model
model <- lm(y ~ unlist(x1) + unlist(x2))

#view the model output
summary(model)

Call:
lm(formula = y ~ unlist(x1) + unlist(x2))

Residuals:
    Min 1Q Median 3Q Max 
-1.1579 -0.4211 -0.1386 0.3108 1.7130 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 8.34282 4.44971 1.875 0.102932    
unlist(x1) 1.61339 0.24899 6.480 0.000341 ***
unlist(x2) -0.08346 0.20937 -0.399 0.702044    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8599 on 7 degrees of freedom
Multiple R-squared: 0.9887, Adjusted R-squared: 0.9854 
F-statistic: 305.1 on 2 and 7 DF, p-value: 1.553e-07

फिर, हमें कोई त्रुटि नहीं मिली क्योंकि हमने सूची में प्रत्येक ऑब्जेक्ट को वैक्टर में बदल दिया है।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य ऑपरेशन कैसे करें:

आर में जीएलएम आउटपुट की व्याख्या कैसे करें
आर में एनोवा परिणामों की व्याख्या कैसे करें
आर चेतावनी को कैसे संभालें: glm.fit: एल्गोरिदम अभिसरण नहीं हुआ

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *