アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のようなデータがあるとします
0 20 40 60 80 100 80 60 40 20 0
この11のデータを21に増やします。
0 10 20 30 40 50 60 70 80 90 100 90 80 70 60 50 40 30 20 10 0
こうなると思います(現状、手作業です)

これを 比例配分的な考えと For-Next で VBA化 したいと思っていますが、いい考えが浮かびません。

というのが、データ数は この間の 15 (可能なら 13,17とかも)さらに 25,31 なども作りたいのです。
こういったことで、お知恵拝借。

舞台裏は、上記のデータ並びは A型(山型?)ですが、それ以外にも、逆のV,とか U とか W,M、ストレートの上り、など パターンが 15ほどあります。(それが データ数でさらに増える)

それを 生データとの 相関係数をとり パターン分析をやりたい・・・・。
(エクセルの相関係数はデータ数が一致しないとNG)

よって、vbaではないが、そういう考え方は、このサイトあるよ・・・でも助かるのですが

A 回答 (3件)

×出力行(下ではB1セル)にデータを出力します。


〇出力行(下ではA2セル)にデータを出力します。
    • good
    • 0

二つの要素の中間の値を追加していけば良いのですよね?


For-Nextではありませんが、以下でどうでしょう?
ソース行、開始列(下ではA1セル)から右方向に並ぶデータに対して
出力行(下ではB1セル)にデータを出力します。

中間の値の計算は、Int((prevVal + curVal) / 2) で行っているので
必要に応じて適宜修正してください。


Const SRC_ROW As Long = 1 'ソース行
Const DST_ROW As Long = 2 '出力行
Const START_COL As Long = 1 '開始列

Sub test()
  Dim sCol As Long
  Dim dCol As Long
  Dim prevVal As Long
  Dim curVal As Long
  
  sCol = START_COL
  dCol = START_COL
  prevVal = -999
  
  Do While Cells(SRC_ROW, sCol).Value <> ""
    curVal = Cells(SRC_ROW, sCol).Value
    If sCol > START_COL Then
      Cells(DST_ROW, dCol).Value = Int((prevVal + curVal) / 2)
      dCol = dCol + 1
    End If
    Cells(DST_ROW, dCol).Value = curVal
    prevVal = curVal
    sCol = sCol + 1
    dCol = dCol + 1
  Loop
End Sub
    • good
    • 0
この回答へのお礼

帰社して、トライさせて頂きます。
取り急ぎ、御礼。

お礼日時:2019/01/11 07:48

こんにちは



回答ではありませんが・・・

>比例配分的な考えと For-Next で VBA化 したい
>生データとの 相関係数をとり パターン分析をやりたい・
内容がよくわかりませんが、「比例配分」という発想の時点ですでに恣意が働いているので、「分析」には適さないというか、矛盾しているように感じます。

「ある分布データ」に属する(仮の)データ群を作成したい、ということであるなら「真のデータ」を分析・回帰した結果からランダムに発生させるなどはあるかも知れませんが。
    • good
    • 0
この回答へのお礼

ありがとうございます。でも、当方の考えと真逆かと・・・

私の作ったデータは、教科書のデータ・・・・
でも、生データはこんなきれいな形ではなくギクシャク・・・
平滑化しても(平滑期間長くとれば、きれいな形になっても生からの乖離も発生)同じようか??

で、どのパターンが一番近いか? 相関係数の大が 一番近い・・・
が、発想の原点

お礼日時:2019/01/10 10:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!