2017-03-11 9 views
0

私はQGISに精通していますが、ここでRと苦労しています。ニューヨーク市のPUMAシェイプファイルのセントロイドポイントに基づいたいくつかのデータを使って、地理的に重み付けされた基本的な回帰を行いますポイント、各PUMAに1つ、基本的には大きな国勢調査に似ています)。基本的な地理的重み付き回帰

これは、CSVでの私のデータである。 https://www.sendspace.com/file/pj48b5

はまた、必要に応じて(おそらくない)、ここでのシェープファイルデータは次のとおりです。 https://www.sendspace.com/file/wbqrpb

あなたが見ることができるように、テーブルには、次の形式であります:

lat   lng   variable_a 2015_median 9_yr_change 9_yr_change_new pc_change 
40.8912378 -73.9101365 6   1200  380   480    31.6666666667 
40.8901905 -73.8614272 8   1100  280   200    25.4545454545 
40.8502191 -73.8050669 11   1100  300   530    27.2727272727 
40.8561725 -73.8525618 2   1100  320   205    29.0909090909 

私はそうように、2つの変数の基本的な回帰を行う場合は、次の

fit <- lm(variable_a ~ X9_yr_change_new, data=s_data) 
summary(fit) 

それから私は、Rは、同じ2つの変数をテストすることですが、ありますかどうかを確認するために緯度とLNGの変数(重心の座標)を使用して、私は次何をしたいのか0.42

の平方取得これらのポイントの地理的近接度を考慮に入れると、より強固な関係になります。

誰も私にQGISまたはRのいずれかでこれを行う最も簡単な方法を教えてもらえますか?

答えて

2

重み付き回帰では、最初に場所に基づいて重みを見つける必要があります。 lat/lngのすべてのグループに対してvariable_aという応答を平均し、各グループの応答の数を数えることによって行うことができます。このnumberは、平均応答の重みがave_var_aになります。その後、weights = numberlm関数に渡して重み付き回帰を実行します。

データにはロケーションごとに1つの応答しかないため、重み付けされていない回帰と重み付けされた回帰の両方の適合結果は同じです。それは機能を使用して見ることができます。

私は下の重み付けされていない回帰と重み付けされた回帰の両方を表示しています。加重データの設定

df1 <- read.table(file = 's_data.csv', header = TRUE, sep = ',', stringsAsFactors = FALSE) 
head(df1) 
#  lat  lng variable_a X2015_median X9_yr_change X9_yr_change_new pc_change 
# 1 40.89124 -73.91014   6   1200   380    480 31.66667 
# 2 40.89019 -73.86143   8   1100   280    200 25.45455 
# 3 40.85022 -73.80507   11   1100   300    530 27.27273 
# 4 40.85617 -73.85256   2   1100   320    205 29.09091 
# 5 40.84518 -73.88736   21   850   260    250 30.58824 
# 6 40.86465 -73.90325   2   1000   230    300 23.00000 

library(data.table) 
setDT(df1) 

df1[, 
    j = `:=` (number = .N, # total number of responses per location 
       ave_var_a = mean(variable_a)), # average response per location 
    by = c('lat', 'lng')] 

head(df1) 
#   lat  lng variable_a X2015_median X9_yr_change X9_yr_change_new pc_change number ave_var_a 
# 1: 40.89124 -73.91014   6   1200   380    480 31.66667  1   6 
# 2: 40.89019 -73.86143   8   1100   280    200 25.45455  1   8 
# 3: 40.85022 -73.80507   11   1100   300    530 27.27273  1  11 
# 4: 40.85617 -73.85256   2   1100   320    205 29.09091  1   2 
# 5: 40.84518 -73.88736   21   850   260    250 30.58824  1  21 
# 6: 40.86465 -73.90325   2   1000   230    300 23.00000  1   2 

lm非加重および加重回帰実行します。

# unweighted regression 
fit <- lm(variable_a ~ X9_yr_change_new, data= df1) 
summary.aov(fit) 
#     Df Sum Sq Mean Sq F value Pr(>F)  
# X9_yr_change_new 1 6537830 6537830 39.23 6.89e-08 *** 
# Residuals  53 8833855 166677      
# --- 
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

# weighted regression 
weighted_fit <- lm(ave_var_a ~ X9_yr_change_new, data= df1, weights = number) 
summary.aov(weighted_fit) 
#     Df Sum Sq Mean Sq F value Pr(>F)  
# X9_yr_change_new 1 6537830 6537830 39.23 6.89e-08 *** 
# Residuals  53 8833855 166677      
# --- 
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
+0

をうーん...あなたは、加重回帰のために働くかもしれない答えを提供してきましたが、地理的に重み付けされた回帰のためではないので、緯度/経度の間の距離を測定することは考慮されていない。また、2つの回帰からわかるように、それぞれの場所で平均値を数えても何もしないので、同じ応答が返されます。variable_aのデータは、各(ユニークな)場所ごとに既に数えられています。だからこの答えが他のことをするのに役立つかもしれないが、それは私の場合は全く助けにならない。それにもかかわらず、あなたの努力のおかげで申し訳ありませんが、私はそれを正しくマークすることはできません。 –

+0

問題ありません。あなたが正しいものを見つけることを願って – Sathish

+0

私はarcGISで基本的なGWRを行うためのツールを見つけました...私は早くRでそれを行う方法を知っていましたが、これは今では十分でした! –

関連する問題