স্টারগাজার টেবিলে সর্বাধিক সম্ভাবনার দ্বারা অনুমান সহগগুলি পান


84

স্টারগাজার এলএম (এবং অন্যান্য) অবজেক্টের জন্য খুব সুন্দর ল্যাটেক্স টেবিল তৈরি করে। মনে করুন আমি সর্বাধিক সম্ভাবনার দ্বারা একটি মডেল ফিট করেছি। আমি আমার অনুমানের জন্য স্টারগাজারকে একটি এলএম-জাতীয় টেবিল তৈরি করতে চাই। কিভাবে আমি এটি করতে পারব?

যদিও এটি কিছুটা হ্যাকি, তবে একটি উপায় হতে পারে আমার অনুমানযুক্ত একটি "নকল" এলএম বস্তু তৈরি করা - আমি মনে করি যে এটি সারাংশ (my.fake.lm.object) যতক্ষণ কাজ করবে ততক্ষণ কাজ করবে। এটি কি সহজেই সম্ভব?

একটি উদাহরণ:

library(stargazer)

N <- 200
df <- data.frame(x=runif(N, 0, 50))
df$y <- 10 + 2 * df$x + 4 * rt(N, 4)  # True params
plot(df$x, df$y)

model1 <- lm(y ~ x, data=df)
stargazer(model1, title="A Model")  # I'd like to produce a similar table for the model below

ll <- function(params) {
    ## Log likelihood for y ~ x + student's t errors
    params <- as.list(params)
    return(sum(dt((df$y - params$const - params$beta*df$x) / params$scale, df=params$degrees.freedom, log=TRUE) -
               log(params$scale)))
}

model2 <- optim(par=c(const=5, beta=1, scale=3, degrees.freedom=5), lower=c(-Inf, -Inf, 0.1, 0.1),
                fn=ll, method="L-BFGS-B", control=list(fnscale=-1), hessian=TRUE)
model2.coefs <- data.frame(coefficient=names(model2$par), value=as.numeric(model2$par),
                           se=as.numeric(sqrt(diag(solve(-model2$hessian)))))

stargazer(model2.coefs, title="Another Model", summary=FALSE)  # Works, but how can I mimic what stargazer does with lm objects?

আরও সুনির্দিষ্টভাবে বলতে গেলে: এলএম অবজেক্টের সাহায্যে স্টারগাজার সুন্দরভাবে টেবিলের শীর্ষে নির্ভরশীল ভেরিয়েবল প্রিন্ট করে, সংশ্লিষ্ট অনুমানের নীচে বন্ধনীতে এসএস অন্তর্ভুক্ত করে এবং টেবিটির নীচে আর ^ 2 এবং পর্যবেক্ষণের সংখ্যা রয়েছে has উপরের মতো সর্বাধিক সম্ভাবনা দ্বারা অনুমান করা "কাস্টম" মডেলটির সাথে একই আচরণ পাওয়ার কি কোনও (এন সহজ) উপায় আছে?

এলএম অবজেক্ট হিসাবে আমার সর্বোত্তম আউটপুটটি সাজানোর জন্য আমার দুর্বল প্রচেষ্টা এখানে রয়েছে:

model2.lm <- list()  # Mimic an lm object
class(model2.lm) <- c(class(model2.lm), "lm")
model2.lm$rank <- model1$rank  # Problematic?
model2.lm$coefficients <- model2$par
names(model2.lm$coefficients)[1:2] <- names(model1$coefficients)
model2.lm$fitted.values <- model2$par["const"] + model2$par["beta"]*df$x
model2.lm$residuals <- df$y - model2.lm$fitted.values
model2.lm$model <- df
model2.lm$terms <- model1$terms  # Problematic?
summary(model2.lm)  # Not working

6
আমি texregপ্যাকেজের সাথে একই ধরণের চেষ্টা করেছি । অলসতার কারণে, আমি আলাদা মডেলের সহগ এবং স্ট্যান্ডার্ড ত্রুটিগুলি ওভাররাইট করে শেষ করেছি, যা আমাকে পছন্দসই আউটপুট দিয়েছে। আপনার ক্ষেত্রে, আপনি যেমন সহগ এবং এর স্ট্যান্ডার্ড ত্রুটিগুলি ওভাররাইট করতে পারেন model1। যদিও এটি একটি পরিশীলিত সমাধান নয়, এটি কাজ করা উচিত। বলা বাহুল্য, এর থেকে আরও ভাল সমাধান আসে কিনা তা দেখার জন্য আমি আগ্রহী ...
coffeinjunky

