প্যানেল স্টাডি থেকে একটি সময় সিরিজে গণনা ডেটা হারিয়ে যাওয়ার একাধিক অনুদান


9

আমি এমন একটি সমস্যা মোকাবিলার চেষ্টা করছি যা প্যানেল ডেটা স্টাডি থেকে হারিয়ে যাওয়া ডেটা অনুপ্রেরণার সাথে সম্পর্কিত (নিশ্চিত নয় যে আমি 'প্যানেল ডেটা স্টাডি' সঠিকভাবে ব্যবহার করছি কিনা - নিশ্চিত হয়েছি যে আমি আজ শিখেছি।) ২০০৩ সাল ধরে আমার মোট মৃত্যুর গণনা তথ্য রয়েছে ২০০৯-এ, সমস্ত মাস, পুরুষ এবং মহিলা, 8 টি বিভিন্ন জেলা এবং 4 বয়সের জন্য

ডেটাফ্রেমটি এরকম কিছু দেখায়:

         District  Gender Year Month    AgeGroup TotalDeaths
         Northern    Male 2006    11        01-4           0
         Northern    Male 2006    11       05-14           1
         Northern    Male 2006    11         15+          83
         Northern    Male 2006    12           0           3
         Northern    Male 2006    12        01-4           0
         Northern    Male 2006    12       05-14           0
         Northern    Male 2006    12         15+         106
         Southern  Female 2003     1           0           6
         Southern  Female 2003     1        01-4           0
         Southern  Female 2003     1       05-14           3
         Southern  Female 2003     1         15+         136
         Southern  Female 2003     2           0           6
         Southern  Female 2003     2        01-4           0
         Southern  Female 2003     2       05-14           1
         Southern  Female 2003     2         15+         111
         Southern  Female 2003     3           0           2
         Southern  Female 2003     3        01-4           0
         Southern  Female 2003     3       05-14           1
         Southern  Female 2003     3         15+         141
         Southern  Female 2003     4           0           4

২০০ 2007 ও ২০০৮ সালে ছড়িয়ে থাকা দশ মাসের জন্য সমস্ত জেলা থেকে মোট মৃত্যুর কিছু রেকর্ড করা হয়নি। আমি একাধিক অভিব্যক্তি পদ্ধতির মাধ্যমে এই অনুপস্থিত মানটি অনুমান করার চেষ্টা করছি। হয় জেনারাইজড লিনিয়ার মডেল বা সারিমার মডেলগুলি ব্যবহার করুন।

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

         District  Gender Year Month    AgeGroup TotalDeaths
         Northern    Male 2003     1        01-4           0
         Northern    Male 2003     2        01-4           1
         Northern    Male 2003     3        01-4           0
         Northern    Male 2003     4        01-4           3
         Northern    Male 2003     5        01-4           4
         Northern    Male 2003     6        01-4           6
         Northern    Male 2003     7        01-4           5
         Northern    Male 2003     8        01-4           0
         Northern    Male 2003     9        01-4           1
         Northern    Male 2003    10        01-4           2
         Northern    Male 2003    11        01-4           0
         Northern    Male 2003    12        01-4           1
         Northern    Male 2004     1        01-4           1
         Northern    Male 2004     2        01-4           0

যাচ্ছি

         Northern    Male 2006    11        01-4           0
         Northern    Male 2006    12        01-4           0

তবে কেউ পরামর্শ দিয়েছে আমার বরং আমার প্রশ্নটি এখানে নিয়ে আসা উচিত - সম্ভবত কোনও দিকনির্দেশনা চাইতে হবে? বর্তমানে আমি এই তথ্যটি আর-তে যথাযথ সময়-সিরিজ / প্যানেল স্টাডি হিসাবে প্রবেশ করতে পারছি না event আমার শেষ উদ্দেশ্যটি হ'ল ২০০ data ও ২০০৮ সালে কিছু মাস ধরে amelia2নিখোঁজ হওয়ার TotalDeathsজন্য গণ্য করার জন্য এই ডেটা এবং প্যাকেজটি এর কার্যকারিতা সহ ব্যবহার করা , যেখানে ডেটা রয়েছে অনুপস্থিত।

