রৈখিক মডেল থেকে একত্রিত ফলাফল আর


16

যেহেতু রিগ্রেশন মডেলিং প্রায়শই বিজ্ঞানের চেয়ে অনেক বেশি "আর্ট" থাকে তাই আমি প্রায়শই নিজেকে দেখতে পাই একটি রিগ্রেশন কাঠামোর অনেকগুলি পুনরাবৃত্তি পরীক্ষা করে। "সেরা" মডেলটি সন্ধানের প্রয়াসে এই একাধিক মডেল থেকে প্রাপ্ত তথ্যের সংক্ষিপ্তসার করার কয়েকটি দক্ষ উপায় কী? আমি যে পদ্ধতির ব্যবহার করেছি তা হ'ল সমস্ত মডেলকে একটি তালিকায় রাখুন এবং summary()সেই তালিকা জুড়ে চালানো , তবে আমি কী তুলনা করার আরও কার্যকর উপায় আছে তা কল্পনা করি?

নমুনা কোড এবং মডেল:

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)

lm1 <- lm(weight ~ group)
lm2 <- lm(weight ~ group - 1)
lm3 <- lm(log(weight) ~ group - 1)

#Draw comparisions between models 1 - 3?

models <- list(lm1, lm2, lm3)

lapply(models, summary)

5
আমার কাছে ডেটার ড্রেজিংয়ের মতো কিছুটা শোনাচ্ছে। আপনি মডেলিং শুরু করার আগে আপনি যেটাকে বুদ্ধিমানভাবে ভাবেন এটি একটি উপযুক্ত মডেল, কোনটি কোভারিয়েট, ট্রান্সফর্মেশন ইত্যাদি রয়েছে সেটির দিকে মনোযোগ দেওয়া উচিত নয় । আর জানেন না যে আপনি একটি ভাল মডেল সন্ধানের জন্য সমস্ত মডেল ফিট করে।
মনিকা পুনরায় ইনস্টল করুন - জি সিম্পসন

3
@ গ্যাভিন - আমি খুব তাড়াতাড়ি বন্ধ হয়ে যাওয়ার বিষয়টি খুব দ্রুত দেখতে পাচ্ছি, তবে সংক্ষিপ্ত উত্তর হ'ল, আমি ডেটাসেটে এলোমেলো ভেরিয়েবলের মধ্যে ডেটা ড্রেজিংয়ের পক্ষে বা উত্সাহী সম্পর্ক খুঁজে পাচ্ছি না। একটি রিগ্রেশন মডেল বিবেচনা করুন যা আয় অন্তর্ভুক্ত করে। মডেলটির প্রভাব দেখতে আয়ের পরিবর্তনের পরীক্ষা করা কি যুক্তিসঙ্গত নয়? আয়ের লগ, 10 ডলারে আয়ের লগ, 100 এর মধ্যে আয়ের লগ ...? যদিও এটি ডেটা ড্রেজিং - এমন একটি ফাংশন / সারাংশ সরঞ্জাম যা অনেকগুলি মডেলের রান থেকে আউটপুটকে একত্রিত করতে পারে তা এখনও খুব সহায়ক হবে, না?
চেজ

উত্তর:


17

তাদের প্লট করুন!

http://svn.cluelessresearch.com/tables2graphs/longley.png

অথবা, যদি আপনি, টেবিল ব্যবহার করা আবশ্যক: apsrtable প্যাকেজ বা mtableফাংশন memisc প্যাকেজ।

ব্যবহার mtable

 mtable123 <- mtable("Model 1"=lm1,"Model 2"=lm2,"Model 3"=lm3,
     summary.stats=c("sigma","R-squared","F","p","N"))

> mtable123

Calls:
Model 1: lm(formula = weight ~ group)
Model 2: lm(formula = weight ~ group - 1)
Model 3: lm(formula = log(weight) ~ group - 1)

=============================================
                 Model 1   Model 2   Model 3 
---------------------------------------------
(Intercept)      5.032***                    
                (0.220)                      
group: Trt/Ctl  -0.371                       
                (0.311)                      
group: Ctl                 5.032***  1.610***
                          (0.220)   (0.045)  
group: Trt                 4.661***  1.527***
                          (0.220)   (0.045)  
---------------------------------------------
sigma             0.696      0.696     0.143 
R-squared         0.073      0.982     0.993 
F                 1.419    485.051  1200.388 
p                 0.249      0.000     0.000 
N                20         20        20     
=============================================


1
@ এডুয়ার্ডো, +1, দুর্দান্ত গ্রাফ। নির্ভরশীল ভেরিয়েবলের বিভিন্ন রূপান্তর যখন বিভিন্ন রিগ্রেশনগুলিতে ব্যবহৃত হয় তবে এটি যত্ন সহ ব্যবহার করা উচিত।
এমপিক্টাস

এমপিটাস, এটি একটি টেবিলেও সত্য। গ্রাফগুলি কেবল নির্ভুলতার ব্যয়ে এটিকে আরও কমপ্যাক্ট করে তোলে।
এডুয়ার্ডো লিওনি

