ফর্মের মডেলটির জন্য রিগ্রেশন ?


22

আমার কাছে একটি ডেটাসেট রয়েছে যা একটি ওয়েব আলোচনা ফোরামের পরিসংখ্যান। আমি কোনও বিষয়ের প্রত্যাশিত উত্তরগুলির সংখ্যার বিতরণটি দেখছি। বিশেষত, আমি একটি ডেটাसेट তৈরি করেছি যার সাথে শীর্ষস্থানীয় জবাব গণনাগুলির একটি তালিকা রয়েছে এবং তারপরে সেই সংখ্যার জবাব রয়েছে এমন বিষয়গুলির গণনা।

"num_replies","count"
0,627568
1,156371
2,151670
3,79094
4,59473
5,39895
6,30947
7,23329
8,18726

আমি যদি লগ-লগ প্লটে ডেটাসেটটি প্লট করি তবে মূলত একটি সরল রেখাটি আমি পাই:

লগ-লগ স্কেলে ডেটা প্লট করা হয়েছে

(এটি জিপফিয়ান বিতরণ )। উইকিপিডিয়া আমাকে বলে যে লগ-লগ প্লটে সরল রেখা একটি ফাংশন যে ফর্ম একটি monomial দ্বারা অনুকরণে করা যেতে পারে পরোক্ষভাবে । এবং প্রকৃতপক্ষে আমি এই জাতীয় কোনও ক্রিয়াকলাপকে চোখের সামনে রেখেছি:Y=একটিএক্স

lines(data$num_replies, 480000 * data$num_replies ^ -1.62, col="green")

চশমা মডেল

আমার চোখের বলগুলি স্পষ্টতই আর আর এর মতো নির্ভুল নয় তবে আমি কীভাবে এই মডেলটির পরামিতিগুলিকে আরও সঠিকভাবে ফিট করতে পারি? আমি বহুবর্ষীয় রিগ্রেশন চেষ্টা করেছি, তবে আমি মনে করি না যে আর পরামিতি হিসাবে এক্সপেনশনটিকে ফিট করার চেষ্টা করে - আমি যে মডেলটি চাই তার সঠিক নাম কী?

সম্পাদনা করুন: প্রত্যেকের উত্তরের জন্য ধন্যবাদ। প্রস্তাবিত হিসাবে, আমি এখন এই রেসিপিটি ব্যবহার করে ইনপুট ডেটার লগগুলির বিরুদ্ধে লিনিয়ার মডেলটি ফিট করেছি:

data <- read.csv(file="result.txt")

# Avoid taking the log of zero:
data$num_replies = data$num_replies + 1

plot(data$num_replies, data$count, log="xy", cex=0.8)

# Fit just the first 100 points in the series:
model <- lm(log(data$count[1:100]) ~ log(data$num_replies[1:100]))

points(data$num_replies, round(exp(coef(model)[1] + coef(model)[2] * log(data$num_replies))), 
       col="red")

ফলাফলটি, লাল রঙের মধ্যে মডেলটি দেখিয়ে:

লাগানো মডেল

এটি আমার উদ্দেশ্যগুলির জন্য একটি ভাল অনুমানের মতো দেখায়।

আমি যদি তখন এই জিপফিয়ান মডেলটি (আলফা = 1.703164) বরাবর এলোমেলো সংখ্যা জেনারেটর সহ একই পরিমাণের সংখ্যা তৈরি করতে (1400930) মূল পরিমাপক ডেটাসেট ধারণ করে ( এই সি কোডটি ব্যবহার করে ওয়েবে পেয়েছি ), ফলাফলটি দেখায় মত:

এলোমেলো সংখ্যা ফলাফল উত্পন্ন

পরিমাপ করা পয়েন্টগুলি কালো রঙের হয়, মডেল অনুসারে এলোমেলোভাবে উত্পন্ন পয়েন্টগুলি লাল।

আমি মনে করি এটি দেখায় যে এগুলি 1400930 পয়েন্ট এলোমেলোভাবে তৈরি করে তৈরি করা সহজ প্রকরণটি মূল গ্রাফের আকারের জন্য একটি ভাল ব্যাখ্যা।

আপনি যদি নিজেরাই কাঁচা ডেটা নিয়ে খেলতে আগ্রহী হন তবে আমি এটি এখানে পোস্ট করেছি


2
কেন কেবল দুটি সংখ্যা এবং নাম_প্রেমীর লগই নিচ্ছেন না এবং তাদের কাছে একটি আদর্শ রৈখিক মডেল ফিট করবেন না?
গুং - মনিকা পুনরায়