কোনও সহায়তা, কীভাবে এটি করবেন এবং এই সমস্যাটি মোকাবেলা করার জন্য সম্ভবত পরামর্শগুলি কৃতজ্ঞতার সাথে প্রশংসা করবে।

যদি এটি সহায়তা করে তবে আমি ক্লিন্ট রবার্টস তাঁর পিএইচডি থিসিসে যা করেছিলেন তার অনুরূপ পন্থা অনুসরণ করার চেষ্টা করছি ।

সম্পাদনা করুন:

@ ম্যাট দ্বারা প্রস্তাবিত 'সময়' এবং 'গোষ্ঠী' ভেরিয়েবল তৈরির পরে:

> head(dat)
     District Gender Year Month AgeGroup Unnatural Natural Total time                    group
1 Khayelitsha Female 2001     1        0         0       6     6    1     Khayelitsha.Female.0
2 Khayelitsha Female 2001     1     01-4         1       3     4    1  Khayelitsha.Female.01-4
3 Khayelitsha Female 2001     1    05-14         0       0     0    1 Khayelitsha.Female.05-14
4 Khayelitsha Female 2001     1     15up         8      73    81    1  Khayelitsha.Female.15up
5 Khayelitsha Female 2001     2        0         2       9    11    2     Khayelitsha.Female.0
6 Khayelitsha Female 2001     2     01-4         0       2     2    2  Khayelitsha.Female.01-4

আপনি লক্ষ্য করেছেন যে, প্রকৃতপক্ষে আরও রয়েছে 'প্রাকৃতিক' এবং 'অপ্রাকৃত' detail

উত্তর:


10

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

দেখে মনে হচ্ছে আপনার এককগুলি রয়েছে যা জেলা-লিঙ্গ-বয়সের গোষ্ঠী মাসিক স্তরে পালন করা হয়। প্রথমে আপনি প্রতিটি ধরণের ইউনিটের জন্য একটি ফ্যাক্টর ভেরিয়েবল তৈরি করুন (এটি প্রতিটি জেলা-লিঙ্গ-বয়স গোষ্ঠীর জন্য একটি স্তর)। এটি কল করুন group। তারপরে, আপনার সময়ের জন্য একটি পরিবর্তনশীল প্রয়োজন, যা সম্ভবত ২০০৩ সালের জানুয়ারীর মাসের সংখ্যা Thus সুতরাং, 2004 এর জানুয়ারিতে এই পরিবর্তনশীলটি 13 হবে this এই পরিবর্তনকে কল করুন time। অ্যামেলিয়া আপনাকে নিম্নলিখিত কমান্ডগুলির সাথে সময় ট্রেন্ডের উপর ভিত্তি করে গুনগুন করার অনুমতি দেবে:

library(Amelia)
a.out <- amelia(my.data, ts = "time", cs = "group", splinetime = 2, intercs = TRUE)

tsএবং csআর্গুমেন্ট কেবল সময় এবং ইউনিট ভেরিয়েবল বোঝান। splinetimeযুক্তি সেট কিভাবে নমনীয় অনুপস্থিত তথ্য আরোপ করতে ব্যবহার করা যেতে সময় উচিত নয়। এখানে, একটি 2 এর অর্থ হ'ল অভিব্যক্তি সময়ের চতুর্ভুজ ফাংশন ব্যবহার করবে, তবে উচ্চতর মানগুলি আরও নমনীয় হবে। intercsযুক্তি এখানে এমেলিয়া বলে প্রতিটি জেলায়-লিঙ্গ-ageGroup জন্য পৃথক সময় প্রবণতা ব্যবহার করতে। এটি মডেলটিতে অনেকগুলি পরামিতি যুক্ত করে, সুতরাং আপনি যদি সমস্যায় পড়ে থাকেন তবে FALSEডিবাগ করার চেষ্টা করতে আপনি এটি সেট করতে পারেন ।

যে কোনও ইভেন্টে, এটি আপনার ডেটাতে থাকা সময় তথ্য ব্যবহার করে আপনাকে অনুপ্রবেশ করবে। যেহেতু অনুপস্থিত ডেটা শূন্যের সাথে আবদ্ধ, আপনি boundsসেই যুক্তিযুক্ত সীমানায় অনুপ্রবেশকে জোর করার জন্য যুক্তিটি ব্যবহার করতে পারেন ।

