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