私はRにはかなり新しく、かなり基本的なアプリケーションに使用されています。 今、私は助けが必要な問題が発生している:私はすでに(私の推定はthis例に似ている)私は注文したロジスティック回帰ためクラスタ標準誤差への道を探しています順序付けられたロジットのクラスタ標準エラー推定で削除されたR個のポーラー値
を
をrobcovとvcovCLを試してみましたが、彼らは私に似たエラーメッセージを与える:meatCLで
- エラー(X、CLクラスタ内の観測値の と一致しない
- u [、ii]のエラー< - ui:置き換えられるアイテムの数は次のとおりです。交換長の倍数ではありません
事前に感謝します!
編集: 欠落値に関する詳細をいくつか見つけましたが、それは問題のようです - this答えを使用して回避するか、NAなしのデータセットを使用しても問題は解決しません。下の例のように。問題は、polrが私に出力の一部として残差を与えていないということです。これを回避するにはどうしたらいいですか?
dat <- read.dta("https://stats.idre.ucla.edu/stat/data/ologit.dta")
length(dat$apply)
twenty <- seq(from=1, to=20, by=1)
dat$clustervar<-sample(twenty, size=400, replace=TRUE)
m <- polr(apply ~ pared + public + gpa, data = dat, Hess=TRUE)
vcovCL <- function(x, cluster.by, type="sss", dfcw=1){
# R-codes (www.r-project.org) for computing
# clustered-standard errors. Mahmood Arai, Jan 26, 2008.
# The arguments of the function are:
# fitted model, cluster1 and cluster2
# You need to install libraries `sandwich' and `lmtest'
# reweighting the var-cov matrix for the within model
require(sandwich)
cluster <- cluster.by
M <- length(unique(cluster))
N <- length(cluster)
stopifnot(N == length(x$residuals))
K <- x$rank
##only Stata small-sample correction supported right now
##see plm >= 1.5-4
stopifnot(type=="sss")
if(type=="sss"){
dfc <- (M/(M-1))*((N-1)/(N-K))
}
uj <- apply(estfun(x), 2, function(y) tapply(y, cluster, sum))
mycov <- dfc * sandwich(x, meat=crossprod(uj)/N) * dfcw
return(mycov)
}
vcovCL(dat, m, dat$clustervar)
これは私を与える:
Error: N == length(x$residuals) is not TRUE
Called from: vcovCL(dat, m, dat$clustervar)
であるRの「注文したロジスティック回帰」の多くの実装があります。あなたの質問を編集して、必要なライブラリを基本パッケージの上にロードし、データセットにアクセスしたコード(おそらくそれらのパッケージの1つの例の1つ)にアクセスし、分析を実行しようとするコードを含めるように要求されています。 –
(私は他の質問に答えて、それほどうまく提示されていない質問を閉じようとしました)。はい、欠落は、少なくともvcocCLの見積もりを悪化させます。回帰のための欠けているデータを取り出すことは、賢明なアプローチであるように思われる。 –
ご意見ありがとうございます。質問をより適切に説明しようとしました。また、私は他の質問に対する答えを見落としたと言います。私はそれが私が探していた答えではないと言っていたはずです。 – OuVaLeMonde