我建立了kmeans集群,在该集群中我首先对R中的几个变量进行了规范化。该模型为我提供了集群中心,但是它们显然处于规范化状态(例如收入中心为-1.6)。
我想将该-1.6转换回非标准化值,以便使其具有实际意义(例如收入为42,000)。
现在,我可以将z分数分别转换回一个值,但是有没有办法使用R函数对几个标准化变量进行处理呢?
我可以从pnorm()开始以获取百分比-但在归一化之前,我需要寻找更多可以应用于原始数据帧的内容。
我fitdistr在R中用来选择最适合我数据的分布.
我尝试过Cauchy,Weibull,normal和Gamma分布.
对数似然值为:Cauchy为-329.8492,Gamma为-277.4931,正常为-327.7622,Weibull为-279.0352.
哪一个是最好的?具有最大值的那个(即Gamma)或具有最大abs的那个(即Cauchy)?
我不知道如何描述这个问题所以我这样称呼它.如果您有任何更好的想法,请修复它.我提前道歉.
当我使用MATLAB的普通随机生成器编写代码时,我的问题出现了.
clear all;
clc;
close all;
rng(0,'twister');
sigma=50;
mean(normrnd(10,sigma,20,1))
n=20;
mean(normrnd(10,sigma,n,1))
Run Code Online (Sandbox Code Playgroud)
当我通过将生成器设置为Mersenne Twister并将种子设置为0来控制它时生成20个正态分布的数字,我可以使用上面提供的代码.我可以在normrnd函数中编写样本大小,或者我可以在函数中定义它,但是当你运行它并找到两种方式生成数字的方法时,你也会发布它们差异很大.这样的第一个均值是43.2294,第二个均值是7.1280.有没有人对这种情况有任何想法?
使用此功能,我可以从正态分布中进行采样.我想知道如何从限制到特定间隔的正态分布中有效地采样[a,b].我的琐碎方法是从正态分布中采样,然后保留值,如果它属于某个间隔,否则重新采样.但是在我得到合适的值之前可能会丢弃许多值.
我也可以使用三角形分布近似正态分布,但我认为这不够准确.
我也可以尝试处理累积函数,但可能这也会很慢.有没有有效的方法来解决这个问题?
谢谢
我试图使用最小化函数形式 scipy 从正态分布中找到 mu 和 sigma 的最大似然估计。然而,最小化返回平均值的预期值,但西格玛的估计值与真实西格玛相差甚远。
我定义函数 llnorm 返回正态分布的负对数似然,然后从均值 150 和标准差 10 的正态分布创建随机样本,然后使用优化我试图找到 MLE。
import numpy as np
import math
import scipy.optimize as optimize
def llnorm(par, data):
n = len(data)
mu, sigma = par
ll = -np.sum(-n/2 * math.log(2*math.pi*(sigma**2)) - ((data-mu)**2)/(2 * (sigma**2)))
return ll
data = 10 * np.random.randn(100) + 150
result = optimize.minimize(llnorm, [150,10], args = (data))
Run Code Online (Sandbox Code Playgroud)
即使数据均值接近 150 并且标准差接近 10,优化返回的估计 sigma 值要小得多(接近 0)。
我想生成一个范围为 [1, 3] 的正态分布随机变量。
具体来说,我尝试了以下 R 代码:
x1 <- runif(100, 1, 2)
x2 <- rnorm(100, 0, 0.3)
V <- 1 + x1 + x2
Run Code Online (Sandbox Code Playgroud)
然后,V服从正态分布(以 为条件x1)并且大致集中在 [1, 3] 上。
但是,我想让V范围为 [1, 3]。也就是说,所有元素都应该在 [1, 3] 中,而不是粗略地在 [1, 3] 中:
min(V)
[1] 1
max(V)
[1] 3
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办。有完成这项任务的技术吗?
我想在区间[-50,50]中生成100个正态分布的随机数.但是在下面的代码中,生成的随机数范围是[-50,50].
n <- rnorm(100, -50,50)
plot(n)
Run Code Online (Sandbox Code Playgroud) 我希望像素网格中填充正态分布的值,如下图所示

有谁知道如何在R中这样做?
r ×6
random ×2
statistics ×2
c++ ×1
distribution ×1
matlab ×1
matrix ×1
numpy ×1
python ×1
weibull ×1