ロジスティック回帰に関する質問


14

バイナリロジスティック回帰を実行して、10年間(1997年から2006年)にわたって独立変数のセットからの競合(従属変数)の有無をモデル化し、毎年107回の観測を行います。私の独立者は:

  • 土地の劣化(2種類の劣化のカテゴリ);
  • 人口増加(0- no; 1-yes);
  • 生計タイプ(0-タイプ1、1-タイプ2);
  • 人口密度(3レベルの密度);
  • NDVI連続(最大野菜生産性);
  • NDVI t 1(前年の野菜の減少-0-いいえ、1-はい)およびt1
  • およびNDVI t 2(過去2年からの野菜の減少-0-いいえ、1-はい)。t2

私は全く新しいです-これは私の講師が私に与えたプロジェクトです-だから私はいくつかのアドバイスやガイダンスに感謝するでしょう。私はすでにマルチコリニリティについてテストしました。

基本的に、私のデータは10年間(合計1070)をカバーする107の観測単位(空間領域)に分割され、観測単位ごとに、その単位内のその時点の独立変数の条件の「スナップショット」値になります(領域)。ロジスティック回帰(またはテーブル)を設定して、各年の107個の値を個別に認識して、異なる単位年間の一時的なNDVIの変化を評価できるようにする方法を知りたいですか?


2
どのソフトウェアを使用していますか?また、講師はロジスティック回帰を使用するように言っていましたか?これにはある種のマルチレベルモデルが必要と思われますが、ロジスティックを学習しているだけの場合は、講師の意図とは異なるかもしれません。
ピーターフロム-モニカの復職

1
時間的自己相関を制御するだけですか、それとも傾向をモデル化しますか(競合の可能性および/またはリスク要因効果の時間的変化に関して)?
マクロ

単なる時間的自己相関
スティーブン

データの性質は時空間的です。したがって、真に選択されたモデルでは、この性質を考慮する必要があります。
hbaghishani

3
時間的自己相関のみを制御する場合は、GEE(一般化推定方程式)を使用して、堅牢な標準誤差で推論を行うことができます。
マクロ

回答:


6

これは実際には非常に高度な問題であり、講師からの厳しい質問です!

データの整理方法に関しては、1070 x 10の長方形で十分です。たとえば、Rの場合:

> conflict.data <- data.frame(
+ confl = sample(0:1, 1070, replace=T),
+ country = factor(rep(1:107,10)),
+ period = factor(rep(1:10, rep(107,10))),
+ landdeg = sample(c("Type1", "Type2"), 1070, replace=T),
+ popincrease = sample(0:1, 1070, replace=T),
+ liveli =sample(0:1, 1070, replace=T),
+ popden = sample(c("Low", "Med", "High"), 1070, replace=T),
+ NDVI = rnorm(1070,100,10),
+ NDVIdecl1 = sample(0:1, 1070, replace=T),
+ NDVIdecl2 = sample(0:1, 1070, replace=T))
> head(conflict.data)
  confl country period landdeg popincrease liveli popden     NDVI NDVIdecl1 NDVIdecl2
1     1       1      1   Type1           1      0    Low 113.4744         0         1
2     1       2      1   Type2           1      1   High 103.2979         0         0
3     0       3      1   Type2           1      1    Med 109.1200         1         1
4     1       4      1   Type2           0      1    Low 112.1574         1         0
5     0       5      1   Type1           0      0   High 109.9875         0         1
6     1       6      1   Type1           1      0    Low 109.2785         0         0
> summary(conflict.data)
     confl           country         period     landdeg     popincrease         liveli        popden         NDVI          NDVIdecl1        NDVIdecl2     
 Min.   :0.0000   1      :  10   1      :107   Type1:535   Min.   :0.0000   Min.   :0.0000   High:361   Min.   : 68.71   Min.   :0.0000   Min.   :0.0000  
 1st Qu.:0.0000   2      :  10   2      :107   Type2:535   1st Qu.:0.0000   1st Qu.:0.0000   Low :340   1st Qu.: 93.25   1st Qu.:0.0000   1st Qu.:0.0000  
 Median :1.0000   3      :  10   3      :107               Median :1.0000   Median :1.0000   Med :369   Median : 99.65   Median :1.0000   Median :0.0000  
 Mean   :0.5009   4      :  10   4      :107               Mean   :0.5028   Mean   :0.5056              Mean   : 99.84   Mean   :0.5121   Mean   :0.4888  
 3rd Qu.:1.0000   5      :  10   5      :107               3rd Qu.:1.0000   3rd Qu.:1.0000              3rd Qu.:106.99   3rd Qu.:1.0000   3rd Qu.:1.0000  
 Max.   :1.0000   6      :  10   6      :107               Max.   :1.0000   Max.   :1.0000              Max.   :130.13   Max.   :1.0000   Max.   :1.0000  
                  (Other):1010   (Other):428                                                                                                              
> dim(conflict.data)
[1] 1070   10

モデルをフィッティングするには、@ gui11aumeが示唆するglm()関数が基本を実行します...

mod <- glm(confl~., family="binomial", data=conflict.data)
anova(mod)

...しかし、これには「国」(107ユニットとして国があると仮定しています)を固定効果として扱うという問題がありますが、ランダム効果がより適切です。また、期間を単純な要素として扱い、自己相関は許可しません。

たとえば、R のBates et alのlme4パッケージように、一般化線形混合効果モデルを使用して最初の問題に対処できます。これについては、いくつかの側面を紹介します。何かのようなもの

library(lme4)
mod2 <- lmer(confl ~ landdeg + popincrease + liveli + popden + 
    NDVI + NDVIdecl1 + NDVIdecl2 + (1|country) +(1|period), family=binomial,
    data=conflict.data)
summary(mod2)

一歩前進するでしょう。

最後に残っている問題は、10期間にわたる自己相関です。基本的に、各国の10個のデータポイントは、ランダムに選択された10個の独立した同一の分散ポイントであるほど価値はありません。非正規応答のマルチレベルモデルの残差における自己相関に対する広く利用可能なソフトウェアソリューションを知りません。確かにlme4には実装されていません。他の人は私よりも知っているかもしれません。


この(未回答)質問にも関連している- stats.stackexchange.com/questions/20613/...
ピーター・エリス

1

このチュートリアルは包括的です。

Rでは、データ、たとえばdataaの変数を準備する必要がありますdata.frame。その最初の列は0-1変数(競合)で、他の列は予測変数です。カテゴリ変数の場合、それらがtypeであることを確認する必要がありfactorます。たとえば、列3にこのプロパティがあることを確認するには、で強制できますdata[,3] <- as.factor(data[,3])

それはそれだけの問題です

glm(data, family="binomial")

これは、暗黙的に追加モデルがあることを前提とし、推定値を提供します。個々のパラメーターをテストして、より包括的な出力を取得するには、次のようにします。

summary(glm(data, family="binomial"))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.