4

バックグラウンド

1900 年から 2009 年までのカナダ全土の気候データ (気温、降水量、積雪量) があります。基本的な Web サイトを作成しましたが、最も単純なページでは、ユーザーがカテゴリと都市を選択できます。その後、非常に単純なレポートが返されます (パラメーターと計算のセクションはありません)。

Web アプリケーションの主な目的は、一般の人々が意味のある方法でデータを探索できるように、単純なユーザー インターフェイスを提供することです。(数字のリストは一般の人々にとって意味がありません。また、あまりにも多くの入力を提供する Web サイトでもありません。) アプリケーションの第 2 の目的は、気候学者や他の科学者にデータを表示するためのより深い方法を提供することです。(もちろん、入力が多すぎます。)

ツールセット

データベースは、R (ほとんど) がインストールされた PostgreSQL です。レポートは iReport を使用して作成され、JasperReports を使用して生成されます。

不適切なモデルの選択

現在、毎日のデータの年間平均に対して線形回帰モデルが適用されています。線形回帰モデルは、次のように PostgreSQL 関数内で計算されます。

SELECT 
  regr_slope( amount, year_taken ),
  regr_intercept( amount, year_taken ),
  corr( amount, year_taken )
FROM
  temp_regression
INTO STRICT slope, intercept, correlation;

結果は、以下を使用して JasperReports に返されます。

SELECT
  year_taken,
  amount,
  year_taken * slope + intercept,
  slope,
  intercept,
  correlation,
  total_measurements
INTO result;

JasperReports は、次のパラメータ化された分析関数を使用して PostgreSQL を呼び出します。

SELECT
  year_taken,
  amount,
  measurements,
  regression_line,
  slope,
  intercept,
  correlation,
  total_measurements,
  execute_time
FROM
  climate.analysis(
    $P{CityId},
    $P{Elevation1},
    $P{Elevation2},
    $P{Radius},
    $P{CategoryId},
    $P{Year1},
    $P{Year2}
  )
ORDER BY year_taken

これは最適な解決策ではありません。気候がゆっくりではあるが着実な速度で変化しているという誤った印象を与えるからです。

質問

PostgreSQL のregr_slope.

  • 適用するより良い回帰モデルは何ですか?
  • そのようなモデルを提供する CPAN-R パッケージは? (理想的には、を使用してインストール可能apt-getです。)
  • PostgreSQL 関数内で R 関数を呼び出すにはどうすればよいですか?

そのような関数が存在しない場合:

  • 目的のフィットを生成する関数のどのパラメーターを取得しようとする必要がありますか?
  • 最適な曲線をどのように表示することをお勧めしますか?

これは一般大衆が使用するための Web アプリであることに注意してください。データを分析する唯一の方法が R シェルからのものである場合、目的は達成されていません。(これは、これまで見てきたほとんどの R 関数には当てはまらないことを知っています。)

ありがとうございました!

4

3 に答える 3

3

自己回帰はあなたが望むものではないと思います。は不連続なデータを意味するため、非線形も必要なものではありません。連続したデータがありますが、直線ではない可能性があります。視覚化するだけで、特に形状がどうあるべきかわからない場合は、黄土が必要です。

ggplot2 でデータをプロットするだけで、線の周りに信頼区間バンドを簡単に取得できます。

qplot(x, y, data = df, geom = 'point') + stat_smooth()

それは素晴らしいプロットになります。

ストレートRでより単純なグラフが必要な場合。

plot(x, y)
lines(loess.smooth(x,y))
于 2010-05-28T07:45:02.047 に答える
3

すばらしいpl/rパッケージを使用すると、R を PostgreSQL 内で手続き型言語として実行できます。R は、RDBMS が行うこととは異なり、ベクトルの観点からデータを考えるのが好きであるため、いくつかの落とし穴があります。PostgreSQL 内で R を使用できるため、アーキテクチャのラウンドトリップを節約できるため、依然として非常に便利なパッケージです。

また、pl/rapt-getしばらく Debian / Ubuntu の一部であったため、利用できます。から始めapt-cache show postgresql-8.4-plrます(これはテスト中です。他のバージョン/フレーバーにもあります)。

適切なモデリングに関しては、それはまったく別の球技です。loessは、パラメトリックでないものに対する公正な提案であり、ARMA/ARIMA または遅延回帰のいずれかの動的モデルも必要になるでしょう。トピックがいかに政治化されているかを考えると、モデルの選択は非常に重要です。

于 2010-05-28T11:41:12.393 に答える
1

別の解決策を提案してもよろしいですか? PostgreSQL を使用してデータを取得し、R スクリプトにフィードして、最終的に結果を表示するだけです。R スクリプトは、ユーザーが処理する必要がない限り、好きなだけ複雑にすることができます。

Web ページで R スクリプトを実行できるようにする Apache モジュールであるrapacheを確認することをお勧めします。その使用法を説明するいくつかのビデオ:

特に、San Francisco Estuary Institue Web Query Toolを使用して、ユーザーがパラメーターを操作できるようにする方法を確認してください。

回帰に関しては、私は専門家ではないので、非常にばかげたことを言っているかもしれませんが、LOESS回帰のようなものでいいのではないでしょうか?

于 2010-05-28T05:43:06.883 に答える