আর এ দুটি বহুপদী রিগ্রেশনগুলির মধ্যে পার্থক্যের পরিসংখ্যানগত তাত্পর্য তুলনা করুন


10

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

Ratio<-(mydata2[,c(2)])
Time_in_days<-(mydata2[,c(1)])
fit3IRC <- lm( Ratio~(poly(Time_in_days,2)) )

বহুপদী নিবন্ধের প্লটগুলি হ'ল:

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

সহগগুলি হ'ল:

> as.vector(coef(fit3CN))
[1] -0.9751726 -4.0876782  0.6860041
> as.vector(coef(fit3IRC))
[1] -1.1446297 -5.4449486  0.5883757 

এবং এখন আমি জানতে চাই, যদি কোনও পরীক্ষা করার জন্য কোনও আর ফাংশন ব্যবহার করার উপায় থাকে যা আমাকে জানায় যে দিনের প্রাসঙ্গিক ব্যবধানটি জেনেও যে দুটি বহুপদী নিবন্ধের মধ্যে পার্থক্যের একটি পরিসংখ্যানগত তাত্পর্য আছে কি না [ 1100]।

আমি যা বুঝেছিলাম সেখান থেকে আমি সরাসরি আনোভা পরীক্ষাটি প্রয়োগ করতে পারি না কারণ মানগুলি দুটি ভিন্ন সেট ডেটা বা এআইসি থেকে আসে যা মডেল / সত্য ডেটার তুলনা করতে ব্যবহৃত হয়।

আমি সম্পর্কিত প্রশ্নে @ রোল্যান্ডের দেওয়া নির্দেশাবলী অনুসরণ করার চেষ্টা করেছি তবে আমার ফলাফলগুলি দেখার সময় আমি সম্ভবত কিছু ভুল বুঝেছিলাম:

আমি যা করেছি তা এখানে:

আমি আমার উভয় ডেটাসেটকে এক সাথে সংযুক্ত করেছি।

f@ রোল্যান্ড যে পরিবর্তনশীল ফ্যাক্টরটির কথা বলেছিলেন তা হ'ল। আমি প্রথম সেটটির জন্য 1s এবং অন্যটির জন্য 0 টি রেখেছি।

y<-(mydata2[,c(2)])
x<-(mydata2[,c(1)])
f<-(mydata2[,c(3)])

plot(x,y, xlim=c(1,nrow(mydata2)),type='p')

fit3ANOVA <- lm( y~(poly(x,2)) )

fit3ANOVACN <- lm( y~f*(poly(x,2)) )

আমার ডেটা এখন এই মত দেখাচ্ছে:

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

লালটি fit3ANOVAএটি এখনও কাজ করছে তবে fit3ANOVACNমডেলটির অদ্ভুত ফলাফলের সাথে আমার নীল সমস্যাটি আছে । ফিট মডেলটি সঠিক কিনা তা আমি জানি না, @ রোল্যান্ডের সঠিক অর্থ কী তা আমি বুঝতে পারি না।

@ ডেল্টাইভ সমাধান বিবেচনা করে আমি মনে করি যে সেক্ষেত্রে: এখানে চিত্র বর্ণনা লিখুন মডেলগুলি ওভারল্যাপ করা সত্ত্বেও উল্লেখযোগ্যভাবে আলাদা। আমি কি ঠিক ধরে নিচ্ছি?


আমার কাছে মনে হচ্ছে যে ব্যবহারকারী @ রোল্যান্ডের যে প্রশ্নের সাথে আপনি সংযুক্ত রয়েছেন তার মন্তব্য, আপনার প্রশ্নের সঠিক উত্তর দিয়েছে। আপনি ঠিক বুঝতে পারছেন না কি?
ডেল্টাআইভি