3
10000 জবাবের নিচে গণনা করাতে সেই বিশাল স্পাইকটি কী?
গ্লেন_বি -রিনস্টেট মনিকা

3
উভয়ই গণনা বা লগ-গণিতে স্থির বৈকল্পিকতা থাকে না (গণনাগুলির জন্য, গড়ের সাথে বৈকল্পিক বৃদ্ধি পাবে, লগ-গণিতে এটি সাধারণত গড়ের সাথে হ্রাস পায়)। উভয় ভেরিয়েবল দেওয়া হয় এবং অনেকগুলি সংখ্যা খুব ছোট, আমি লইস-লিঙ্কের সাহায্যে কোনও পয়সন, কোসি-পোইসন বা নেতিবাচক দ্বিপদী জিএলএমের দিকে ঝুঁকে থাকি। আপনার যদি অবশ্যই সাধারণ রিগ্রেশন ব্যবহার করতে হয় তবে কমপক্ষে ভেরিয়েন্স ইস্যু নিয়ে ডিল করুন। অন্য বিকল্প হ'ল একটি আনসকম্ব বা ফ্রিম্যান-টুকি গণনাগুলির রূপান্তর করা এবং একটি ননলাইনারে সর্বনিম্ন স্কোয়ার মডেল ফিট করা।
গ্লেন_বি -রিনস্টেট মনিকা

1
আকর্ষণীয় স্পাইকটি বিভিন্ন ফোরামে একটি মানব-প্রয়োগকারী "সর্বাধিক বিষয় দৈর্ঘ্যের" কারণে।
অতঃপর

2
Fudge সুস্বাদু :) আরও প্রকৃতপক্ষে, (num_replies + 1) এবং (num_posts_in_topic) এর মধ্যে কোনও পার্থক্য নেই।
তারিকডুডে

উত্তর:


22

আপনার উদাহরণটি খুব ভাল একটি কারণ এটি পরিষ্কারভাবে এ জাতীয় ডেটা সহ পুনরাবৃত্ত সমস্যাগুলি তুলে ধরে।

দুটি সাধারণ নাম পাওয়ার ফাংশন এবং পাওয়ার আইন। জীববিজ্ঞান এবং অন্যান্য কিছু ক্ষেত্রে, লোকেরা প্রায়শই অলমেট্রি নিয়ে কথা বলে, বিশেষত যখনই আপনি আকারের পরিমাপ সম্পর্কিত হন। পদার্থবিজ্ঞান এবং অন্যান্য কয়েকটি ক্ষেত্রে লোকেরা স্কেলিং আইন সম্পর্কিত কথা বলে।

আমি মনমোহনকে এখানে একটি ভাল শব্দ হিসাবে বিবেচনা করব না, কারণ আমি এটিকে পূর্ণসংখ্যার শক্তির সাথে যুক্ত করি। একই কারণে এটি বহুপদী বিশেষ একটি ক্ষেত্রে হিসাবে ভাল বিবেচনা করা হয় না।

দুটি পৃথক ভেরিয়েবলের মধ্যে সম্পর্কের ক্ষেত্রে পাওয়ার আইন ফিটিংয়ের সমস্যাগুলিতে একটি বিতরণ আকারের লেজকে একটি পাওয়ার আইন লাগানোর সমস্যা।

পাওয়ার আইনে ফিট করার সবচেয়ে সহজ উপায় হ'ল উভয় ভেরিয়েবলের লগারিদম নেওয়া এবং তারপরে রিগ্রেশন ব্যবহার করে একটি সরলরেখায় ফিট করা। উভয় ভেরিয়েবল ত্রুটি সাপেক্ষে এটির ক্ষেত্রে অনেকগুলি আপত্তি রয়েছে, যেমনটি সাধারণ। এখানে উদাহরণটি উভয় ভেরিয়েবল হিসাবে (এবং উভয়ই নয়) প্রতিক্রিয়া হিসাবে বিবেচিত হতে পারে (নির্ভরশীল ভেরিয়েবল) case এই যুক্তি ফিটিংয়ের আরও একসম্মত পদ্ধতির দিকে নিয়ে যায়।

তদ্ব্যতীত, ত্রুটি কাঠামো সম্পর্কে সবসময় অনুমানের প্রশ্ন থাকে। আবার, এখানে উদাহরণটি পয়েন্টে একটি কেস হিসাবে ত্রুটিগুলি সুস্পষ্টভাবে হিটারোসেসডাস্টিক। এটি ওজনযুক্ত সর্বনিম্ন-স্কোয়ারের মতো আরও কিছু প্রস্তাব দেয়।