সম্পাদনা: কীভাবে গ্রুপ / সময়ের ভেরিয়েবল তৈরি করবেন

সময়ের পরিবর্তনশীলটি তৈরি করা সবচেয়ে সহজ হতে পারে, কারণ আপনাকে কেবল ২০০২ সাল থেকে গণনা করতে হবে (ধরে নিচ্ছেন যে এটি আপনার ডেটাতে সর্বনিম্ন বছর):

my.data$time <- my.data$Month + 12 * (my.data$Year - 2002)

গ্রুপ ভেরিয়েবলটি সামান্য শক্ত তবে এটি করার একটি দ্রুত উপায় পেস্ট কমান্ডটি ব্যবহার করে:

my.data$group <- with(my.data, 
                      as.factor(paste(District, Gender, AgeGroup, sep = ".")))

এই ভেরিয়েবলগুলি তৈরি করে, আপনি অনুচ্ছেদ থেকে মূল পরিবর্তনশীলগুলি সরাতে চান। এটি করার জন্য আপনি idvarsযুক্তিটি ব্যবহার করতে পারেন :

a.out <- amelia(my.data, ts = "time", cs = "group", splinetime = 2, intercs = TRUE,
                idvars = c("District", "Gender", "Month", "Year", "AgeGroup"))

আপনার প্রতিক্রিয়ার জন্য আপনাকে অনেক ধন্যবাদ! আমি Ameliaকিছুটা সময় নিয়ে খেলছিলাম কিন্তু ছেড়ে দিয়েছি (এর আগে) আমি এর আগে ভিগনেটটি দেখেছি (তবে এটি কোনওরকম হারিয়ে ফেলেছে!) স্রেফ এটির একটি তাত্ক্ষণিক দৃষ্টি আকর্ষণ করা হয়েছে এবং এর মাধ্যমে এটি চালু হবে। একটা সমস্যা আমি এখন আছে আমি কিভাবে তৈরি করার অনিশ্চিত আছি groupএবং timeভেরিয়েবল। (আমি সময় সিরিজ বিশ্লেষণ / পূর্বাভাসের জন্য এগুলি তৈরি করার চেষ্টা করেছি, তবে এটির কাছাকাছি একটি লুপ পেয়েছি)) আমি নিশ্চিত এটি ভাইগেটে রয়েছে - তাই আমি যদি লড়াই করে যাচ্ছি তবে আপনার কাছে ফিরে আসব। আবার ধন্যবাদ :)
ওএসওলসও

খুশী এটা কার্যকর। আমি কীভাবে সেই ভেরিয়েবলগুলি তৈরি করতে পারি তার একটি উদাহরণ যুক্ত করেছি। আশা করি এইটি কাজ করবে.
ম্যাট ব্ল্যাকওয়েল

@ ম্যাট উদাহরণের জন্য ধন্যবাদ। কিছু অদ্ভুত কারণে যখন আমি "ts = সময়" এবং "সিএস = গ্রুপ" ব্যবহার করি তখন এটি আমাকে একটি ত্রুটি দেয়। আমি কেবলমাত্র "সময়" এবং "গোষ্ঠী" সম্পর্কিত কলাম নম্বর দ্বারা প্রতিস্থাপন এবং তারপর এটি কাজ করে। a.out=amelia(dat,ts=time,cs=group,splinetime=2,intercs=TRUE,idvars=c("District","Gender","Month","Year","AgeGroup"),bounds=bds) Amelia Error Code: 6 The 'ts' variable is out of the range of possible column numbers or is not an integer.
ওএসওএলএসও

সীমাগুলির জন্য আমি ভিনয়েট অনুসরণ করেছি এবং ব্যবহার করে সীমা তৈরি করেছি: bds <- matrix(c(6, 7, 8,0, 0,0, 500, 500,500), nrow = 3, ncol = 3)আমি মূলত স্রেফ এলোমেলো উপরের সীমা হিসাবে 500 বেছে নিয়েছি। আমি কেবল তৃতীয় কলামটি না দেওয়ার চেষ্টা করেছি, তবে Ameliaসতর্ক করে দিয়েছিলাম যে এটির জন্য তৃতীয়টি দরকার। কেবলমাত্র একটি নিম্ন সীমা নির্দিষ্ট করার কোনও উপায় আছে কি?
ওএসওএলএসও

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