বেশ কয়েকটি বিষয়, আমি নিশ্চিত ছিলাম না যে এটি কোনও সঠিক উত্তর ছিল না কারণ এটি মন্তব্য বিভাগে ছিল, তবে যদি এটি তখন কাজ করে তবে আমার নিশ্চিত হওয়া দরকার যে আমি বুঝতে পেরেছি। মূলত, আমার একটি নতুন ডেটাसेट তৈরি করা উচিত যেখানে আমি মূলত কোন ডেটাসেটগুলি থেকে এসেছি তার উপর নির্ভর করে 1s এবং 0 এর মতো কলাম তৈরি করব? তারপরে আমি প্রতিটি ডেটার সাথে একটি করে দুটি মডেল তৈরি করি এবং অন্যটি কেবলমাত্র অ্যাকাউন্টে নেওয়া ডেটাসেটগুলির মধ্যে একটি। তারপরে আমি আনোভা পরীক্ষাটি প্রয়োগ করি। এইটাই কি সেইটা ? এছাড়াও আমি কখনই আনোভা পরীক্ষা ব্যবহার করিনি, আমি দেখেছি তারা যথাযথ পি-ভ্যালু সম্পর্কে কথা বলেছিল তা ঠিক কী হবে?
পাওলো এইচ

1
আপনার ক্ষেত্রে দুটি সংবিধান একই ব্যবধানে রয়েছে। রৈখিক প্রতিরোধের জন্য আত্মবিশ্বাস ব্যান্ডগুলি ব্যাখ্যা করার জন্য এটি সেরা ক্ষেত্রে। এই ক্ষেত্রে, পুরো দুটি ব্যবধানের মধ্যে একে অপরের আত্মবিশ্বাস ব্যান্ডের মধ্যে সম্পূর্ণরূপে ( আপনার ক্ষেত্রে) পুরোপুরি একে অপরের আত্মবিশ্বাস ব্যান্ডের অভ্যন্তরে থাকলে পরিসংখ্যানগতভাবে পৃথক নয় - না যদি তারা কেবলমাত্র একটি ছোট উপসমাংশে ওভারল্যাপ হয়। [0,100]
ডেল্টাআইভি

উত্তর:


15
#Create some example data
mydata1 <- subset(iris, Species == "setosa", select = c(Sepal.Length, Sepal.Width))
mydata2 <- subset(iris, Species == "virginica", select = c(Sepal.Length, Sepal.Width))

#add a grouping variable
mydata1$g <- "a"
mydata2$g <- "b"

#combine the datasets
mydata <- rbind(mydata1, mydata2)

#model without grouping variable
fit0 <- lm(Sepal.Width ~ poly(Sepal.Length, 2), data = mydata)

#model with grouping variable
fit1 <- lm(Sepal.Width ~ poly(Sepal.Length, 2) * g, data = mydata)

#compare models 
anova(fit0, fit1)
#Analysis of Variance Table
#
#Model 1: Sepal.Width ~ poly(Sepal.Length, 2)
#Model 2: Sepal.Width ~ poly(Sepal.Length, 2) * g
#  Res.Df     RSS Df Sum of Sq      F    Pr(>F)    
#1     97 16.4700                                  
#2     94  7.1143  3    9.3557 41.205 < 2.2e-16 ***
#  ---
#  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

যেমন আপনি দেখতে পাচ্ছেন, fit1তার চেয়ে উল্লেখযোগ্যভাবে ভাল fit0, অর্থাত্ গ্রুপিং ভেরিয়েবলের প্রভাব উল্লেখযোগ্য। যেহেতু গোষ্ঠীকরণের ভেরিয়েবলটি সংশ্লিষ্ট ডেটাসেটগুলিকে উপস্থাপন করে, তাই দুটি ডেটাসেটের কাছে বহুবচনীয় ফিটগুলি উল্লেখযোগ্যভাবে পৃথক হিসাবে বিবেচিত হতে পারে।


আমি দুঃখিত এটি অবশ্যই স্পষ্ট হতে পারে তবে আমি আনোভা পরীক্ষার ফলাফলের সাথে পরিচিত নই যা আমাদের বলছে যে ফিট 1 এর চেয়ে ফিট 1 ভাল? এটি কি PR (> এফ) যা অত্যন্ত কম?
পাওলো এইচ

1
পি-মানটি আপনাকে জানায় যে মডেলগুলি উল্লেখযোগ্যভাবে পৃথক কিনা (নিম্ন পি-মান মানে "আরও বেশি আলাদা" বিবেচনায় নেওয়া বিভিন্নতা, সাধারণত পি <0.05 উল্লেখযোগ্য বিবেচিত হয়)। আরও ছোট আরএসএস আরও ভাল মানানসই মডেল নির্দেশ করে।
রোল্যান্ড