একটি দুর্দান্ত পর্যালোচনা হ'ল http://www.ncbi.nlm.nih.gov/pubmed/16573844

তবুও আরেকটি সমস্যা হ'ল লোকেরা প্রায়শই কেবল তাদের ডেটাগুলির কিছু পরিসরে পাওয়ার আইন সনাক্ত করে। প্রশ্নগুলি তখন বৈজ্ঞানিক পাশাপাশি পরিসংখ্যানগতও হয়ে যায়, পাওয়ার আইন শনাক্তকরণ কেবল ইচ্ছাকৃত চিন্তাভাবনা বা কোনও ফ্যাশনেবল শৌখিন বিনোদন নয় to পদার্থবিজ্ঞান থেকে অধিবিদ্যার্থবিজ্ঞানের সাথে সম্পর্কিত আলোচনার সাথে অনেকাংশে ফ্র্যাক্টাল এবং স্কেল-মুক্ত আচরণের শিরোনামে উত্থাপিত হয়। আপনার নির্দিষ্ট উদাহরণে, কিছুটা বক্রতা স্পষ্ট বলে মনে হয়।

শক্তি আইন সম্পর্কে উত্সাহী সবসময় সংশয়ীদের সাথে মিলে না, কারণ উত্সাহীরা সন্দেহবাদীদের চেয়ে বেশি প্রকাশ করেন। আমি প্রস্তাব দিয়েছি যে লোগারিদমিক স্কেলগুলিতে একটি বিচ্ছুরিত প্লট, যদিও একটি প্রাকৃতিক এবং চমৎকার প্লট প্রয়োজনীয় যা প্রয়োজনীয়, শক্তি ফাংশন ফর্ম থেকে প্রস্থানগুলি পরীক্ষা করার জন্য কোনও প্রকারের অবশিষ্ট প্লটগুলির সাথে থাকা উচিত।


2
ধন্যবাদ, এটি ব্যাখ্যা করে যে কেন লোকেরা "বহুবর্ষীয় রিগ্রেশন" নিয়ে আলোচনা করছিল আমি কেন এমন কিছু খুঁজে পাচ্ছিলাম না। আমি আমার মডেলটি ফিট করে ফলাফলগুলি দিয়ে আপডেট করেছি!
তারপরে ডুড

আপনি যদি পাওয়ার আইনের ফিটিং এবং লাগানো মডেলের জন্য তাত্পর্য পরীক্ষা করার জন্য আরও কিছু কঠোর পদ্ধতির সন্ধান করেন তবে আপনি সম্ভবত এই কাগজটি চান: arxiv.org/abs/0706.1062 এবং তার সাথে সংযুক্ত কোড: tuvalu.santafe.edu/ ar অ্যারোনক / পাওয়ারলজ
মার্টিন ও'লিয়ারি

2
উপরোক্ত উদ্ধৃত কাগজটি বিতরণগুলির জন্য যা পাওয়ার আইন হয়, ভেরিয়েবলের মধ্যে সম্পর্ক নয় যা পাওয়ার আইন। এই প্রশ্নের শিরোনাম উত্তরোত্তর আরও ভাল ফিট করে; এই প্রশ্নের উদাহরণ প্রাক্তন আরও ভাল ফিট করে।
নিক কক্স

1

যদি আপনি ধরে নেন যে একটি শক্তি ফিট করার জন্য একটি ভাল মডেল, তবে আপনি log(y) ~ log(x)আপনার মডেল হিসাবে ব্যবহার করতে পারেন এবং এটি ব্যবহার করে একটি লিনিয়ার রিগ্রেশন ফিট করতে পারেন lm():

এটা চেষ্টা কর:

# Generate some data
set.seed(42)

x <- seq(1, 10, 1)

a = 10
b = 2
scatt <- rnorm(10, sd = 0.2)


dat <- data.frame(
  x = x,
  y = a*x^(-b) + scatt
)

একটি মডেল ফিট করুন:

# Fit a model
model <- lm(log(y) ~ log(x) + 1, data = dat) 
summary(model)

pred <- data.frame(
  x = dat$x,
  p = exp(predict(model, dat))
)

এখন একটি প্লট তৈরি করুন:

# Create a plot
library(ggplot2)
ggplot() +
  geom_point(data = dat, aes(x=x, y=y)) +
  geom_line(data = pred, aes(x=x, y=p), col = "red")

এখানে চিত্র বর্ণনা লিখুন

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