আর-তে ডামি কোডিংয়ের পরিবর্তে এফেক্ট কোডিং দিয়ে রিগ্রেশন কীভাবে করবেন?


15

আমি বর্তমানে একটি রিগ্রেশন মডেলটিতে কাজ করছি যেখানে আমার কাছে কেবল স্বাধীন ভেরিয়েবল হিসাবে শ্রেণিবদ্ধ / ফ্যাক্টর ভেরিয়েবল রয়েছে। আমার নির্ভরশীল পরিবর্তনশীল হ'ল একটি লজিট রুপান্তরিত অনুপাত।

আর-তে একটি সাধারণ রিগ্রেশন চালানো মোটামুটি সহজ, কারণ আর ডামিগুলি "ফ্যাক্টর" টাইপ হওয়ার সাথে সাথেই কীভাবে কোডিং করবেন তা স্বয়ংক্রিয়ভাবে জানে। তবে এই ধরণের কোডিংটি থেকে বোঝা যায় যে প্রতিটি ভেরিয়েবল থেকে একটি বিভাগ একটি বেসলাইন হিসাবে ব্যবহৃত হয়, এটি ব্যাখ্যা করা শক্ত করে তোলে।

আমার প্রফেসর আমাকে তার পরিবর্তে (-1 বা 1) এফেক্ট কোডিংটি ব্যবহার করতে বলেছিলেন, কারণ এটি ইন্টারসেপ্টের জন্য গ্র্যান্ড মানে ব্যবহার করে।

কেউ কীভাবে এটি পরিচালনা করতে জানেন?

এখন পর্যন্ত আমি চেষ্টা করেছি:

gm <- mean(tapply(ds$ln.crea, ds$month,  mean))
model <- lm(ln.crea ~ month + month*month + year + year*year, data = ds, contrasts = list(gm = contr.sum))

Call:
lm(formula = ln.crea ~ month + month * month + year + year * 
    year, data = ds, contrasts = list(gm = contr.sum))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.89483 -0.19239 -0.03651  0.14955  0.89671 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -3.244493   0.204502 -15.865   <2e-16 ***
monthFeb    -0.124035   0.144604  -0.858   0.3928    
monthMar    -0.365223   0.144604  -2.526   0.0129 *  
monthApr    -0.240314   0.144604  -1.662   0.0993 .  
monthMay    -0.109138   0.144604  -0.755   0.4520    
monthJun    -0.350185   0.144604  -2.422   0.0170 *  
monthJul     0.050518   0.144604   0.349   0.7275    
monthAug    -0.206436   0.144604  -1.428   0.1562    
monthSep    -0.134197   0.142327  -0.943   0.3478    
monthOct    -0.178182   0.142327  -1.252   0.2132    
monthNov    -0.119126   0.142327  -0.837   0.4044    
monthDec    -0.147681   0.142327  -1.038   0.3017    
year1999     0.482988   0.200196   2.413   0.0174 *  
year2000    -0.018540   0.200196  -0.093   0.9264    
year2001    -0.166511   0.200196  -0.832   0.4073    
year2002    -0.056698   0.200196  -0.283   0.7775    
year2003    -0.173219   0.200196  -0.865   0.3887    
year2004     0.013831   0.200196   0.069   0.9450    
year2005     0.007362   0.200196   0.037   0.9707    
year2006    -0.281472   0.200196  -1.406   0.1625    
year2007    -0.266659   0.200196  -1.332   0.1855    
year2008    -0.248883   0.200196  -1.243   0.2164    
year2009    -0.153083   0.200196  -0.765   0.4461    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 0.3391 on 113 degrees of freedom
Multiple R-squared: 0.3626, Adjusted R-squared: 0.2385 
F-statistic: 2.922 on 22 and 113 DF,  p-value: 0.0001131 

1
দেখুন? বিপরীতে আমি মনে করি এর বিপরীতে মহামারীটির বিরুদ্ধে পরীক্ষা করার জন্য - এই সাহায্যের ফাইলগুলি পরীক্ষা করুন
ব্যবহারকারী 20650

2
এটি সহায়ক হতে পারে: unc.edu/courses/2006spring/ecol/145/001/docs/lectures/…
99

উত্তর:


13

নীতিগতভাবে, দুটি ধরণের বিপরীতে কোডিং রয়েছে, যার সাহায্যে ইন্টারসেপ্ট গ্র্যান্ড মিনকে অনুমান করবে। এগুলি যোগ বিপরীতে এবং পুনরাবৃত্তি বিপরীতে (স্লাইডিং পার্থক্য)।

এখানে একটি ডেটা সেট উদাহরণ রয়েছে:

set.seed(42)
x <- data.frame(a = c(rnorm(100,2), rnorm(100,1),rnorm(100,0)),
                b = rep(c("A", "B", "C"), each = 100))

শর্তগুলির অর্থ:

tapply(x$a, x$b, mean)
         A           B           C 
2.03251482  0.91251629 -0.01036817 

গ্র্যান্ড মানে:

mean(tapply(x$a, x$b, mean))
[1] 0.978221

আপনি contrastsপ্যারামিটারের সাথে বিপরীতে কোডিংয়ের ধরণ উল্লেখ করতে পারেন lm

সমষ্টি বিপরীতে

lm(a ~ b, x, contrasts = list(b = contr.sum))

Coefficients:
(Intercept)           b1           b2  
     0.9782       1.0543      -0.0657 

ইন্টারসেপ্ট হ'ল গ্র্যান্ড মাইন। প্রথম opeাল প্রথম ফ্যাক্টর স্তর এবং গ্র্যান্ড গড়ের মধ্যে পার্থক্য। দ্বিতীয় opeাল দ্বিতীয় ফ্যাক্টর স্তর এবং গ্র্যান্ড গড়ের মধ্যে পার্থক্য।

পুনরাবৃত্তি বিপরীতে

বারবার বৈপরীত্য তৈরি করার জন্য কাজটি MASSপ্যাকেজের অংশ ।

lm(a ~ b, x, contrasts = list(b = MASS::contr.sdif))

Coefficients:
(Intercept)         b2-1         b3-2  
     0.9782      -1.1200      -0.9229 

ইন্টারসেপ্ট হ'ল গ্র্যান্ড মাইন। Opালগুলি একটানা ফ্যাক্টর স্তরের (2 বনাম 1, 3 বনাম 2) এর মধ্যে পার্থক্যগুলিকে সরিয়ে দেয়।


হুম, আপনি যা পরামর্শ দিয়েছেন তা চেষ্টা করে দেখেছি, তবে আমি নিশ্চিত নই যে কোডগুলির মধ্যে যেটি আমি চাই তা করে। জিনিসটি হ'ল আমার কাছে বছরগুলি রয়েছে {1998, ..., 2007 one এক IV এবং মাসে {জানু, ..., ডিসেম্বর another অন্য IV তে। যেহেতু এখন এলএম ফাংশনটি স্বয়ংক্রিয়ভাবে এপ্রিলকে 1998 এর পাশাপাশি ইন্টারসেপ্টে পরিণত হতে দিন Instead পরিবর্তে আমি কেবল ইন্টারপেসটি একটি সামগ্রিক গড় হিসাবে গড়ে
তুলতে চাই

@ ক্যাস্পার ক্রিসটেনসেন যদি আপনি উদাহরণগুলির মতো বৈপরীত্যগুলি নির্দিষ্ট করেন তবে ইন্টারসেপ্টটি গ্র্যান্ড মিন হবে। আপনি যা চেষ্টা করেছেন তার পুনরায় উত্পাদনযোগ্য উদাহরণ সরবরাহ করুন।
সোভেন হোহেনস্টাইন

@ সেনহোহেনস্টেইন কেন বিপরীতে সি শ্রেণিবদ্ধমূল্যের জন্য কোনও বি 3 সহগ নেই? এটি -0.9885891 হওয়া উচিত।
ভিভালদি

@ ভিভালদি বি 3 এর মান ইন্টারসেপ্ট এবং বি 1, বি 2 দ্বারা নির্ধারিত হয়। অন্য একটি বিপরীতে মুক্তির কোনও ডিগ্রি নেই।
সোভেন হোহেনস্টেইন

@ সোভেনহোহেনস্টাইন যেহেতু এটি আরও কোনও প্রান্তিক সমস্যা নয়, কারণ বি 3 অন্যান্য ভেরিয়েবলগুলির রৈখিক সংমিশ্রণ হিসাবে প্রকাশ করা যেতে পারে: (3 * গ্র্যান্ড মানে - বি 1 - বি 2)?
ভিভালদি

6

নিতপিকিং: যদি আপনার প্রফেসর আপনাকে আপনার ভেরিয়েবলগুলি কোড করতে (-1, 1)বলেছিলেন, তবে তিনি আপনাকে প্রভাবের আকারগুলি নয়, এফেক্ট কোডিং ব্যবহার করতে বলেছিলেন । যে কোনও হারে, @ ব্যবহারকারী20650 সঠিক। যথারীতি, ইউসিএলএ পরিসংখ্যান সহায়তা ওয়েবসাইটটিতে একটি দরকারী পৃষ্ঠা রয়েছে যা কীভাবে আর এর মাধ্যমে এটি করতে হয় তা ব্যাখ্যা করে page

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