সাধারাওন বক্তব্য
"আমি দশম শ্রেণিতে আছি এবং আমি একটি মেশিন লার্নিং বিজ্ঞান মেলা প্রকল্পের ডেটা অনুকরণ করতে চাইছি।" অসাধারণ. আমি দশম শ্রেণিতে গণিত সম্পর্কে মোটেই পাত্তা দিইনি; আমার মনে হয় আমি সেই বছর বীজগণিত 2 এর মতো কিছু নিয়েছিলাম ...? আপনি কয়েক বছরের মধ্যে আমাকে চাকরি থেকে সরিয়ে না দেওয়া পর্যন্ত আমি অপেক্ষা করতে পারি না! আমি নীচে কিছু পরামর্শ দিচ্ছি, কিন্তু: আপনি এই সিমুলেশন থেকে কী শিখতে চাইছেন? পরিসংখ্যান এবং মেশিন লার্নিংয়ে আপনি ইতিমধ্যে কীসের সাথে পরিচিত? এটি জানার ফলে আমাকে (এবং অন্যরা) আরও কিছু নির্দিষ্ট সাহায্য একসাথে রাখতে সহায়তা করবে।
পাইথন একটি খুব দরকারী ভাষা, তবে আমি এই মতামত নিয়েছি যে ডেটা অনুকরণের জন্য আর ভাল। আমি বেশিরভাগ বই / ব্লগ / পড়াশোনা / ক্লাসগুলি ডেটা সিমুলেট করে দেখেছি (লোকেরা "মন্টি কার্লো পদ্ধতিগুলিকে অভিনব বলে অভিহিত করে) আর এও আছে। আর ভাষাটি পরিসংখ্যানবিদদের দ্বারা" হিসাবে পরিচিত, "এবং বেশিরভাগ শিক্ষাবিদ — যা তাদের পদ্ধতিগুলি দেখানোর জন্য সিমুলেশন স্টাডির উপর নির্ভর করে R আর ব্যবহার করুন cool প্রচুর শীতল ফাংশনগুলি বেস আর ভাষাতে রয়েছে (এটি কোনও অতিরিক্ত প্যাকেজগুলির প্রয়োজন নেই), যেমন ইউনিফর্মের rnorm
জন্য একটি সাধারণ বিতরণের runif
জন্য বন্টন, rbeta
বিটা বিতরণের জন্য, ইত্যাদি। আর-তে টাইপ করা ?Distributions
আপনাকে সেগুলিতে একটি সহায়তা পৃষ্ঠা দেখাবে। যাইহোক, আছে মত অনেক অন্যান্য শীতল প্যাকেজ mvtnorm
বাsimstudy
যে দরকারী। আমি আর শিখার জন্য ডেটা ক্যাম্প ডটকমকে সুপারিশ করব, যদি আপনি কেবল পাইথন জানেন; আমি মনে করি যে তারা জিনিসগুলির সাথে আলতোভাবে পরিচয় করিয়ে দেওয়ার জন্য ভাল
দেখে মনে হচ্ছে আপনার এখানে অনেক কিছু চলছে: আপনি সময়ের সাথে (অনুদৈর্ঘ্য), সাবজেক্টের মধ্যে (সম্ভবত একটি মাল্টিলেভেল মডেল ব্যবহার করছেন) এমন ডেটা চান এবং সেগুলির একটি মৌসুমী উপাদান রয়েছে (সম্ভবত কোনও সময়ের সিরিজের মডেল), সমস্ত ভবিষ্যদ্বাণী করে একটি দ্বিধাদায়ক ফলাফল (লজিস্টিক রিগ্রেশন জাতীয় কিছু)। আমি মনে করি যে সিমুলেশন অধ্যয়ন শুরু করে প্রচুর লোক (নিজেকে সহ) একসাথে একগুচ্ছ জিনিস ফেলে দিতে চায় তবে এটি সত্যই উদ্বেগজনক এবং জটিল হতে পারে। সুতরাং আমি যা করার পরামর্শ দিচ্ছি তা হ'ল সহজ কিছু দিয়ে শুরু করা — সম্ভবত ডেটা উত্পন্ন করার জন্য একটি ফাংশন বা দুটি তৈরি করা then এবং সেখান থেকে তৈরি করুন।
নির্দিষ্ট মন্তব্য
দেখে মনে হচ্ছে আপনার মূল অনুমানটি হ'ল: "দিনের সময়টি ভবিষ্যদ্বাণী করে যে কেউ তাদের ওষুধ সেবন করতে মেনে চলেন কিনা।" আর তুমি দুই দুই কৃত্রিম ডেটা সেট তৈরি চাই: এক যেখানে হয় একটি সম্পর্ক এবং এক যেখানে আছে না ।
আপনি একই ব্যক্তির একাধিক পর্যবেক্ষণ উপস্থাপনের জন্য সিমুলেটিং ডেটা উল্লেখ করেছেন। এর অর্থ হ'ল প্রতিটি ব্যক্তির সাথে তাদের আনুগত্যের নিজস্ব সম্ভাবনাও থাকবে, সম্ভবত, দিনের সময় এবং আনুগত্যের সম্ভাবনার মধ্যে সম্পর্কের জন্য তাদের নিজস্ব opeাল হবে। আমি এই ধরণের সম্পর্কের জন্য "মাল্টিলেভেল" বা "শ্রেণিবদ্ধ" রিগ্রেশন মডেলগুলিতে সন্ধান করার পরামর্শ দেব, তবে আমি মনে করি আপনি এটির চেয়ে সহজতর শুরু করতে পারেন।
এছাড়াও, আপনি ওষুধের নিয়ম মেনে চলার সময় এবং সম্ভাবনার মধ্যে একটি অবিচ্ছিন্ন সম্পর্কের কথা উল্লেখ করেছেন, যা আমাকে ভাবতেও বাধ্য করে যে টাইম সিরিজ মডেলিং - বিশেষত মৌসুমী প্রবণতাগুলি দেখানো you আপনার জন্য সহায়ক হবে। এটিও অনুকরণযোগ্য-সক্ষম, তবে আবারও, আমি মনে করি আমরা আরও সহজ শুরু করতে পারি।
আসুন ধরা যাক আমাদের 1000 জন লোক রয়েছে এবং আমরা তাদের ওষুধটি একবারে নিয়েছি কিনা তা আমরা মাপছি। আমরা এও জানি যে তাদের সকাল, বিকেলে বা সন্ধ্যায় এটি নেওয়ার দায়িত্ব দেওয়া হয়েছিল কিনা। আসুন বলে যে ওষুধ 1, নিচ্ছে না এটা 0. আমরা ব্যবহার dichotomous তথ্য সিমুলেট করতে rbinom
একটি দ্বিপদ বিন্যাস থেকে স্বপক্ষে জন্য। আমরা প্রতিটি ব্যক্তিকে একটি নির্দিষ্ট সম্ভাব্যতা সহ 1 টি পর্যবেক্ষণ করতে সেট করতে পারি। ধরা যাক যে লোকেরা সকালে এটি গ্রহণের সম্ভাবনা থাকে 80%, বিকেলে 50% এবং রাতে 65%। আমি নীচের কোডটি পেস্ট করেছি, এর পরে কিছু মন্তব্য সহ #
:
set.seed(1839) # this makes sure the results are replicable when you do it
n <- 1000 # sample size is 1000
times <- c("morning", "afternoon", "evening") # create a vector of times
time <- sample(times, n, TRUE) # create our time variable
# make adherence probabilities based on time
adhere_prob <- ifelse(
time == "morning", .80,
ifelse(
time == "afternoon", .50, .65
)
)
# simulate observations from binomial distribution with those probabilities
adhere <- rbinom(n, 1, adhere_prob)
# run a logistic regression, predicting adherence from time
model <- glm(adhere ~ time, family = binomial)
summary(model)
এই সংক্ষিপ্তসারটি অংশে দেখায়:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.02882 0.10738 0.268 0.78839
timeevening 0.45350 0.15779 2.874 0.00405 **
timemorning 1.39891 0.17494 7.996 1.28e-15 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Intercept
বিকেলে প্রতিনিধিত্ব করে আর আমরা দেখতে পারি উভয় সন্ধ্যায় এবং সকাল লগ্ন এর উল্লেখযোগ্যভাবে বেশী সম্ভাবনা আছে। লজিস্টিক রিগ্রেশন সম্পর্কে প্রচুর বিশদ রয়েছে যা আমি এই পোস্টে ব্যাখ্যা করতে পারি না, তবে টি- স্টেটস ধরে নিচ্ছে যে আপনার শর্তসাপেক্ষে স্বাভাবিকভাবে বিতরণ করা নির্ভরশীল ভেরিয়েবল রয়েছে। লজিস্টিক রিগ্রেশন মডেলগুলি আরও উপযুক্ত যখন আপনার মত ডাইকোটমাস (0 বনাম 1) ফলাফল আসে। সর্বাধিক পরিচায়ক পরিসংখ্যান বই সম্পর্কে কথা বলতে হবে টন -test এবং পরিচায়ক মেশিন লার্নিং বই লজিস্টিক রিগ্রেশন সম্পর্কে কথা বলতে হবে অনেক। আমি মনে করি পরিসংখ্যানগত শিক্ষার পরিচিতি: আর এর সাথে অ্যাপ্লিকেশনগুলি দুর্দান্ত, এবং লেখকরা পুরো জিনিসটি অনলাইনে পোস্ট করেছেন:https://www-bcf.usc.edu/~gareth/ISL/ISLR%20First%20Printing.pdf
সিমুলেশন অধ্যয়নের জন্য আমি ভাল বই সম্পর্কে নিশ্চিত নই; আমি ঘোরাঘুরি, অন্য লোকেরা কী করেছে তা পড়ার থেকে এবং একটি স্নাতক কোর্স থেকে আমি পরিসংখ্যানগত কম্পিউটিং শুরু করেছি (অধ্যাপকের উপকরণগুলি এখানে রয়েছে: http://pj.freefactory.org/guides/ )।
সবশেষে, আপনি একই সম্ভাবনা থাকার জন্য সময় নির্ধারণ করে কোনও প্রভাব ছাড়াই অনুকরণ করতে পারেন:
set.seed(1839)
n <- 1000
times <- c("morning", "afternoon", "evening")
time <- sample(times, n, TRUE)
adhere <- rbinom(n, 1, .6) # same for all times
summary(glm(adhere ~ time, binomial))
যা ফেরত:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.40306 0.10955 3.679 0.000234 ***
timeevening -0.06551 0.15806 -0.414 0.678535
timemorning 0.18472 0.15800 1.169 0.242360
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
এটি সময়ের মধ্যে কোনও তাত্পর্যপূর্ণ তাত্পর্য প্রদর্শন করে না, কারণ আমরা সম্ভাবনা থেকে একই সময়ের মধ্যে একইরকম আশা করব।