科学の箱

科学・IT・登山の話題

R

大気汚染データの観測

投稿日:

コーセラのDeveloping Data Productで知りたい場所の緯度経度を入力すると過去の観測データからオゾン濃度とPM25汚染濃度を予測するコードを紹介していた。Video Lectureのみだったので、コーディングしてコメントを追加しておく。

サイトのURLはこちら https://class.coursera.org/devdataprod-002/

setwd("C:/r/yhat")

## 大気汚染のデータをRに取り込む。
d <- read.csv("annual_all_2013.csv")
str(d)

## PM2.5およびオゾンデータのみとりこむ。さらに必要な変数のみにする。
sub <- subset(d, (Parameter.Name %in% c("PM2.5 - Local Conditions", "Ozone") 
  & Pollutant.Standard %in% c("Ozone 8-Hour 2008", "PM25 Annual 2006")),
  c(Longitude, Latitude, Parameter.Name, Arithmetic.Mean))
head(sub)

## 時系列で重複しているので地点で集計する。
pollavg <- aggregate(sub[,"Arithmetic.Mean"], 
  sub[,c("Longitude", "Latitude", "Parameter.Name")],
  mean, na.rm = TRUE)
names(pollavg)[4] <- "level"
pollavg <- transform(pollavg, Parameter.Name = factor(Parameter.Name))
pollavg

rm(d, sub)

## 監視地点の行列を作成する。
monitors <- data.matrix(pollavg[,c("Longitude", "Latitude")])
monitors

library(fields)

## input parameter : data frame
##    lon: longitude
##    lat: latitude
##    radius: Radius in miles for findng monitors.

pollutant <- function(df){
  x <- data.matrix(df[, c("lon", "lat")])
  r <- df$radius

  ## パラメータで引き渡された地点と監視地点の距離を計算する
  d <- rdist.earth(monitors, x) 
   # dはx地点からのmonitors地点への距離が含まれる。
   # dはリストで戻される、行数=観察対象の地点数、列数=モニタしている地点数

  ## モニタしている地点すべてについて 距離 < rとなる地点を探す
  use <- lapply(seq_len(ncol(d)), function(i) {
      which (d[,i] < r[i])
  })

  ## オゾンとPM25について集計する
  levels <- sapply(use, function(idx){
       with(pollavg[idx,], tapply(level,Parameter.Name, mean))
  })
  dlevels <- as.data.frame(t(levels))
  data.frame(df, dlevels)
}

## テスト
pollutant(data.frame(lon = -76.61, lat=39.2, radius=40))

メタ情報

inarticle



メタ情報

inarticle



-R
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

diag

3×3の対角行列を生成する > diag(3) [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 3×3の対角行列を生成し、対角 …

no image

Rで型が不明なときの対処方法

データセットならstrを使う > str(iris) ‘data.frame’:   150 obs. of  5 variables:  $ Sepal.Length: num  5.1 4. …

no image

ジニ係数

計量経済学の本を読んでいたら、ジニ係数の利用について記述されていたのでRで実データを使って計算してみる。 経済学の勉強でジニ係数というのは知っていたが、その利用方法としては所得の分配がどの程度平等であ …

no image

一対比較法

一対比較法では複数の対象の順位を、個別の比較結果から明らかにすることができる。例えば今5種類の携帯電話があり、好ましさの順位を知りたいとする。一対比較法を利用しなければ、回答者は5について順番をつけて …

no image

因子分析

因子分析とは 因子分析では複雑な現象を単純な要因で理解するための手法。集められた個別のデータは結果である目的変数とその目的変数の原因である説明変数に分かれる。目的変数を観察できた結果とし、目的変数に影 …

2014年6月
« 5月   7月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

side bar top



アーカイブ

カテゴリー