কীভাবে 'এনএ' মানগুলি আর-তে গ্ল্যামে আচরণ করা হয়


19

আমার কাছে ডেটা টেবিল টি 1 রয়েছে, এতে প্রায় এক হাজার ভেরিয়েবল (ভি 1) এবং প্রায় 200 মিলিয়ন ডেটা পয়েন্ট রয়েছে। ডেটা অপ্রয়োজনীয় এবং বেশিরভাগ এন্ট্রি এনএ। প্রতিটি ডেটাপয়েন্টগুলিতে অন্যের থেকে আলাদা করার জন্য একটি অনন্য আইডি এবং তারিখের জুড়ি থাকে।

আমার কাছে অন্য একটি টেবিল টি 2 রয়েছে, এতে ভেরিয়েবলগুলির একটি পৃথক সেট (ভি 2) রয়েছে। এই টেবিলটিতে আইডি এবং তারিখের জুটিও রয়েছে যা টি 2-তে প্রবেশ অনন্যভাবে সনাক্ত করে।

আমরা সন্দেহ করি যে টি 1-তে থাকা ডেটা টি 2-এর ভেরিয়েবলের মানগুলি পূর্বাভাস দেওয়ার জন্য ব্যবহার করা যেতে পারে।

এটি প্রমাণ করার জন্য, আমি আর-তে 'গ্ল্যাম' মডেল প্রয়োগ করে ভেবেছিলাম যে আমরা টি 2-তে কিছু পরিবর্তনশীল খুঁজে পেতে পারি যা টি 1 এর ভেরিয়েবলের উপর নির্ভরশীল।

টি 2 এর প্রতিটি ভেরিয়েবলের জন্য, আমি টি 1 তে একই আইডি এবং তারিখের জুটি থাকা সমস্ত ডেটা বের করতে শুরু করেছি যার ফলস্বরূপ কিছু পরীক্ষার ভেরিয়েবলের জন্য অনেক ছোট ~ 50K ডেটা পয়েন্ট রয়েছে।

গ্ল্যাম প্রয়োগের সাথে আমি এখন যে সমস্যার মুখোমুখি হচ্ছি সেগুলি নিম্নরূপ।

  1. কিছু ক্ষেত্রে, এটি আমাকে ত্রুটি দেখায় 'ফিট না পাওয়া' এবং সতর্কতা 'গ্ল্যাম.ফিট: অ্যালগরিদম রূপান্তরিত হয়নি'। আমি নিশ্চিত না কেন এটি দেখানো হয়েছে?

  2. কীভাবে এনএদের গ্ল্যামে চিকিত্সা করা হয়? এটি প্রথমে 'এনএ' জড়িত সমস্ত রেকর্ড সরিয়ে এবং তারপরে ফিটিং সম্পাদন করে?

  3. প্রথমে সমস্ত এনএগুলি সরিয়ে ফেলা এবং তারপর 'গ্ল্যাম' কল করা কি ভাল কৌশল strategy আমি আশঙ্কা করি যে এটি ডেটাপয়েন্টগুলিকে উল্লেখযোগ্যভাবে হ্রাস করতে পারে কারণ তাদের বেশিরভাগ এনএ রয়েছে।

  4. কোন পদ্ধতিটি সহগের গণনা করতে ব্যবহৃত হয়। আউটপুট কীভাবে গণনা করা হয় তা আলোচনা করে এমন কোনও ওয়েবসাইট বা কাগজ বা বই আমি খুঁজে পেলাম না।

আমি 'এনএ' এর সাথে বা ছাড়াই গ্ল্যাম পরীক্ষা করেছি এবং পৃথক উত্তর পেয়েছি যা ডেটা ফিট করার সময় এনএ বিবেচিত হয়:

উদাহরণ 1:

> tmpData
  x1 x2 x3        Y
1  1  1  1        3
2  1  0  4        5
3  1  2  3        6
4  0  3  1        4

Call:  glm(formula = as.formula(paste(dep, " ~ ", paste(xn, collapse = "+"))), 
    na.action = na.exclude)

Coefficients:
                      (Intercept)  as.numeric(unlist(tmpData["x1"]))  as.numeric(unlist(tmpData["x2"]))  
                        5.551e-16                          1.000e+00                          1.000e+00  
as.numeric(unlist(tmpData["x3"]))  
                        1.000e+00  

Degrees of Freedom: 3 Total (i.e. Null);  0 Residual
Null Deviance:      5 
Residual Deviance: 9.861e-31    AIC: -260.6 