@ পাওলো বিটিডাব্লু।, আপনার নির্ভরশীল ভেরিয়েবল হিসাবে অনুপাত এড়ানো উচিত। সাধারণ ন্যূনতম স্কোয়ারের মডেলগুলির অনুমান যেমন নির্ভরশীল ভেরিয়েবলটি ধরে রাখে না।
রোল্যান্ড

8

@ রোনাল্ডের উত্তর সবচেয়ে ভাল এবং এটি অনেকগুলি অনুরূপ সমস্যার ক্ষেত্রে ব্যাপকভাবে প্রযোজ্য (উদাহরণস্বরূপ, ওজন এবং বয়সের মধ্যে সম্পর্কের ক্ষেত্রে পুরুষ এবং মহিলাদের মধ্যে একটি পরিসংখ্যানগতভাবে গুরুত্বপূর্ণ পার্থক্য কি?) তবে, আমি আরেকটি সমাধান যুক্ত করব যা পরিমাণগত হিসাবে নয় (এটি কোনও পি- ভ্যালু সরবরাহ করে না ), পার্থক্যের একটি দুর্দান্ত গ্রাফিকাল প্রদর্শন দেয়।

সম্পাদনা : এই প্রশ্ন অনুসারে , দেখে মনে হচ্ছে predict.lm, ggplot2আত্মবিশ্বাসের অন্তরগুলি গণনা করার জন্য ব্যবহৃত ফাংশনটি , রিগ্রেশন বক্ররেখার সাথে একযোগে আত্মবিশ্বাস ব্যান্ডগুলি গণনা করে না , তবে কেবলমাত্র পয়েন্টওয়াইজ কনফিডেন্স ব্যান্ড। এই দুটি ব্যান্ডগুলি যথাযথ নয় যে দুটি ফিটযুক্ত লিনিয়ার মডেল পরিসংখ্যানগতভাবে পৃথক, বা অন্যভাবে বলা হয়েছে, তারা একই সত্য মডেলের সাথে সামঞ্জস্যপূর্ণ হতে পারে কি না assess সুতরাং, আপনার প্রশ্নের উত্তর দেওয়ার জন্য এগুলি সঠিক বক্ররেখা নয়। যেহেতু আপাতদৃষ্টিতে একযোগে আত্মবিশ্বাস ব্যান্ডগুলি পাওয়ার জন্য আর বিল্টিন নেই (অদ্ভুত!), তাই আমি নিজের ফাংশনটি লিখেছি। এটা এখানে:

simultaneous_CBs <- function(linear_model, newdata, level = 0.95){
    # Working-Hotelling 1 – α confidence bands for the model linear_model
    # at points newdata with α = 1 - level

    # summary of regression model
    lm_summary <- summary(linear_model)
    # degrees of freedom 
    p <- lm_summary$df[1]
    # residual degrees of freedom
    nmp <-lm_summary$df[2]
    # F-distribution
    Fvalue <- qf(level,p,nmp)
    # multiplier
    W <- sqrt(p*Fvalue)
    # confidence intervals for the mean response at the new points
    CI <- predict(linear_model, newdata, se.fit = TRUE, interval = "confidence", 
                  level = level)
    # mean value at new points
    Y_h <- CI$fit[,1]
    # Working-Hotelling 1 – α confidence bands
    LB <- Y_h - W*CI$se.fit
    UB <- Y_h + W*CI$se.fit
    sim_CB <- data.frame(LowerBound = LB, Mean = Y_h, UpperBound = UB)
}

library(dplyr)
# sample datasets
setosa <- iris %>% filter(Species == "setosa") %>% select(Sepal.Length, Sepal.Width, Species)
virginica <- iris %>% filter(Species == "virginica") %>% select(Sepal.Length, Sepal.Width, Species)

# compute simultaneous confidence bands
# 1. compute linear models
Model <- as.formula(Sepal.Width ~ poly(Sepal.Length,2))
fit1  <- lm(Model, data = setosa)
fit2  <- lm(Model, data = virginica)
# 2. compute new prediction points
npoints <- 100
newdata1 <- with(setosa, data.frame(Sepal.Length = 
                                       seq(min(Sepal.Length), max(Sepal.Length), len = npoints )))
newdata2 <- with(virginica, data.frame(Sepal.Length = 
                                          seq(min(Sepal.Length), max(Sepal.Length), len = npoints)))
