আমি optim
একটি সাধারণ লিনিয়ার রিগ্রেশন glm
বা এমনকি nls
ফাংশন লাগানো থেকে ফলাফলগুলি পুনরুত্পাদন করার চেষ্টা করি ।
প্যারামিটারের অনুমানগুলি একই তবে অবশিষ্ট পরামিতিগুলির স্ট্যান্ডার্ড ত্রুটিগুলি বিশেষত যখন নমুনার আকার কম থাকে তখন একই হয় না। আমি অনুমান করি যে সর্বোচ্চ সম্ভাবনা এবং ন্যূনতম বর্গাকার পদ্ধতির (n দ্বারা বা এন-কে + 1 দ্বারা বিভাজনে উদাহরণটিতে নমুনা দেখুন) মধ্যে যেভাবে রেসিডুয়াল স্ট্যান্ডার্ড ত্রুটি গণনা করা হয় তাতে পার্থক্য রয়েছে is
আমি ওয়েবে আমার পড়া থেকে বুঝতে পারি যে অপ্টিমাইজেশন কোনও সহজ কাজ নয় তবে আমি ভাবছিলাম যে glm
ব্যবহারের সময় থেকে স্ট্যান্ডার্ড ত্রুটির প্রাক্কলনটি সহজ উপায়ে করা সম্ভব হবে কিনা optim
।
একটি ছোট ডেটাसेट সিমুলেট করুন
set.seed(1)
n = 4 # very small sample size !
b0 <- 5
b1 <- 2
sigma <- 5
x <- runif(n, 1, 100)
y = b0 + b1*x + rnorm(n, 0, sigma)
আশাবাদী সঙ্গে অনুমান
negLL <- function(beta, y, x) {
b0 <- beta[1]
b1 <- beta[2]
sigma <- beta[3]
yhat <- b0 + b1*x
likelihood <- dnorm(y, yhat, sigma)
return(-sum(log(likelihood)))
}
res <- optim(starting.values, negLL, y = y, x = x, hessian=TRUE)
estimates <- res$par # Parameters estimates
se <- sqrt(diag(solve(res$hessian))) # Standard errors of the estimates
cbind(estimates,se)
> cbind(estimates,se)
estimates se
b0 9.016513 5.70999880
b1 1.931119 0.09731153
sigma 4.717216 1.66753138
গ্ল্যাম এবং এনএলএসের সাথে তুলনা করুন
> m <- glm(y ~ x)
> summary(m)$coefficients
Estimate Std. Error t value Pr(>|t|)
(Intercept) 9.016113 8.0759837 1.116411 0.380380963
x 1.931130 0.1376334 14.030973 0.005041162
> sqrt(summary(m)$dispersion) # residuals standard error
[1] 6.671833
>
> summary(nls( y ~ b0 + b1*x, start=list(b0 = 5, b1= 2)))
Formula: y ~ b0 + b1 * x
Parameters:
Estimate Std. Error t value Pr(>|t|)
b0 9.0161 8.0760 1.116 0.38038
b1 1.9311 0.1376 14.031 0.00504 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.672 on 2 degrees of freedom
আমি এর মতো বিভিন্ন অবশিষ্ট অবধি স্ট্যান্ডার্ড ত্রুটি অনুমান পুনরুত্পাদন করতে পারি:
> # optim / Maximum Likelihood estimate
> sqrt(sum(resid(m)^2)/n)
[1] 4.717698
>
> # Least squares estimate (glm and nls estimates)
> k <- 3 # number of parameters
> sqrt(sum(resid(m)^2)/(n-k+1))
[1] 6.671833