আমি বুঝতে চাই যে কীভাবে লজিস্টিক রিগ্রেশন অনুমানের জন্য পূর্বাভাস অন্তর তৈরি করা যায় ।
আমাকে কোলেটের মডেলিং বাইনারি ডেটা , ২ য় এড p.98-99 এ পদ্ধতি অনুসরণ করার পরামর্শ দেওয়া হয়েছিল । এই পদ্ধতিটি বাস্তবায়িত করার পরে এবং এটির আর এর সাথে তুলনা করার পরে predict.glm
, আমি আসলে মনে করি এই বইটি ভবিষ্যদ্বাণী অন্তরগুলি নয়, আত্মবিশ্বাসের ব্যবস্থাগুলি গণনা করার পদ্ধতি প্রদর্শন করছে showing
তুলনার সাথে কোলেট থেকে প্রক্রিয়াটির বাস্তবায়ন predict.glm
নীচে দেখানো হয়েছে।
আমি জানতে চাই: আমি কীভাবে এখান থেকে আত্মবিশ্বাসের ব্যবধানের পরিবর্তে পূর্বাভাস ব্যবধান তৈরি করতে যাব?
#Derived from Collett 'Modelling Binary Data' 2nd Edition p.98-99
#Need reproducible "random" numbers.
seed <- 67
num.students <- 1000
which.student <- 1
#Generate data frame with made-up data from students:
set.seed(seed) #reset seed
v1 <- rbinom(num.students,1,0.7)
v2 <- rnorm(length(v1),0.7,0.3)
v3 <- rpois(length(v1),1)
#Create df representing students
students <- data.frame(
intercept = rep(1,length(v1)),
outcome = v1,
score1 = v2,
score2 = v3
)
print(head(students))
predict.and.append <- function(input){
#Create a vanilla logistic model as a function of score1 and score2
data.model <- glm(outcome ~ score1 + score2, data=input, family=binomial)
#Calculate predictions and SE.fit with the R package's internal method
# These are in logits.
predictions <- as.data.frame(predict(data.model, se.fit=TRUE, type='link'))
predictions$actual <- input$outcome
predictions$lower <- plogis(predictions$fit - 1.96 * predictions$se.fit)
predictions$prediction <- plogis(predictions$fit)
predictions$upper <- plogis(predictions$fit + 1.96 * predictions$se.fit)
return (list(data.model, predictions))
}
output <- predict.and.append(students)
data.model <- output[[1]]
#summary(data.model)
#Export vcov matrix
model.vcov <- vcov(data.model)
# Now our goal is to reproduce 'predictions' and the se.fit manually using the vcov matrix
this.student.predictors <- as.matrix(students[which.student,c(1,3,4)])
#Prediction:
this.student.prediction <- sum(this.student.predictors * coef(data.model))
square.student <- t(this.student.predictors) %*% this.student.predictors
se.student <- sqrt(sum(model.vcov * square.student))
manual.prediction <- data.frame(lower = plogis(this.student.prediction - 1.96*se.student),
prediction = plogis(this.student.prediction),
upper = plogis(this.student.prediction + 1.96*se.student))
print("Data preview:")
print(head(students))
print(paste("Point estimate of the outcome probability for student", which.student,"(2.5%, point prediction, 97.5%) by Collett's procedure:"))
manual.prediction
print(paste("Point estimate of the outcome probability for student", which.student,"(2.5%, point prediction, 97.5%) by R's predict.glm:"))
print(output[[2]][which.student,c('lower','prediction','upper')])
একটি মৌলিক প্রশ্ন, কেন স্কয়ার্ট (যোগফল (মডেল.ভেকভ * স্কোয়ার.স্টুডেন্ট)) স্ট্যান্ডার্ড ত্রুটি হিসাবে ধরে নেওয়া হয়? এটি কি আদর্শ বিচ্যুতি নয় এবং স্কয়ারটি (এন) দ্বারা বিভাজন করা দরকার? যদি তাই হয় তবে কোন এন ব্যবহার করা উচিত, এন পূর্বাভাসের জন্য ব্যবহৃত নতুন ডেটা ফ্রেমের মডেল বা এন ফিট করতে পারে?
—
রাফায়েল