@ এডুয়ার্ডো আপনি কি গ্রাফের জন্য কোডটি ভাগ করতে পারবেন?
সানকুলসু

2
@ সানকুলসু আর কোডটি @ এডুয়ার্ডোর প্রতিক্রিয়াতে দেওয়া প্রথম লিঙ্কটিতে উপলব্ধ। তিনি, তিনি, এটি gridনয় lattice:)
chl

@ এডুয়ার্ডো - বিস্তারিত উত্তরের জন্য ধন্যবাদ, আমি memiscআগে সম্পর্কে অবগত ছিলাম না, কারওর বাহুবলীতে থাকা খুব সহজ প্যাকেজের মতো মনে হচ্ছে!
চেজ

12

নিম্নলিখিতটি ঠিক প্রশ্নের উত্তর দেয় না। যদিও এটি আপনাকে কিছু ধারণা দিতে পারে। এক থেকে চারটি স্বতন্ত্র ভেরিয়েবল (নির্ভরশীল ভেরিয়েবলটি ডিএফ 1 ডেটাফ্রেমের প্রথম কলামে ছিল) ব্যবহার করে বেশ কয়েকটি রিগ্রেশন মডেলের ফিটকে মূল্যায়নের জন্য এটি আমি সম্প্রতি করেছি।

# create the combinations of the 4 independent variables
library(foreach)
xcomb <- foreach(i=1:4, .combine=c) %do% {combn(names(df1)[-1], i, simplify=FALSE) }

# create formulas
formlist <- lapply(xcomb, function(l) formula(paste(names(df1)[1], paste(l, collapse="+"), sep="~")))

As.character (ফর্মলিস্ট) এর বিষয়বস্তু ছিল

 [1] "price ~ sqft"                     "price ~ age"                     
 [3] "price ~ feats"                    "price ~ tax"                     
 [5] "price ~ sqft + age"               "price ~ sqft + feats"            
 [7] "price ~ sqft + tax"               "price ~ age + feats"             
 [9] "price ~ age + tax"                "price ~ feats + tax"             
[11] "price ~ sqft + age + feats"       "price ~ sqft + age + tax"        
[13] "price ~ sqft + feats + tax"       "price ~ age + feats + tax"       
[15] "price ~ sqft + age + feats + tax"

তারপরে আমি কিছু দরকারী সূচক সংগ্রহ করেছি

# R squared
models.r.sq <- sapply(formlist, function(i) summary(lm(i))$r.squared)
# adjusted R squared
models.adj.r.sq <- sapply(formlist, function(i) summary(lm(i))$adj.r.squared)
# MSEp
models.MSEp <- sapply(formlist, function(i) anova(lm(i))['Mean Sq']['Residuals',])

# Full model MSE
MSE <- anova(lm(formlist[[length(formlist)]]))['Mean Sq']['Residuals',]

# Mallow's Cp
models.Cp <- sapply(formlist, function(i) {
SSEp <- anova(lm(i))['Sum Sq']['Residuals',]
mod.mat <- model.matrix(lm(i))
n <- dim(mod.mat)[1]
p <- dim(mod.mat)[2]
c(p,SSEp / MSE - (n - 2*p))
})

df.model.eval <- data.frame(model=as.character(formlist), p=models.Cp[1,],
r.sq=models.r.sq, adj.r.sq=models.adj.r.sq, MSEp=models.MSEp, Cp=models.Cp[2,])

চূড়ান্ত ডাটাফ্রেম ছিল

                      model p       r.sq   adj.r.sq      MSEp         Cp
1                price~sqft 2 0.71390776 0.71139818  42044.46  49.260620
2                 price~age 2 0.02847477 0.01352823 162541.84 292.462049
3               price~feats 2 0.17858447 0.17137907 120716.21 351.004441
4                 price~tax 2 0.76641940 0.76417343  35035.94  20.591913
5            price~sqft+age 3 0.80348960 0.79734865  33391.05  10.899307
6          price~sqft+feats 3 0.72245824 0.71754599  41148.82  46.441002
7            price~sqft+tax 3 0.79837622 0.79446120  30536.19   5.819766
8           price~age+feats 3 0.16146638 0.13526220 142483.62 245.803026
9             price~age+tax 3 0.77886989 0.77173666  37884.71  20.026075
10          price~feats+tax 3 0.76941242 0.76493500  34922.80  21.021060
11     price~sqft+age+feats 4 0.80454221 0.79523470  33739.36  12.514175
12       price~sqft+age+tax 4 0.82977846 0.82140691  29640.97   3.832692
13     price~sqft+feats+tax 4 0.80068220 0.79481991  30482.90   6.609502
14      price~age+feats+tax 4 0.79186713 0.78163109  36242.54  17.381201
15 price~sqft+age+feats+tax 5 0.83210849 0.82091573  29722.50   5.000000

অবশেষে, একটি সিপি প্লট (লাইব্রেরি wle ব্যবহার করে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.