0. 最近新學了 R 語言

1. R

quit
N= 1000
Z= rnorm(n= N)


k= 10

aL= c()
for (i in 1:k){
  aL= rbind(aL, rnorm(n= N)^2)}

X2= colSums(aL)

T= Z/(X2/k)^.5

B= 30

boxplot(Z, horizontal = TRUE); grid()

hist(Z, breaks = B); grid()


boxplot(X2, horizontal = TRUE); grid()

hist(X2, breaks = B); grid()


boxplot(T, horizontal = TRUE); grid()

hist(T, breaks = B); grid()

NA
NA

2. Python

reticulate::repl_python()

import numpy as np
import matplotlib.pyplot as pl
import pandas  as pd
import seaborn as sb
import scipy.stats as st


N= 1000
Z=   st.norm.rvs(size= N)

k= 10
X2=  sum([st.norm.rvs(size= N)**2 
          for i in range(k)]
          )
T=   Z/(X2)**.5

#%%
pl.cla()
ax= sb.boxplot(data=Z, orient='h')
ax.grid(True)
pl.show()


pl.cla()
ax= sb.histplot(Z, kde=True)
ax.grid(True)
pl.show()


pl.cla()
ax= sb.boxplot(data=X2, orient='h')
ax.grid(True)
pl.show()


pl.cla()
ax= sb.histplot(X2, kde=True)
ax.grid(True)
pl.show()


pl.cla()
ax= sb.boxplot(data=T, orient='h')
ax.grid(True)
pl.show()



pl.cla()
ax= sb.histplot(T, kde=True)
ax.grid(True)
pl.show()

LS0tDQp0aXRsZTogIlIgdnMgUHl0aG9uIg0KYXV0aG9yOiAiUmVueXVhbiBMeXUiDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQNCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KIyAwLiDmnIDov5HmlrDlrbjkuoYgUiDoqp7oqIANCi0g5oqK5aW55ou/5L6G6IiHIOiIiuWtuCBQeXRob24g5Lim5o6S5q+U6LyD5a2457+S44CCDQotIOaLv+WlueWAkeS+hueVq+W5vuWAi+apn+eOh+iIh+e1seioiOeahOWIhuW4g+OAgg0KLSDnmbznj77lpbnlgJHlkITmk4Xli53loLTjgIINCg0KDQojIDEuIFINCg0KLSBOb3JtYWwsICRcY2hpXjIkLCBUDQoNCmBgYHtyfQ0KTj0gMTAwMA0KWj0gcm5vcm0obj0gTikNCg0KDQprPSAxMA0KDQphTD0gYygpDQpmb3IgKGkgaW4gMTprKXsNCiAgYUw9IHJiaW5kKGFMLCBybm9ybShuPSBOKV4yKX0NCg0KWDI9IGNvbFN1bXMoYUwpDQoNClQ9IFovKFgyL2spXi41DQoNCkI9IDMwDQoNCmJveHBsb3QoWiwgaG9yaXpvbnRhbCA9IFRSVUUpOyBncmlkKCkNCmhpc3QoWiwgYnJlYWtzID0gQik7IGdyaWQoKQ0KDQpib3hwbG90KFgyLCBob3Jpem9udGFsID0gVFJVRSk7IGdyaWQoKQ0KaGlzdChYMiwgYnJlYWtzID0gQik7IGdyaWQoKQ0KDQpib3hwbG90KFQsIGhvcml6b250YWwgPSBUUlVFKTsgZ3JpZCgpDQpoaXN0KFQsIGJyZWFrcyA9IEIpOyBncmlkKCkNCg0KDQpgYGANCg0KDQojIDIuIFB5dGhvbg0KDQotIE5vcm1hbCwgJFxjaGleMiQsIFQNCg0KYGBge3B5dGhvbn0NCg0KaW1wb3J0IG51bXB5IGFzIG5wDQppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGwNCmltcG9ydCBwYW5kYXMgIGFzIHBkDQppbXBvcnQgc2VhYm9ybiBhcyBzYg0KaW1wb3J0IHNjaXB5LnN0YXRzIGFzIHN0DQoNCg0KTj0gMTAwMA0KWj0gICBzdC5ub3JtLnJ2cyhzaXplPSBOKQ0KDQprPSAxMA0KWDI9ICBzdW0oW3N0Lm5vcm0ucnZzKHNpemU9IE4pKioyIA0KICAgICAgICAgIGZvciBpIGluIHJhbmdlKGspXQ0KICAgICAgICAgICkNClQ9ICAgWi8oWDIpKiouNQ0KDQojJSUNCnBsLmNsYSgpDQpheD0gc2IuYm94cGxvdChkYXRhPVosIG9yaWVudD0naCcpDQpheC5ncmlkKFRydWUpDQpwbC5zaG93KCkNCg0KcGwuY2xhKCkNCmF4PSBzYi5oaXN0cGxvdChaLCBrZGU9VHJ1ZSkNCmF4LmdyaWQoVHJ1ZSkNCnBsLnNob3coKQ0KDQpwbC5jbGEoKQ0KYXg9IHNiLmJveHBsb3QoZGF0YT1YMiwgb3JpZW50PSdoJykNCmF4LmdyaWQoVHJ1ZSkNCnBsLnNob3coKQ0KDQpwbC5jbGEoKQ0KYXg9IHNiLmhpc3RwbG90KFgyLCBrZGU9VHJ1ZSkNCmF4LmdyaWQoVHJ1ZSkNCnBsLnNob3coKQ0KDQpwbC5jbGEoKQ0KYXg9IHNiLmJveHBsb3QoZGF0YT1ULCBvcmllbnQ9J2gnKQ0KYXguZ3JpZChUcnVlKQ0KcGwuc2hvdygpDQoNCg0KcGwuY2xhKCkNCmF4PSBzYi5oaXN0cGxvdChULCBrZGU9VHJ1ZSkNCmF4LmdyaWQoVHJ1ZSkNCnBsLnNob3coKQ0KDQpgYGANCg0K