4
আপনি স্টারগাজার ফাংশনটি একবারে দেখতে পারেন যা ভারী উত্তোলন করে stargazer:::.stargazer.wrap। এটি টেবিলগুলিকে ফর্ম্যাট করে এমন কোড ছাড়াও অন্যান্য ফাংশনগুলির একটি গুচ্ছ সহ একটি ধারক হিসাবে দেখায়। এবং দেখে মনে হচ্ছে এটি lm(এবং glm) এর জন্য বেশ কয়েকটি উপাদানকে মূল্যায়ন করে যা আপনার optim()ফলাফলগুলি সাজানো খুব কঠিন করে তুলবে ।
অ্যান্ডেবেগা

4
ইন texreg, এটি ফাংশনটি texregব্যবহার করে কোনও অবজেক্ট তৈরি করা যথেষ্ট createTexreg। আপনি মূলত কেবল সহগ, এস এস ইত্যাদি হস্তান্তর করেন দেখুন ?createTexregtexregবস্তুর তারপর মধ্যে প্রতিপালিত করা যেতে পারে texreg, htmlreg, screenreg, এবং plotregফাংশন। বিকল্পভাবে, জেএসএস নিবন্ধের section নং বিভাগে বর্ণিত হয়েছে যে আপনি যদি পরে একই টেমপ্লেটটি পুনর্ব্যক্ত করতে চান তবে নতুন মডেল প্রকারগুলির জন্য কীভাবে রচনাগুলি লিখতে এবং নিবন্ধভুক্ত করতে হয়।
ফিলিপ লিফল্ড

উত্তর:


2

আমি কেবল এই সমস্যাটি পেয়েছি এবং স্টারগাজারের মধ্যে coef seএবং omitফাংশনগুলির ব্যবহারের মাধ্যমে এটিকে পরাভূত করেছি ... যেমন

stargazer(regressions, ...
                     coef = list(... list of coefs...),
                     se = list(... list of standard errors...),
                     omit = c(sequence),
                     covariate.labels = c("new names"),
                     dep.var.labels.include = FALSE,
                     notes.append=FALSE), file="")

1

আপনাকে প্রথমে একটি ডামি lmঅবজেক্ট ইনস্ট্যান্ট করতে হবে, তারপরে এটি সাজাতে হবে:

#...
model2.lm = lm(y ~ ., data.frame(y=runif(5), beta=runif(5), scale=runif(5), degrees.freedom=runif(5)))
model2.lm$coefficients <- model2$par
model2.lm$fitted.values <- model2$par["const"] + model2$par["beta"]*df$x
model2.lm$residuals <- df$y - model2.lm$fitted.values
stargazer(model2.lm, se = list(model2.coefs$se), summary=FALSE, type='text')

# ===============================================
#                         Dependent variable:    
#                     ---------------------------
#                                  y             
# -----------------------------------------------
# const                        10.127***         
#                               (0.680)          
#                                                
# beta                         1.995***          
#                               (0.024)          
#                                                
# scale                        3.836***          
#                               (0.393)          
#                                                
# degrees.freedom              3.682***          
#                               (1.187)          
#                                                
# -----------------------------------------------
# Observations                    200            
# R2                             0.965           
# Adjusted R2                    0.858           
# Residual Std. Error       75.581 (df = 1)      
# F Statistic              9.076 (df = 3; 1)     
# ===============================================
# Note:               *p<0.1; **p<0.05; ***p<0.01

(এবং অবশ্যই অবশ্যই বাকি সংক্ষিপ্ত পরিসংখ্যানগুলি সঠিক কিনা তা নিশ্চিত করুন)


0

স্টারগাজারটি ব্যবহারে আপনি কতটা প্রতিশ্রুতিবদ্ধ তা আমি জানি না, তবে আপনি ঝাড়ু এবং xtable প্যাকেজগুলি ব্যবহার করে দেখতে পারেন, সমস্যাটি হ'ল এটি আপনাকে সর্বোত্তম মডেলের মানক ত্রুটিগুলি দেবে না

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