0

1000x2を使用しているデータ構造から配列平均と共分散行列を取得しようとしていますincanter

私のテストケースはそのように見えます

(ns test.mean-cov
  (:require clojure.string
            [incanter.core :as in-core]
            [incanter.stats :as in-stats])
  (:use clojure.java.io))

(def test-mat [[1 2] [2 2]])

(in-stats/mean test-mat)

私はLighTableで実行しています。

私が得るエラーはこれです:

java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to java.lang.Number
        Numbers.java:1104 clojure.lang.Numbers.double_array
           stats.clj:1492 incanter.stats/mean

私はこれを理解しているとは言えません。残念ながら、私のグーグルは役に立ちません。誰かが簡単な説明と解決策を提供できますか?

当然、それを行う1つのひどい方法は

(def c1 (first (transpose test-mat)))
(def c2 (second (transpose test-mat)))

(def data-cov-mat [[(in-stats/covariance c1 c1) (in-stats/covariance c1 c2)] [(in-stats/covariance c2 c1) (in-stats/covariance c2 c2)]])

完全な開示:私はclojureが初めてです。

ありがとう

4

1 に答える 1

2

行列共分散の場合、次を使用する必要があります。

(in-stats/covariance (in-core/matrix test-mat))

行列平均ベクトルの場合:

(mapv in-stats/mean (in-core/trans test-mat))
于 2015-07-24T14:03:40.213 に答える