Open hrk0531 opened 1 month ago
@hrk0531 ファイルのリンクを貼ろう。ラインも指定できるし。
@yanagikad すみません。貼りました。 rotator.py
@hrk0531 https://github.com/hrk0531/sappy/blob/3aea5f332767537a596a55ef21ec7b566b074471/sappy/dimension/rotator.py#L81 こういうラインを指定したリンクが貼れるから、こんな感じで貼ろう! こっちのほうが問題箇所がわかりやすいので!
質問1、自分の考えでは担保されると思う
そう思った理由がほしいかな
それはさておき、これは合ってる気がするな、s
に対応するのは$u_p(i)$の行であり、
$f$とは何ら関係のない変数なので、この形で合ってる気がする。
数式とコードの対応関係が取りにくいので変数名をもう少しわかりやすくしてもらうと助かるかも
s
-> u_p_row_index
的な。
質問2
p
はnumpyのmethod shape
の戻り値だからnp.int64
の可能性があるかもね。
function range(hoge)
の引数の型がint
のみにしか適応してない場合(というか確かそう)エラーが出るはず。
ここはnpを使ってる作業なので関数もnumpyで統一してfunction np.arrange()
を使うといいかも
ちなみにrange(i)
が通ってるのは
https://github.com/hrk0531/sappy/blob/3aea5f332767537a596a55ef21ec7b566b074471/sappy/dimension/rotator.py#L74
でi: int
になってるからだと思う。
3個目の質問 https://github.com/hrk0531/sappy/blob/b5a57d71599a05c40a9ab4fa3117190520a08ba0/sappy/dimension/rotator.py#L52-L59 ここかな?
~とかに改変すれば良いのかな。
この部分については何を目指して収束させているかによるので、判断できないのと、 何を目指して、と、何を根拠に
この関数って必要なくて、
となっているかが知りたい。
そこの理由の部分が聞きたいなら、
orthogonal_converge
がどう使われてるかorthogonal_converge
の役割はそもそも何なのか
を説明してほしい。参考にしたものや、ドキュメントがあるなら参考資料として添付して、 該当箇所について、どういう意図でどうコードに落とし込んだか説明してほしい。
質問1について、2次元行列に対して3個目の引数は無理なのは自明として、なぜそこに変数sを入れたかったのか知りたい。
@yanagikad
int型だった。iはiterationの回数だから
self.max_iter使うことにする。`pに関するエラーは未だ未解決。break
してiterationを止めているが、別の収束基準があればそれを使えばよくて、特異値で判断する必要がないのでは?と思った。orthogonal convergence
の役割はドキュメントにorthogonal rotationの収束基準があったからとりあえず実装してみた。もちろんvarimax回転に適合するように。また、自分が所持している統計検定1級の本も参考にした。もう一つ参考としたドキュメントはWikiにある最初のやつ。そこで上記の疑問にぶち当たった。@hrk0531
ここ、j
が引き算されてるんだけど、ここが負になってる可能性ない?
indexの確認をprintデバッグしてみるといいかも
前後の特異値の比を評価してbreakしてiterationを止めているが、別の収束基準があればそれを使えばよくて、特異値で判断する必要がないのでは?と思った。
まぁそれはそうかな。別の収束基準に妥当性があるなら買えていいと思う
@yanagikad
j
のでばっく、今日は元気ないから後日やってみる
@yanagikad @y1wtt
feature/designブランチにて
u[t, s] = x[t, j-1, s]**2 - x[t, j-2, s]**2
について、too many indices for array: array is 2-dimensional, but 3 were indexed
とエラーが出るので、`u[t, s] = x[t, j-1]**2 - x[t, j-2]**2
として解決した。ここで、以下の式は担保されるか(質問1、自分の考えでは担保されると思う)しかし、
only integer scalar arrays can be converted to a scalar index
と新たにエラーがfor var in range(p):
の部分で出る。p
入力データxの行数だから整数のはずなのになぜこのエラーが出るのかわからない(質問2)同じファイル内で直行回転の収束基準を戻り値とする関数orthogonal_convergeを定めている。収束基準は
である。この収束基準を、同じファイル内で定義しているvarimax関数内で使用したいと思うのだが、この関数って必要なくて、varimax関数の特異値分解している部分を
とかに改変すれば良いのかな。