উদাহরণ 2:

'x1'    'x2'    'x3'    'Y'
100000  1   NA  2
1   1   1   3
1   NA  -1124   2
1   0   4   5
1   2   3   6
0   3   1   4



Coefficients:
                      (Intercept)  as.numeric(unlist(tmpData["x1"]))  as.numeric(unlist(tmpData["x2"]))  as.numeric(unlist(tmpData["x3"]))  
                       -2.3749044                         -0.0000625                          0.6249899                          1.8749937  

Degrees of Freedom: 5 Total (i.e. Null);  2 Residual
Null Deviance:      13.33 
Residual Deviance: 1.875    AIC: 20.05 

উত্তর:


27

এনএ হ্যান্ডলিং: আপনি কীভাবে কীভাবে হারিয়ে যাওয়া ডেটা পরিচালনা করেন তা আপনি নিয়ন্ত্রণ করতে পারেন। glm () এর একটি যুক্তি রয়েছে na.actionযা সূচিত করে যে নিম্নলিখিত জেনেরিক ফাংশনগুলির মধ্যে কোনটি glm দ্বারা ডেটাতে NA পরিচালনা করতে ব্যবহার করা উচিত:

  • na.omitএবং na.exclude: পর্যবেক্ষণগুলি যদি কোনও অনুপস্থিত মান থাকে তবে তা সরানো হবে; যদি না.এক্সক্লোড ব্যবহার করা হয় তবে কিছু ফাংশন বাদ দেওয়া মামলার জন্য এনএ byুকিয়ে সঠিক দৈর্ঘ্যের অবশিষ্টাংশ এবং পূর্বাভাসকে প্যাড করবে।
  • na.pass: এনএ সহ সমস্ত তথ্য রাখুন
  • na.fail: অবজেক্টটি কেবল তখনই প্রদান করে যদি এতে কোনও অনুপস্থিত মান নেই

আপনি যদি না.অ্যাকশন সেট না করে থাকেন তবে glm () সেখানে ডিফল্ট সেট আছে কিনা তা দেখার জন্য আর এর বিশ্বব্যাপী বিকল্পগুলি পরীক্ষা করবে। আপনি আপনার বিকল্পগুলি এর সাথে অ্যাক্সেস করতে পারেন getOption("na.action")বা options("na.action")এটির সাথে সেট করতে পারেন, উদাহরণস্বরূপ, options(na.action = "na.omit") তবে, আর 1 আউটপুট যা আপনি উদাহরণ 1 সরবরাহ করেছেন তা থেকে মনে হয় যে আপনি সেট করছেন na.action = na.omit। সুতরাং, হ্যাঁ, কমপক্ষে এই পরিস্থিতিতে, আপনি ফিট করার আগে এনএ সহ সমস্ত কেস / সারি সরিয়ে ফেলছেন। তদুপরি, আমি নিশ্চিত na.action = na.passযে ডেটাতে এনএ থাকলে (চেষ্টা করে দেখুন) ব্যর্থ হওয়ার কারণটি ঘটতে পারে pretty

ত্রুটিগুলি: গ্লোম () সর্বাধিক সম্ভাবনার প্রাক্কলন করতে পুনরাবৃত্তি পদ্ধতি (পুনরাবৃত্ত ওজনযুক্ত সর্বনিম্ন স্কোয়ারস; আইডাব্লুএলএস) ব্যবহার করছে। আপনি কখনও কখনও ত্রুটিগুলি পান কারণ এটি কেবল পূর্বনির্ধারিত সংখ্যার পুনরাবৃত্তির মধ্য দিয়ে যাবে এবং যদি এরপরে এটি উপযুক্ত না হয় তবে এটি ছেড়ে দেয়। এই সংখ্যাটি আর্গুমেন্ট সর্বাধিক দ্বারা নিয়ন্ত্রিত হয়, যা পূর্বনির্ধারিত maxit = 25। আপনি এটি আরও উচ্চতর সেট করার চেষ্টা করতে পারেন, অবশ্যই, এটি আরও বেশি সময় নেবে। (আপনি যদি সেট trace=TRUEকরে থাকেন তবে আপনাকে প্রতিটি পুনরাবৃত্তির ফলাফল দেখাবে))

তথ্য অন্যান্য উৎস: glm জন্য helpfile সঙ্গে প্রবেশযোগ্য ?glmবা help(glm)করতে এবং এই অনেক ব্যাখ্যা করে। অন্য দুটি দরকারী সম্পদ হ'ল:

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