# 3. simultaneous confidence bands
mylevel = 0.95
cc1 <- simultaneous_CBs(fit1, newdata1, level = mylevel)
cc1 <- cc1 %>% mutate(Species = "setosa", Sepal.Length = newdata1$Sepal.Length)
cc2 <- simultaneous_CBs(fit2, newdata2, level = mylevel)
cc2 <- cc2 %>% mutate(Species = "virginica", Sepal.Length = newdata2$Sepal.Length)

# combine datasets
mydata <- rbind(setosa, virginica)
mycc   <- rbind(cc1, cc2)    
mycc   <- mycc %>% rename(Sepal.Width = Mean) 
# plot both simultaneous confidence bands and pointwise confidence
# bands, to show the difference
library(ggplot2)
# prepare a plot using dataframe mydata, mapping sepal Length to x,
# sepal width to y, and grouping the data by species
p <- ggplot(data = mydata, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) + 
# add data points
geom_point() +
# add quadratic regression with orthogonal polynomials and 95% pointwise
# confidence intervals
geom_smooth(method ="lm", formula = y ~ poly(x,2)) +
# add 95% simultaneous confidence bands
geom_ribbon(data = mycc, aes(x = Sepal.Length, color = NULL, fill = Species, ymin = LowerBound, ymax = UpperBound),alpha = 0.5)
print(p)

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

অভ্যন্তরীণ ব্যান্ডগুলি হ'ল ডিফল্টরূপে এটি গণনা করা হয় geom_smooth: এগুলি প্যাশনওয়াইজ 95% আস্থা ব্যান্ডগুলির আশেপাশের কনফিডেন্স ব্যান্ড। বাহ্যিক, সেমিট্রান্সপারেন্ট ব্যান্ডগুলি (গ্রাফিক্স টিপের জন্য ধন্যবাদ, @ রোল্যান্ড) পরিবর্তে একযোগে 95% আত্মবিশ্বাস ব্যান্ড রয়েছে। যেমন আপনি দেখতে পাচ্ছেন, প্রত্যাশার মতো এগুলি পয়েন্টওয়াইড ব্যান্ডের চেয়ে বড়। দুটি বক্ররেখা থেকে একযোগে আত্মবিশ্বাস ব্যান্ডগুলি ওভারল্যাপ হয় না এই সত্যটি একটি ইঙ্গিত হিসাবে নেওয়া যেতে পারে যে দুটি মডেলের মধ্যে পার্থক্যটি পরিসংখ্যানগতভাবে তাৎপর্যপূর্ণ।

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

fit_deg1 <- lm(data = mydata, Sepal.Width ~ Species*poly(Sepal.Length,1))
fit_deg2 <- lm(data = mydata, Sepal.Width ~ Species*poly(Sepal.Length,2))
anova(fit_deg1, fit_deg2)
# Analysis of Variance Table

# Model 1: Sepal.Width ~ Species * poly(Sepal.Length, 1)
# Model 2: Sepal.Width ~ Species * poly(Sepal.Length, 2)
#  Res.Df    RSS Df Sum of Sq      F Pr(>F)
# 1     96 7.1895                           
# 2     94 7.1143  2  0.075221 0.4969   0.61

ডিগ্রি 1 মডেল এবং ডিগ্রি 2 মডেলের মধ্যে পার্থক্যটি উল্লেখযোগ্য নয়, সুতরাং আমরা প্রতিটি ডেটা সেটের জন্য দুটি লিনিয়ার রিগ্রেশনও ব্যবহার করতে পারি।


3
চক্রান্ত করার জন্য +1। পরিসংখ্যান বিশ্লেষণের একটি গুরুত্বপূর্ণ অংশ।
রোল্যান্ড

কেবল আপনার পদ্ধতিতে এটি নিশ্চিত করার জন্য: "দুটি বক্ররেখা থেকে আত্মবিশ্বাসের ব্যবধানগুলি ওভারল্যাপ হয় না তা দুটি মডেলের মধ্যে পার্থক্যটি পরিসংখ্যানগতভাবে তাত্পর্যপূর্ণ তা এই ইঙ্গিত হিসাবে নেওয়া যেতে পারে।" তবে আমি বলতে পারি না পার্থক্যটি তাৎপর্যপূর্ণ নয় যদি তারা ঠিক ওভারল্যাপ করে?
পাওলোএইচ

আরও নির্দিষ্ট হতে আমি পোস্টে একটি উদাহরণ যুক্ত করেছি।
পাওলোএইচ

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