はじめに
YouTubeの動画は、どんな要素と再生パフォーマンスが関係しているのか。
これはYouTube内外でよく語られる、多くの人が気になるテーマだと思います。
このYouTube分析シリーズの記事はこちらです。今後の記事もここに追加していきます。
- 第1回: この記事
- 第2回: YouTube動画は「同じチャンネル内で当たる」のか?ロジスティック回帰で分析する
- 第3回: AIが勝手にロバスト標準誤差を入れてきたので、回帰分析コードを読んでみた
- 第4回: YouTube動画は「どのチャンネルか」でどこまで変わるのか?固定効果で回帰分析を見直す
- 第5回: 固定効果の次に、階層ベイズで「チャンネル差」をもう少し丁寧に見る
- 第6回: 広告クリエイティブを個人で集めようとして分かったこと
ただ、個人的には、感覚的な話だけでなく、データドリブンに分析してみたいという気持ちがありました。
最近は、データサイエンスの観点から、AI駆動でこうした分析に取り組むことが自分でもできるようになりつつあります。そこで今回は、YouTube Data APIで取得できる公開メタデータを使って、実際にデータを取り、初期的な状況把握と重回帰分析をやってみました。
先に結論を書くと、今回のデータでは、登録者数だけでも再生パフォーマンスを大きく説明できました。そこに投稿タイミングやジャンルを足すと、説明力はさらに改善しました。ただし、これはあくまで公開メタデータ上で見えた関連であり、「こうすべき」という実践指針として断定できるものではありません。
動画の内容、出演者、サムネイル、ファン層、投稿タイミング、チャンネルの歴史など、本当はいろいろな要因が絡みます。この記事では、そのうち公開メタデータから見える範囲に絞って、「どのあたりの変数が再生パフォーマンスと関連していそうか」を確認します。
私は統計を学びながら分析している立場なので、この記事は「YouTubeで伸びる方法が分かった」という話ではありません。AIにも手伝ってもらいながら、公開データを使って、データ取得から初期分析までの流れを確認した記録です。
なお、この記事で扱うのは観察データです。したがって、「この特徴があるから伸びた」という因果効果ではなく、「この特徴と再生パフォーマンスが同時にどう見えているか」を見るものとして読んでください。
今回やったこと
今回は、次の流れで進めました。
- 日本のYouTubeチャンネルをジャンル別に選ぶ
- YouTube Data APIで、直近6か月分の動画メタデータを取得する
- 度数分布と散布図で、データの概要を確認する
-
views_per_dayを目的変数にして、初歩的な回帰分析を行う - チャンネル規模やジャンルを入れたときに、結果の読み方がどう変わるかを見る
AIに分析や文章化を手伝ってもらっていますが、この記事の数値や図は、取得したCSV、集計結果、回帰分析の出力を見ながら確認しています。
今回の技術スタック
今回の分析では、主に以下を使いました。
- Python
- YouTube Data API
- pandas
- NumPy
- statsmodels
- Matplotlib
YouTube Data APIで公開メタデータを取得し、pandasで前処理と集計を行いました。重回帰分析には statsmodels を使い、グラフ作成には Matplotlib を使っています。
取得したデータ
今回は、以下の6ジャンルから日本のチャンネルを選びました。
- 総合エンタメ・企画
- 知識・教養・学び
- お金・経済・ビジネス
- 料理・食
- 健康・筋トレ・美容
- 旅行・暮らし・文化
各ジャンル10チャンネルを候補にし、直近6か月に公開された通常動画を取得しました。ただし、公開直後の初速に引っ張られすぎないように、公開から30日未満の動画は除外しています。また、60秒未満のShorts相当の動画も除外しました。
最終的なデータは次の通りです。
| 項目 | 内容 |
|---|---|
| 動画数 | 1,204本 |
| チャンネル数 | 58チャンネル |
| 公開日範囲 | 2025-12-21〜2026-05-22 |
| 最短尺 | 1.0分 |
| 尺の中央値 | 17.5分 |
| 最長尺 | 173.5分 |
| 再生数中央値 | 128,524回 |
| views/day中央値 | 2,123.5 |
| 登録者数中央値 | 1,730,000人 |
取得した主な項目は、公開日時、動画尺、再生数、いいね数、コメント数、チャンネル登録者数などです。
もともとは字幕や画質、タグ数も候補にしていましたが、今回は対象外にしました。まずは、公開メタデータから取れる範囲で、全体像をつかむことを優先しています。
データ取得には YouTube Data API を使っています。今回の取得量であればクォータにはかなり余裕があり、無料枠の範囲でも、少なくとも今回の50倍程度のデータ量は扱えそうだと見ています。
また、今回は教育・分析目的で、公開されているメタデータを扱っています。利用規約についても、確認した範囲ではこの用途で問題ないと判断しています。ただし、個別のチャンネル名を出して評価したり、特定チャンネルについて踏み込んで論じたりすることは、この記事ではしない方針にしています。
まずは度数分布を見る
最初に、ジャンル別の動画数を見ました。
ジャンル別の件数は、極端には偏っていません。最も多い「お金・経済・ビジネス」で249本、最も少ない「知識・教養・学び」で168本でした。
次に、動画尺の分布です。
10〜40分の動画が中心ですが、1〜3分の短尺動画も約20%あります。Shortsは除外しているので、ここでいう短尺は「通常動画としての短めの動画」です。
再生パフォーマンスを見るために、今回は views_per_day という指標を作りました。これは累積再生数を公開後日数で割ったものです。
1,000〜5,000 views/day が最も多く、全体の約40%でした。一方で、50,000 views/dayを超える動画も21本あります。かなり右に歪んだ分布です。
この時点で、回帰分析では再生数をそのまま使うより、対数変換した方が扱いやすそうだと分かります。
散布図で見る
動画尺と views_per_day の散布図です。縦軸は対数軸にしています。
短尺から長尺まで幅広く分布しています。ただ、この図だけを見る限り、動画尺と views_per_day に単純な直線関係があるようには見えません。
次に、登録者数と views_per_day です。こちらは両軸とも対数軸にしています。
登録者数が多いチャンネルほど views_per_day も高い傾向はありそうです。ただし、同じ登録者規模でもかなりばらつきがあります。
公開後日数と累積再生数も見ました。
当然ですが、公開からの日数が違うと累積再生数の意味も変わります。そのため、今回の主な目的変数は累積再生数そのものではなく views_per_day にしました。
回帰分析の設計
ここから、初歩的な回帰分析を行いました。
もちろん、重回帰分析がこのテーマに対して最適な方法だと思っているわけではありません。今回は、公開メタデータの関係を素朴に確認する第一歩として使っています。
目的変数は主に log1p(views_per_day) です。views_per_day はかなり右に歪んでいるので、対数変換して扱いました。
補足:対数変換とは
対数変換は、値のスケールを圧縮する処理です。ざっくり言うと、「数字そのものの差」ではなく「何倍くらい違うか」を見やすくするための変換です。
再生数や
views_per_dayは、一部の動画だけが非常に大きい値を取ります。たとえば、100、1,000、10,000、100,000のように桁で差が出るデータです。このようなデータをそのまま回帰分析に入れると、極端に大きい動画の影響を強く受けやすくなります。そこで対数変換を使うと、「100から1,000」「1,000から10,000」「10,000から100,000」のような、10倍ずつ増える違いを扱いやすくなります。
log1pは、今回Pythonで使った関数です。NumPyなどで使える関数で、意味としては「1を足してから対数を取る」処理です。つまりlog1p(x)はlog(1 + x)とほぼ同じです。0に近い値があっても扱いやすくするために使っています。
説明変数としては、以下を使っています。
- 動画尺
- 動画尺の二乗
- 登録者数
- 投稿頻度
- 公開後日数
- 公開時刻
- 公開曜日
- ジャンル
補足:ここでいうモデルとは
ここでいう「モデル」は、ざっくり言うと、「どの変数を使って
views_per_dayを説明するか」という分析の設計です。たとえば、「登録者数だけで見るモデル」と「そこに投稿頻度やジャンルも入れるモデル」では、同じ登録者数の係数でも意味が変わります。後者では、投稿頻度やジャンルの違いをある程度考慮したうえで、登録者数との関係を見ることになります。
最初から、登録者数はかなり強いだろうと思っていました。そこで今回は、Model 0(A0)を登録者数だけのモデルにしました。
そのうえで、動画尺や投稿頻度、公開タイミング、ジャンルを順番に足していったときに、説明力がどれくらい改善されるかを見る形にしました。分析を進めながら、これは「どの動画特徴が効くか」というより、「登録者数をベースラインにして、公開メタデータを足すとどこまで説明力が上がるか」を見る研究に近いと感じました。
ここでいう投稿頻度は、今回の6か月データ内で、そのチャンネルから取得できた動画本数を使っています。厳密な投稿頻度そのものではありませんが、チャンネルがどれくらい頻繁に動画を出しているかの近似として使いました。
| モデル | 入れたもの |
|---|---|
| A0 | 登録者数だけ |
| A1 | A0 + 動画尺 |
| A2 | A1 + 投稿頻度、公開後日数、公開時刻、曜日 |
| A3 | A2 + ジャンル |
補足:なぜモデルを複数作るのか
モデルを4つに分けたのは、「変数を増やしたときに、説明力がどれくらい改善するか」を見るためです。今回は特に、登録者数だけのModel 0を基準にしました。そこから公開メタデータを足していくことで、登録者数以外の要素がどの程度上乗せで説明してくれるのかを見ています。
回帰分析の結果
結果は、A0からA3まで順番に見ていきます。
今回のモデルごとの説明力は、次の通りです。
| モデル | 何を入れたか | R² |
|---|---|---|
| A0 | 登録者数だけ | 0.421 |
| A1 | A0 + 動画尺 | 0.433 |
| A2 | A1 + 投稿頻度、公開後日数、公開時刻、曜日 | 0.557 |
| A3 | A2 + ジャンル | 0.611 |
まず登録者数だけで見る
最初に、登録者数だけを入れたA0を見ます。
登録者数だけのA0で、R²は0.421でした。やはり、登録者数は再生パフォーマンスを考えるうえで強いベースラインになっていそうです。
係数を見ても、登録者数は強く出ています。
| モデル |
log_subscriber_count の係数 |
p値 |
|---|---|---|
| A0 | 0.7689 | < 0.001 |
| A1 | 0.7749 | < 0.001 |
| A2 | 0.7394 | < 0.001 |
| A3 | 0.8043 | < 0.001 |
これは直感通りです。登録者数が多いチャンネルほど、views/day も高い傾向があります。
こちらも、A3モデルの予測線を重ねて見ました。
両軸とも対数軸です。赤線を見ると、登録者数が大きいほど views/day の予測値も大きくなる関係がはっきり見えます。
ただし、ここでの登録者数は「登録者数が増えると再生数が増える」という単純な因果関係として読むべきではありません。むしろ、チャンネルの人気、ブランド力、既存ファン基盤の代理変数として見た方が自然です。登録者数そのものが原因というより、チャンネルが持っている総合的な強さを表している可能性があります。
そのうえで、分析上はここがとても重要です。登録者数を入れないと、大規模チャンネルの特徴を「動画特徴の効果」として誤読してしまう可能性があります。
動画尺を足すとどうなるか
次に、登録者数だけのA0へ動画尺を足したA1を見ます。A1のR²は0.433でした。A0の0.421から少し上がっていますが、改善幅は大きくありません。
動画尺については、「これが効くはずだ」と強く思っていたわけではありません。YouTube Data APIから取れる基本的な動画属性の1つとして、試しにモデルへ入れています。
結果として、動画尺の係数はプラスに出ています。
| モデル | 尺の係数 | p値 |
|---|---|---|
| A1 | 0.0081 | 0.0004 |
| A2 | 0.0131 | < 0.001 |
| A3 | 0.0070 | 0.0021 |
A3までを見ると、「動画尺が長いほど views/day が高い」と読めそうです。そこで、A3モデルの予測線も重ねて見ました。
青い点は実際の動画、赤い線はA3モデルの予測値です。ここでは、登録者数、公開後日数、公開曜日、ジャンルなどを一定に置いたうえで、動画尺だけを動かしたときの予測値を描いています。
赤線は少し右肩上がりですが、点のばらつきに比べると緩やかです。少なくとも今回のデータでは、動画尺が主役という感じではありません。
単純に「長い動画ほど伸びる」と断定するのは避けた方がよさそうです。むしろ、ジャンルやチャンネル規模のような要素が、尺と再生の両方に関係している可能性があります。
投稿頻度や公開タイミングを足すとどうなるか
次に、A1へ投稿頻度、公開後日数、公開時刻、曜日を足したA2を見ます。A2のR²は0.557でした。ここで説明力は大きく改善しています。
今回のA2では、投稿頻度の近似として、6か月データ内でそのチャンネルから取得できた動画本数を入れています。
| モデル | 投稿頻度の係数 | p値 |
|---|---|---|
| A2 | -0.1133 | 0.443 |
| A3 | -0.1815 | 0.228 |
今回のモデルでは、投稿頻度そのものは明確には出ていません。ただし、A2全体としてはR²が0.557まで上がっています。これは、投稿頻度だけではなく、公開後日数、公開時刻、曜日などをまとめて入れた結果です。
投稿頻度については、今回の「取得動画本数」をそのまま使うだけでは粗い可能性があります。次にやるなら、週あたり投稿本数や、チャンネルごとの実際の投稿間隔など、もう少し丁寧な指標を作った方がよさそうです。
ジャンルまで足すとどうなるか
最後に、A2へジャンルを足したA3を見ます。A3のR²は0.611でした。
つまり、まず登録者数の説明力が大きく、そのうえで公開後日数や投稿タイミング、ジャンルを足すと、説明力がさらに改善するという見え方になりました。
この結果を見ると、動画の伸びを考えるときに「尺が何分か」だけを見るのは危なそうです。チャンネル規模やジャンル差を見落とすと、動画特徴の効果を大きく読みすぎる可能性があります。
モデルA3について、予測値と実測値の関係も見てみました。
赤線は「予測値と実測値が一致する線」です。点が赤線の近くに集まるほど、モデルの予測が実測に近いという見方になります。
全体としては右肩上がりの関係が見えますが、同じ予測値でも実測値にはかなり幅があります。つまり、登録者数やジャンルなどを入れても、動画ごとのばらつきはまだ大きく残っています。
補足:R²(決定係数)とは
R²は「決定係数」と呼ばれる指標で、このモデルがデータのばらつきをどれくらい説明できているかを表します。
ここでいう「説明力」とは、このモデルに投入した変数で、実際のデータの動きをどの程度説明できるか、という意味です。R²は0から1の範囲で見ることが多く、1に近づくほどモデルの説明力が高いと考えます。
ただし、R²が高いからといって、そのまま「よい分析」「因果関係が分かった」と言えるわけではありません。変数を増やすとR²は上がりやすいので、何を入れて上がったのかを見ながら解釈する必要があります。
一方で、「どの程度の数値であれば信用できるのか」や「ここでいう信用とは何を指すのか」は、もう少し踏み込んだ数学的な議論になります。この点は、今後の検討課題にしたいです。
補足:係数とp値はどう読むか
係数は、その変数が増えたときに、目的変数がどちら向きに動きそうかを見るための値です。単回帰であれば直線の傾きとして理解しやすいですが、今回は重回帰なので少し注意が必要です。
重回帰では、係数は「ほかの変数を一定と見なしたときに、その変数が1つ増えると目的変数がどちらに動くか」を表します。たとえば登録者数の係数がプラスなら、ほかの条件が同じなら、登録者数が多いほど
views/dayも高い方向に動く、と読みます。このように、複数の変数を同時に入れたうえで、ある変数との関係を読むことができる点が、重回帰分析の強みだと言われています。
p値は、その係数がたまたま出たものかどうかを見るための目安です。ざっくり言うと、「本当は関係がない」と仮定したときに、今回のような結果がどれくらい起こりうるかを表します。
一般には p < 0.05 を1つの目安にすることが多いですが、これは絶対的な基準ではありません。また、p値が小さくても、係数が小さかったり、実務上の意味が薄かったりすることはあります。そのため、この記事ではp値だけで判断せず、係数やグラフと合わせて見ています。
今回分かったこと
今回の初期分析からは、次のようなことが見えてきました。
1つ目は、登録者数の説明力が非常に大きいことです。Model 0として登録者数だけを入れても、R²は0.421ありました。
2つ目は、動画尺を足しても、登録者数だけのモデルからの改善幅は大きくなかったことです。「長い動画ほど伸びる」と断定するのは避けたいです。
3つ目は、公開後日数、投稿タイミング、ジャンルまで入れると、説明力はさらに上がることです。今回の範囲では、登録者数をベースにして、他の公開メタデータを足していく見方が自然そうです。
限界
今回の分析には、山ほど限界があります。
まず、これは観察データなので、因果効果は言えません。「この特徴があるから伸びた」ではなく、「この特徴と再生パフォーマンスに関連が見えるか」を見ているだけです。
また、再生数は取得時点の累積値です。動画公開後のどの時点でどれだけ再生されたかという時系列データではありません。
登録者数も、動画公開時点ではなく取得時点の値です。厳密には、公開時点のチャンネル規模を表しているわけではありません。この点も、登録者数の結果を読むときの注意点です。
さらに、今回はサムネイルや動画内容そのものを見ていません。YouTubeではサムネイルや企画内容がかなり重要だと思いますが、今回は公開メタデータだけに限定しています。
もう1つ、チャンネル選定にも限界があります。今回は日本のチャンネルをジャンル別に選んでいますが、日本のYouTube全体を代表する標本ではありません。したがって、この結果をYouTube全体へそのまま一般化するのは避けるべきです。
今回の分析では、やはりチャンネル登録者数の影響が強いという結果になりました。一方で、それ以外にも、公開後日数、投稿タイミング、ジャンルなど、いくつか注目すべき要素も見えています。
ただし、これらが小規模なチャンネルにもそのまま適用できる話なのかどうかは、また別の問題です。今回取得したデータは、比較的大きなチャンネルを中心にしたものです。そのため、今回分かったことは、あくまで大規模なチャンネルにおいて、工夫次第でプラスに働く可能性がある要素が見えた段階に過ぎません。
個人が始めたばかりのチャンネルでも「こうすべきである」と言い切れるほど、一般化できるかどうかは現時点では不明です。少なくとも私は、根拠が不十分なまま実践指針を断定することは避けたいです。今回の分析から言えるのは、断定的なノウハウではなく、公開メタデータ上で見えた関連の範囲にとどまります。
ここまで整理してみると、このレベルの分析だけで「研究レベルで効果がある」「重要な手法である」と説明するのは、かなり難しいと感じました。強いノウハウを作るには、外から見えるメタデータだけでは限界があります。たとえばXのように、アルゴリズムそのものを一定程度公開する方向に近づかないと、再現性のある実践知を作るのはなかなか難しいのかもしれません。
次にやりたいこと
今回は探索的な分析ということで許してください。
本業の分析者さんからすれば、拙なすぎて恥ずかしすぎる内容かもしれません。それでも、まずは自分でデータを取り、分布を見て、モデルを作ってみるところまで進めたことに意味があると思っています。
次は、もう少しモデルを整えたいです。
具体的には、取得動画が少ないチャンネルを除外した感度分析、外れ値を除いた分析、ジャンル別の分析などを行う予定です。
また、重回帰分析だけにこだわるつもりもありません。今回の結果を出発点にして、必要な方法があれば順番に試していきたいです。
ロジスティック回帰も次回以降で試したいです。たとえば「同じチャンネル内の中央値を超えたか」のような二値変数を作ると、views/day の大きさそのものではなく、チャンネル内で相対的に当たった動画かどうかを見られそうです。
追記: この続編として、ロジスティック回帰で分析した記事を書きました。
今回の分析はまだ初期段階ですが、公開データを取って、分布を見て、回帰分析で仮説を絞っていく流れは、とても勉強になりました。
強いノウハウとして語るには慎重であるべきですが、データを集めて、自分で確かめながら考えるプロセスは純粋に楽しいです。
またさらにもっとやっていきます。
統計って、実はめっちゃ面白い。
マーケティングサイエンスって、やっぱり深い。








